This commit is contained in:
axi92 2026-05-19 17:09:26 +02:00 committed by GitHub
commit 0680b05f8b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 94 additions and 2 deletions

View file

@ -974,6 +974,91 @@ describe('git-auth-helper tests', () => {
).toBe(false)
expect((authHelper as any).testCredentialsConfigPath('')).toBe(false)
})
const configureAuth_uses_default_git_user_when_sshUser_empty =
'configureAuth uses default git user when sshUser is empty'
it(configureAuth_uses_default_git_user_when_sshUser_empty, async () => {
// Arrange
await setup(configureAuth_uses_default_git_user_when_sshUser_empty)
settings.sshUser = ''
settings.sshKey = ''
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
// Act
await authHelper.configureAuth()
await authHelper.configureGlobalAuth()
// Assert - verify that git@github.com is in the insteadOf config
const home = git.env['HOME'] || tempHomedir
const configContent = (
await fs.promises.readFile(path.join(home, '.gitconfig'))
).toString()
expect(configContent.indexOf('url.https://github.com/.insteadOf git@github.com')).toBeGreaterThanOrEqual(0)
})
const configureAuth_uses_custom_ssh_user_when_sshUser_provided =
'configureAuth uses custom SSH user when sshUser is provided'
it(configureAuth_uses_custom_ssh_user_when_sshUser_provided, async () => {
// Arrange
await setup(configureAuth_uses_custom_ssh_user_when_sshUser_provided)
settings.sshUser = 'customuser'
settings.sshKey = ''
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
// Act
await authHelper.configureAuth()
await authHelper.configureGlobalAuth()
// Assert - verify that customuser@github.com is in the insteadOf config
const home = git.env['HOME'] || tempHomedir
const configContent = (
await fs.promises.readFile(path.join(home, '.gitconfig'))
).toString()
expect(configContent.indexOf('url.https://github.com/.insteadOf customuser@github.com')).toBeGreaterThanOrEqual(0)
})
const configureGlobalAuth_with_custom_sshUser =
'configureGlobalAuth with custom sshUser'
it(configureGlobalAuth_with_custom_sshUser, async () => {
// Arrange
await setup(configureGlobalAuth_with_custom_sshUser)
settings.sshUser = 'admin'
settings.sshKey = ''
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
// Act
await authHelper.configureAuth()
await authHelper.configureGlobalAuth()
// Assert - verify the .insteadOf config contains the custom user
const home = git.env['HOME'] || tempHomedir
const configContent = (
await fs.promises.readFile(path.join(home, '.gitconfig'))
).toString()
expect(configContent.indexOf('url.https://github.com/.insteadOf admin@github.com')).toBeGreaterThanOrEqual(0)
})
const configureSubmoduleAuth_with_custom_sshUser =
'configureSubmoduleAuth with custom sshUser'
it(configureSubmoduleAuth_with_custom_sshUser, async () => {
// Arrange
await setup(configureSubmoduleAuth_with_custom_sshUser)
settings.sshUser = 'deploy'
settings.sshKey = ''
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
await authHelper.configureAuth()
const mockSubmoduleForeach = git.submoduleForeach as jest.Mock<any, any>
mockSubmoduleForeach.mockClear()
// Act
await authHelper.configureSubmoduleAuth()
// Assert - verify the insteadOf config uses the custom user
expect(mockSubmoduleForeach).toHaveBeenCalledTimes(3)
expect(mockSubmoduleForeach.mock.calls[1][0]).toMatch(
/url.*insteadOf.*deploy@github.com:/
)
})
})
async function setup(testName: string): Promise<void> {

5
dist/index.js vendored
View file

@ -174,7 +174,10 @@ class GitAuthHelper {
this.tokenConfigValue = `AUTHORIZATION: basic ${basicCredential}`;
// Instead of SSH URL
this.insteadOfKey = `url.${serverUrl.origin}/.insteadOf`; // "origin" is SCHEME://HOSTNAME[:PORT]
this.insteadOfValues.push(`git@${serverUrl.hostname}:`);
const sshUser = this.settings.sshUser && this.settings.sshUser.length > 0
? this.settings.sshUser
: 'git';
this.insteadOfValues.push(`${sshUser}@${serverUrl.hostname}:`);
if (this.settings.workflowOrganizationId) {
this.insteadOfValues.push(`org-${this.settings.workflowOrganizationId}@github.com:`);
}

View file

@ -65,7 +65,11 @@ class GitAuthHelper {
// Instead of SSH URL
this.insteadOfKey = `url.${serverUrl.origin}/.insteadOf` // "origin" is SCHEME://HOSTNAME[:PORT]
this.insteadOfValues.push(`git@${serverUrl.hostname}:`)
const sshUser =
this.settings.sshUser && this.settings.sshUser.length > 0
? this.settings.sshUser
: 'git'
this.insteadOfValues.push(`${sshUser}@${serverUrl.hostname}:`)
if (this.settings.workflowOrganizationId) {
this.insteadOfValues.push(
`org-${this.settings.workflowOrganizationId}@github.com:`