diff --git a/secret-manager/getSecret.js b/secret-manager/getSecret.js index 55b1acd6a4..c8963ec67b 100644 --- a/secret-manager/getSecret.js +++ b/secret-manager/getSecret.js @@ -14,32 +14,51 @@ '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; - - console.info(`Found secret ${secret.name} (${policy})`); + if (secret.replication && secret.replication.replication) { + const policy = secret.replication.replication; + console.info( + `Found secret ${secret.name} with replication policy ${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); + }); } -const args = process.argv.slice(2); -main(...args).catch(console.error); +module.exports.getSecret = getSecret; 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}`)); });