Skip to content

Commit 4cee7b2

Browse files
authored
fix: standardize getSecret sample (#4114)
* fix: standardize getSecret sample * fix: address linting issues * fix: update error logging * fix: update test to reflect standardization
1 parent 0f88fb6 commit 4cee7b2

File tree

2 files changed

+40
-21
lines changed

2 files changed

+40
-21
lines changed

secret-manager/getSecret.js

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,51 @@
1414

1515
'use strict';
1616

17-
async function main(name = 'projects/my-project/secrets/my-secret') {
18-
// [START secretmanager_get_secret]
19-
/**
20-
* TODO(developer): Uncomment these variables before running the sample.
21-
*/
22-
// const name = 'projects/my-project/secrets/my-secret';
17+
const {SecretManagerServiceClient} = require('@google-cloud/secret-manager');
2318

24-
// Imports the Secret Manager library
25-
const {SecretManagerServiceClient} = require('@google-cloud/secret-manager');
26-
27-
// Instantiates a client
19+
// [START secretmanager_get_secret]
20+
/**
21+
* Get metadata about a secret.
22+
*
23+
* @param {string} projectId The ID of the Google Cloud project.
24+
* @param {string} secretId The ID of the secret to retrieve.
25+
*/
26+
async function getSecret(projectId, secretId) {
2827
const client = new SecretManagerServiceClient();
29-
30-
async function getSecret() {
28+
const name = `projects/${projectId}/secrets/${secretId}`;
29+
try {
3130
const [secret] = await client.getSecret({
3231
name: name,
3332
});
3433

35-
const policy = secret.replication.replication;
36-
37-
console.info(`Found secret ${secret.name} (${policy})`);
34+
if (secret.replication && secret.replication.replication) {
35+
const policy = secret.replication.replication;
36+
console.info(
37+
`Found secret ${secret.name} with replication policy ${policy}`
38+
);
39+
} else {
40+
console.info(`Found secret ${secret.name} with no replication policy.`);
41+
}
42+
return secret;
43+
} catch (err) {
44+
console.error(`Failed to retrieve secret ${name}:`, err);
45+
} finally {
46+
await client.close();
3847
}
48+
}
49+
// [END secretmanager_get_secret]
50+
51+
async function main() {
52+
const projectId = process.argv[2] || process.env.PROJECT_ID;
53+
const secretId = process.argv[3] || process.env.SECRET_ID;
54+
55+
await getSecret(projectId, secretId);
56+
}
3957

40-
getSecret();
41-
// [END secretmanager_get_secret]
58+
if (require.main === module) {
59+
main().catch(err => {
60+
console.error(err.message);
61+
});
4262
}
4363

44-
const args = process.argv.slice(2);
45-
main(...args).catch(console.error);
64+
module.exports.getSecret = getSecret;

secret-manager/test/secretmanager.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,8 @@ describe('Secret Manager samples', () => {
316316
assert.match(output, new RegExp(`${regionalSecret.name}`));
317317
});
318318

319-
it('gets a secret', async () => {
320-
const output = execSync(`node getSecret.js ${secret.name}`);
319+
it('gets metadata about a secret', async () => {
320+
const output = execSync(`node getSecret.js ${projectId} ${secretId}`);
321321
assert.match(output, new RegExp(`Found secret ${secret.name}`));
322322
});
323323

0 commit comments

Comments
 (0)