Skip to content

Commit 621ce1e

Browse files
Skip checking if registry exists in the output of credential provider 'list' command output
1 parent 0e85014 commit 621ce1e

File tree

1 file changed

+3
-39
lines changed

1 file changed

+3
-39
lines changed

packages/testcontainers/src/container-runtime/auth/credential-provider.ts

Lines changed: 3 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
import { exec, spawn } from "child_process";
1+
import { spawn } from "child_process";
22
import { log } from "../../common";
33
import { RegistryAuthLocator } from "./registry-auth-locator";
4-
import { registryMatches } from "./registry-matches";
5-
import {
6-
AuthConfig,
7-
ContainerRuntimeConfig,
8-
CredentialProviderGetResponse,
9-
CredentialProviderListResponse,
10-
} from "./types";
4+
import { AuthConfig, ContainerRuntimeConfig, CredentialProviderGetResponse } from "./types";
115

126
export abstract class CredentialProvider implements RegistryAuthLocator {
137
abstract getName(): string;
@@ -23,45 +17,15 @@ export abstract class CredentialProvider implements RegistryAuthLocator {
2317
const programName = `docker-credential-${credentialProviderName}`;
2418
log.debug(`Executing Docker credential provider "${programName}"`);
2519

26-
const credentials = await this.listCredentials(programName);
27-
28-
const credentialForRegistry = Object.keys(credentials).find((aRegistry) => registryMatches(aRegistry, registry));
29-
if (!credentialForRegistry) {
30-
log.debug(`No credential found for registry "${registry}"`);
31-
return undefined;
32-
}
33-
3420
const response = await this.runCredentialProvider(registry, programName);
3521

3622
return {
3723
username: response.Username,
3824
password: response.Secret,
39-
registryAddress: response.ServerURL ?? credentialForRegistry,
25+
registryAddress: response.ServerURL ?? registry,
4026
};
4127
}
4228

43-
private listCredentials(providerName: string): Promise<CredentialProviderListResponse> {
44-
return new Promise((resolve, reject) => {
45-
exec(`${providerName} list`, (err, stdout, stderr) => {
46-
if (err) {
47-
if (stderr === "list is unimplemented\n") {
48-
return resolve({});
49-
}
50-
51-
log.error(`An error occurred listing credentials: ${err}`);
52-
return reject(new Error("An error occurred listing credentials"));
53-
}
54-
try {
55-
const response = JSON.parse(stdout);
56-
return resolve(response);
57-
} catch (e) {
58-
log.error(`Unexpected response from Docker credential provider LIST command: "${stdout}"`);
59-
return reject(new Error("Unexpected response from Docker credential provider LIST command"));
60-
}
61-
});
62-
});
63-
}
64-
6529
private runCredentialProvider(registry: string, providerName: string): Promise<CredentialProviderGetResponse> {
6630
return new Promise((resolve, reject) => {
6731
const sink = spawn(providerName, ["get"]);

0 commit comments

Comments
 (0)