mirror of
				https://github.com/actions/checkout.git
				synced 2025-11-04 13:29:15 +08:00 
			
		
		
		
	Inject GitHub host to be able to clone from another GitHub instance (#922)
* Adding the ability to specify the GitHub Server URL and allowing for it to differ from the Actions workflow host * Adding tests for injecting the GitHub URL * Addressing code review comments for PR #922
This commit is contained in:
		@@ -20,6 +20,7 @@ let tempHomedir: string
 | 
			
		||||
let git: IGitCommandManager & {env: {[key: string]: string}}
 | 
			
		||||
let settings: IGitSourceSettings
 | 
			
		||||
let sshPath: string
 | 
			
		||||
let githubServerUrl: string
 | 
			
		||||
 | 
			
		||||
describe('git-auth-helper tests', () => {
 | 
			
		||||
  beforeAll(async () => {
 | 
			
		||||
@@ -67,11 +68,18 @@ 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 +96,33 @@ 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 =
 | 
			
		||||
@@ -778,7 +810,8 @@ async function setup(testName: string): Promise<void> {
 | 
			
		||||
    sshKnownHosts: '',
 | 
			
		||||
    sshStrict: true,
 | 
			
		||||
    workflowOrganizationId: 123456,
 | 
			
		||||
    setSafeDirectory: true
 | 
			
		||||
    setSafeDirectory: true,
 | 
			
		||||
    githubServerUrl: githubServerUrl
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user