Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 122 additions & 0 deletions __tests__/main.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -954,6 +954,72 @@ describe('getPackagesCredential', () => {
})
})

describe('when the package manager is docker_compose', () => {
describe('when automatic package auth is enabled', () => {
it('creates a GitHub packages credential', () => {
const details = createJobDetails('docker_compose', {
[experimentName]: true
})
const cred = getPackagesCredential(details, 'test-actor')
expect(cred).toEqual({
type: 'docker_registry',
registry: 'ghcr.io',
username: 'test-actor',
password: 'test-token'
})
})

it('does not create a duplicate credential', () => {
const existingCred: Credential = {
type: 'docker_registry',
registry: 'ghcr.io',
username: 'some-other-actor',
password: 'some-other-token'
}
const details = createJobDetails(
'docker_compose',
{[experimentName]: true},
[existingCred]
)
const cred = getPackagesCredential(details, 'test-actor')
expect(cred).toBeNull()
})
})
})

describe('when the package manager is devcontainers', () => {
describe('when automatic package auth is enabled', () => {
it('creates a GitHub packages credential', () => {
const details = createJobDetails('devcontainers', {
[experimentName]: true
})
const cred = getPackagesCredential(details, 'test-actor')
expect(cred).toEqual({
type: 'docker_registry',
registry: 'ghcr.io',
username: 'test-actor',
password: 'test-token'
})
})

it('does not create a duplicate credential', () => {
const existingCred: Credential = {
type: 'docker_registry',
registry: 'ghcr.io',
username: 'some-other-actor',
password: 'some-other-token'
}
const details = createJobDetails(
'devcontainers',
{[experimentName]: true},
[existingCred]
)
const cred = getPackagesCredential(details, 'test-actor')
expect(cred).toBeNull()
})
})
})

describe('when the package manager is maven', () => {
describe('when automatic package auth is enabled', () => {
it('creates a GitHub packages credential', () => {
Expand Down Expand Up @@ -997,6 +1063,35 @@ describe('getPackagesCredential', () => {
})
})

describe('when the package manager is gradle', () => {
describe('when automatic package auth is enabled', () => {
it('creates a GitHub packages credential', () => {
const details = createJobDetails('gradle', {[experimentName]: true})
const cred = getPackagesCredential(details, 'test-actor')
expect(cred).toEqual({
type: 'maven_repository',
url: 'https://maven.pkg.github.com/test-org',
username: 'test-actor',
password: 'test-token'
})
})

it('does not create a duplicate credential', () => {
const existingCred: Credential = {
type: 'maven_repository',
url: 'https://maven.pkg.github.com/TEST-ORG',
username: 'some-other-actor',
password: 'some-other-token'
}
const details = createJobDetails('gradle', {[experimentName]: true}, [
existingCred
])
const cred = getPackagesCredential(details, 'test-actor')
expect(cred).toBeNull()
})
})
})

describe('when the package manager is npm_and_yarn', () => {
describe('when automatic package auth is enabled', () => {
it('creates a GitHub packages credential', () => {
Expand Down Expand Up @@ -1028,6 +1123,33 @@ describe('getPackagesCredential', () => {
})
})

describe('when the package manager is bun', () => {
describe('when automatic package auth is enabled', () => {
it('creates a GitHub packages credential', () => {
const details = createJobDetails('bun', {[experimentName]: true})
const cred = getPackagesCredential(details, 'test-actor')
expect(cred).toEqual({
type: 'npm_registry',
registry: 'npm.pkg.github.com',
token: 'test-actor:test-token'
})
})

it('does not create a duplicate credential', () => {
const existingCred: Credential = {
type: 'npm_registry',
registry: 'npm.pkg.github.com',
token: 'some-other-actor:some-other-token'
}
const details = createJobDetails('bun', {[experimentName]: true}, [
existingCred
])
const cred = getPackagesCredential(details, 'test-actor')
expect(cred).toBeNull()
})
})
})

describe('when the package manager is nuget', () => {
describe('when automatic package auth is not set', () => {
it('returns null', () => {
Expand Down
8 changes: 6 additions & 2 deletions dist/main/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/main/index.js.map

Large diffs are not rendered by default.

10 changes: 7 additions & 3 deletions src/main.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import * as core from '@actions/core'
import * as github from '@actions/github'
import * as httpClient from '@actions/http-client'
import {Context} from '@actions/github/lib/context'
import * as httpClient from '@actions/http-client'
import {
ApiClient,
Credential,
CredentialFetchingError,
JobDetails
} from './api-client'
import {getJobParameters} from './inputs'
import {PROXY_IMAGE_NAME, updaterImageName} from './docker-tags'
import {ImageService, MetricReporter} from './image-service'
import {updaterImageName, PROXY_IMAGE_NAME} from './docker-tags'
import {getJobParameters} from './inputs'
import {Updater} from './updater'

export enum DependabotErrorType {
Expand Down Expand Up @@ -243,11 +243,15 @@ export function getPackagesCredential(
credential = getRubyGemsPackagesCredential(jobDetails, actor, githubToken)
break
case 'docker':
case 'docker_compose':
case 'devcontainers':
credential = getDockerPackagesCredential(jobDetails, actor, githubToken)
break
case 'maven':
case 'gradle':
credential = getMavenPackagesCredential(jobDetails, actor, githubToken)
break
case 'bun':
case 'npm_and_yarn':
credential = getNpmPackagesCredential(jobDetails, actor, githubToken)
break
Expand Down
Loading