diff --git a/packages/testcontainers/src/container-runtime/auth/credential-provider.test.ts b/packages/testcontainers/src/container-runtime/auth/credential-provider.test.ts index ce8625ac..cde52d23 100644 --- a/packages/testcontainers/src/container-runtime/auth/credential-provider.test.ts +++ b/packages/testcontainers/src/container-runtime/auth/credential-provider.test.ts @@ -56,6 +56,23 @@ describe("CredentialProvider", () => { ).toBeUndefined(); }); + it("should default to the registry url when the server url is not returned", async () => { + mockExecReturns(JSON.stringify({ "https://registry.example.com": "username" })); + mockSpawnReturns( + 0, + JSON.stringify({ + Username: "username", + Secret: "secret", + }) + ); + + expect(await credentialProvider.getAuthConfig("https://registry.example.com", containerRuntimeConfig)).toEqual({ + registryAddress: "https://registry.example.com", + username: "username", + password: "secret", + }); + }); + it("should return undefined when no auth config found for registry", async () => { mockExecReturns(JSON.stringify({ registry2: "username" })); diff --git a/packages/testcontainers/src/container-runtime/auth/credential-provider.ts b/packages/testcontainers/src/container-runtime/auth/credential-provider.ts index f74a93f8..cf08e169 100644 --- a/packages/testcontainers/src/container-runtime/auth/credential-provider.ts +++ b/packages/testcontainers/src/container-runtime/auth/credential-provider.ts @@ -36,7 +36,7 @@ export abstract class CredentialProvider implements RegistryAuthLocator { return { username: response.Username, password: response.Secret, - registryAddress: credentialForRegistry, + registryAddress: response.ServerURL || credentialForRegistry, }; }