diff --git a/__test__/git-auth-helper.test.ts b/__test__/git-auth-helper.test.ts index 64d49cc83..adadd8b2c 100644 --- a/__test__/git-auth-helper.test.ts +++ b/__test__/git-auth-helper.test.ts @@ -5,8 +5,8 @@ import * as io from '@actions/io' import * as os from 'os' import * as path from 'path' import * as stateHelper from '../lib/state-helper' -import {IGitCommandManager} from '../lib/git-command-manager' -import {IGitSourceSettings} from '../lib/git-source-settings' +import { IGitCommandManager } from '../lib/git-command-manager' +import { IGitSourceSettings } from '../lib/git-source-settings' const isWindows = process.platform === 'win32' const testWorkspace = path.join(__dirname, '_temp', 'git-auth-helper') @@ -17,9 +17,10 @@ let localGitConfigPath: string let globalGitConfigPath: string let runnerTemp: string let tempHomedir: string -let git: IGitCommandManager & {env: {[key: string]: string}} +let git: IGitCommandManager & { env: { [key: string]: string } } let settings: IGitSourceSettings let sshPath: string +let githubServerUrl: string describe('git-auth-helper tests', () => { beforeAll(async () => { @@ -32,7 +33,7 @@ describe('git-auth-helper tests', () => { beforeEach(() => { // Mock setSecret - jest.spyOn(core, 'setSecret').mockImplementation((secret: string) => {}) + jest.spyOn(core, 'setSecret').mockImplementation((secret: string) => { }) // Mock error/warning/info/debug jest.spyOn(core, 'error').mockImplementation(jest.fn()) @@ -67,11 +68,15 @@ describe('git-auth-helper tests', () => { } }) - const configureAuth_configuresAuthHeader = - 'configureAuth configures auth header' - it(configureAuth_configuresAuthHeader, async () => { + async function testAuthHeader(testName: string, serverUrl: string | undefined = undefined) { // Arrange - await setup(configureAuth_configuresAuthHeader) + let expectedServerUrl = 'https://github.com' + if (serverUrl) { + githubServerUrl = serverUrl + expectedServerUrl = githubServerUrl + } + + await setup(testName) expect(settings.authToken).toBeTruthy() // sanity check const authHelper = gitAuthHelper.createAuthHelper(git, settings) @@ -88,9 +93,25 @@ describe('git-auth-helper tests', () => { ).toString('base64') expect( configContent.indexOf( - `http.https://github.com/.extraheader AUTHORIZATION: basic ${basicCredential}` + `http.${expectedServerUrl}/.extraheader AUTHORIZATION: basic ${basicCredential}` ) ).toBeGreaterThanOrEqual(0) + } + + const configureAuth_configuresAuthHeader = + 'configureAuth configures auth header' + it(configureAuth_configuresAuthHeader, async () => { + await testAuthHeader(configureAuth_configuresAuthHeader); + }) + + const configureAuth_AcceptsGitHubServerUrl = 'inject https://my-ghes-server.com as github server url' + it(configureAuth_AcceptsGitHubServerUrl, async () => { + await testAuthHeader(configureAuth_AcceptsGitHubServerUrl, 'https://my-ghes-server.com'); + }) + + const configureAuth_AcceptsGitHubServerUrlSetToGHEC = 'inject https://github.com as github server url' + it(configureAuth_AcceptsGitHubServerUrlSetToGHEC, async () => { + await testAuthHeader(configureAuth_AcceptsGitHubServerUrl, 'https://github.com'); }) const configureAuth_configuresAuthHeaderEvenWhenPersistCredentialsFalse = @@ -678,9 +699,9 @@ async function setup(testName: string): Promise { workspace = path.join(testWorkspace, testName, 'workspace') runnerTemp = path.join(testWorkspace, testName, 'runner-temp') tempHomedir = path.join(testWorkspace, testName, 'home-dir') - await fs.promises.mkdir(workspace, {recursive: true}) - await fs.promises.mkdir(runnerTemp, {recursive: true}) - await fs.promises.mkdir(tempHomedir, {recursive: true}) + await fs.promises.mkdir(workspace, { recursive: true }) + await fs.promises.mkdir(runnerTemp, { recursive: true }) + await fs.promises.mkdir(tempHomedir, { recursive: true }) process.env['RUNNER_TEMP'] = runnerTemp process.env['HOME'] = tempHomedir @@ -688,7 +709,7 @@ async function setup(testName: string): Promise { globalGitConfigPath = path.join(tempHomedir, '.gitconfig') await fs.promises.writeFile(globalGitConfigPath, '') localGitConfigPath = path.join(workspace, '.git', 'config') - await fs.promises.mkdir(path.dirname(localGitConfigPath), {recursive: true}) + await fs.promises.mkdir(path.dirname(localGitConfigPath), { recursive: true }) await fs.promises.writeFile(localGitConfigPath, '') git = { @@ -779,7 +800,7 @@ async function setup(testName: string): Promise { sshStrict: true, workflowOrganizationId: 123456, setSafeDirectory: true, - githubServerUrl: undefined + githubServerUrl: githubServerUrl } }