mirror of
https://github.com/composer/composer
synced 2025-05-10 00:53:06 +00:00
Fix authentication issues with private bitbucket repos (#11464)
This commit is contained in:
parent
9885d23e2a
commit
9d965b9c65
2 changed files with 73 additions and 0 deletions
|
@ -538,6 +538,71 @@ class AuthHelperTest extends TestCase
|
|||
$this->authHelper->promptAuthIfNeeded('https://gitlab.com/acme/archive.zip', $origin, 404, 'GitLab requires authentication and it was not provided');
|
||||
}
|
||||
|
||||
public function testPromptAuthIfNeededMultipleBitbucketDownloads(): void
|
||||
{
|
||||
$origin = 'bitbucket.org';
|
||||
|
||||
$expectedResult = [
|
||||
'retry' => true,
|
||||
'storeAuth' => false,
|
||||
];
|
||||
|
||||
$authConfig = [
|
||||
'bitbucket.org' => [
|
||||
'access-token' => 'bitbucket_access_token',
|
||||
'access-token-expiration' => time() + 1800,
|
||||
]
|
||||
];
|
||||
|
||||
$this->config
|
||||
->method('get')
|
||||
->willReturnMap([
|
||||
['github-domains', 0, []],
|
||||
['gitlab-domains', 0, []],
|
||||
['bitbucket-oauth', 0, $authConfig],
|
||||
['github-domains', 0, []],
|
||||
['gitlab-domains', 0, []],
|
||||
]);
|
||||
|
||||
$this->io
|
||||
->expects($this->exactly(2))
|
||||
->method('hasAuthentication')
|
||||
->with($origin)
|
||||
->willReturn(true);
|
||||
|
||||
$getAuthenticationReturnValues = [
|
||||
['username' => 'bitbucket_client_id', 'password' => 'bitbucket_client_secret'],
|
||||
['username' => 'x-token-auth', 'password' => 'bitbucket_access_token'],
|
||||
];
|
||||
|
||||
$this->io
|
||||
->expects($this->exactly(2))
|
||||
->method('getAuthentication')
|
||||
->willReturnCallback(
|
||||
function ($repositoryName) use (&$getAuthenticationReturnValues) {
|
||||
return array_shift($getAuthenticationReturnValues);
|
||||
}
|
||||
);
|
||||
|
||||
$this->io
|
||||
->expects($this->once())
|
||||
->method('setAuthentication')
|
||||
->with($origin, 'x-token-auth', 'bitbucket_access_token');
|
||||
|
||||
$result1 = $this->authHelper->promptAuthIfNeeded('https://bitbucket.org/workspace/repo1/get/hash1.zip', $origin, 401, 'HTTP/2 401 ');
|
||||
$result2 = $this->authHelper->promptAuthIfNeeded('https://bitbucket.org/workspace/repo2/get/hash2.zip', $origin, 401, 'HTTP/2 401 ');
|
||||
|
||||
$this->assertSame(
|
||||
$expectedResult,
|
||||
$result1
|
||||
);
|
||||
|
||||
$this->assertSame(
|
||||
$expectedResult,
|
||||
$result2
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, string|null> $auth
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue