From a99a60d45eff6076c8fed801190da9c94afc2bf5 Mon Sep 17 00:00:00 2001 From: Jennifer Davis Date: Wed, 25 Jun 2025 23:18:05 -0700 Subject: [PATCH 1/4] fix: standardize getSecret sample --- secret-manager/getSecret.js | 58 +++++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/secret-manager/getSecret.js b/secret-manager/getSecret.js index 55b1acd6a4..e5049eaae2 100644 --- a/secret-manager/getSecret.js +++ b/secret-manager/getSecret.js @@ -14,32 +14,54 @@ 'use strict'; -async function main(name = 'projects/my-project/secrets/my-secret') { - // [START secretmanager_get_secret] - /** - * TODO(developer): Uncomment these variables before running the sample. - */ - // const name = 'projects/my-project/secrets/my-secret'; +const {SecretManagerServiceClient} = require('@google-cloud/secret-manager'); - // Imports the Secret Manager library - const {SecretManagerServiceClient} = require('@google-cloud/secret-manager'); - - // Instantiates a client +// [START secretmanager_get_secret] +/** + * Get metadata about a secret. + * + * @param {string} projectId The ID of the Google Cloud project. + * @param {string} secretId The ID of the secret to retrieve. + */ +async function getSecret(projectId, secretId) { const client = new SecretManagerServiceClient(); - - async function getSecret() { + const name = `projects/${projectId}/secrets/${secretId}`; + + try { const [secret] = await client.getSecret({ name: name, }); - const policy = secret.replication.replication; + if (secret.replication && secret.replication.replication) { + const policy = secret.replication.replication; + console.info( + `Found secret ${secret.name} with replication policy ${policy}` + ); - console.info(`Found secret ${secret.name} (${policy})`); + } else { + console.info(`Found secret ${secret.name} with no replication policy.`); + } + return secret; + } catch (err) { + console.error('Failed to retrieve secret ${name}:', err); + } finally { + await client.close(); } +} +// [END secretmanager_get_secret] + +async function main() { + const projectId = process.argv[2] || process.env.PROJECT_ID; + const secretId = process.argv[3] || process.env.SECRET_ID; + + await getSecret(projectId, secretId); +} - getSecret(); - // [END secretmanager_get_secret] +if (require.main === module) { + main().catch(err => { + console.error(err.message); + process.exit(1); + }); } -const args = process.argv.slice(2); -main(...args).catch(console.error); +module.exports.getSecret = getSecret; From 9eff5b97ff5f587ccfb17f81300abec4404901be Mon Sep 17 00:00:00 2001 From: Jennifer Davis Date: Wed, 25 Jun 2025 23:23:39 -0700 Subject: [PATCH 2/4] fix: address linting issues --- secret-manager/getSecret.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/secret-manager/getSecret.js b/secret-manager/getSecret.js index e5049eaae2..20111c23fe 100644 --- a/secret-manager/getSecret.js +++ b/secret-manager/getSecret.js @@ -26,7 +26,6 @@ const {SecretManagerServiceClient} = require('@google-cloud/secret-manager'); async function getSecret(projectId, secretId) { const client = new SecretManagerServiceClient(); const name = `projects/${projectId}/secrets/${secretId}`; - try { const [secret] = await client.getSecret({ name: name, @@ -37,7 +36,6 @@ async function getSecret(projectId, secretId) { console.info( `Found secret ${secret.name} with replication policy ${policy}` ); - } else { console.info(`Found secret ${secret.name} with no replication policy.`); } @@ -60,7 +58,6 @@ async function main() { if (require.main === module) { main().catch(err => { console.error(err.message); - process.exit(1); }); } From eff55236867ce456438c81f82411ad692beb6757 Mon Sep 17 00:00:00 2001 From: Jennifer Davis Date: Wed, 25 Jun 2025 23:25:47 -0700 Subject: [PATCH 3/4] fix: update error logging --- secret-manager/getSecret.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/secret-manager/getSecret.js b/secret-manager/getSecret.js index 20111c23fe..c8963ec67b 100644 --- a/secret-manager/getSecret.js +++ b/secret-manager/getSecret.js @@ -41,7 +41,7 @@ async function getSecret(projectId, secretId) { } return secret; } catch (err) { - console.error('Failed to retrieve secret ${name}:', err); + console.error(`Failed to retrieve secret ${name}:`, err); } finally { await client.close(); } From 9b29ba16d4dcc05cb8b79d120d379a941635c0bc Mon Sep 17 00:00:00 2001 From: Jennifer Davis Date: Wed, 25 Jun 2025 23:35:36 -0700 Subject: [PATCH 4/4] fix: update test to reflect standardization --- secret-manager/test/secretmanager.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/secret-manager/test/secretmanager.test.js b/secret-manager/test/secretmanager.test.js index 7813d5ec9c..3cbf2dc7dc 100644 --- a/secret-manager/test/secretmanager.test.js +++ b/secret-manager/test/secretmanager.test.js @@ -316,8 +316,8 @@ describe('Secret Manager samples', () => { assert.match(output, new RegExp(`${regionalSecret.name}`)); }); - it('gets a secret', async () => { - const output = execSync(`node getSecret.js ${secret.name}`); + it('gets metadata about a secret', async () => { + const output = execSync(`node getSecret.js ${projectId} ${secretId}`); assert.match(output, new RegExp(`Found secret ${secret.name}`)); });