diff --git a/packages/testcontainers/src/container-runtime/auth/auths.test.ts b/packages/testcontainers/src/container-runtime/auth/auths.test.ts index 71d531f45..84d71900b 100644 --- a/packages/testcontainers/src/container-runtime/auth/auths.test.ts +++ b/packages/testcontainers/src/container-runtime/auth/auths.test.ts @@ -82,5 +82,37 @@ describe("Auths", () => { }; expect(await locator.getAuthConfig("https://registry.example.com", containerRuntimeConfig)).toEqual(authConfig); }); + + it("should return credentials from identity token", async () => { + const containerRuntimeConfig: ContainerRuntimeConfig = { + auths: { + "https://registry.example.com": { + identitytoken: "token-value", + }, + }, + }; + const authConfig: AuthConfig = { + identityToken: "token-value", + registryAddress: "https://registry.example.com", + }; + expect(await locator.getAuthConfig("https://registry.example.com", containerRuntimeConfig)).toEqual(authConfig); + }); + + it("should use identity token when token and user and pass are provided", async () => { + const containerRuntimeConfig: ContainerRuntimeConfig = { + auths: { + "https://registry.example.com": { + identitytoken: "token-value", + username: "user", + password: "pass", + }, + }, + }; + const authConfig: AuthConfig = { + identityToken: "token-value", + registryAddress: "https://registry.example.com", + }; + expect(await locator.getAuthConfig("https://registry.example.com", containerRuntimeConfig)).toEqual(authConfig); + }); }); }); diff --git a/packages/testcontainers/src/container-runtime/auth/auths.ts b/packages/testcontainers/src/container-runtime/auth/auths.ts index 52831c3f1..176619e05 100644 --- a/packages/testcontainers/src/container-runtime/auth/auths.ts +++ b/packages/testcontainers/src/container-runtime/auth/auths.ts @@ -13,6 +13,13 @@ export class Auths implements RegistryAuthLocator { return undefined; } + if (auth.identitytoken) { + return { + registryAddress: registry, + identityToken: auth.identitytoken, + }; + } + const authConfig: Partial = { registryAddress: registry }; if (auth.email) { diff --git a/packages/testcontainers/src/container-runtime/auth/types.ts b/packages/testcontainers/src/container-runtime/auth/types.ts index 625fdf7ab..f2fab31cb 100644 --- a/packages/testcontainers/src/container-runtime/auth/types.ts +++ b/packages/testcontainers/src/container-runtime/auth/types.ts @@ -9,6 +9,7 @@ export type Auth = { email?: string; username?: string; password?: string; + identitytoken?: string; }; export type AuthConfig = UsernamePasswordAuthConfig | IdentityTokenAuthConfig;