diff --git a/secret-manager/createSecret.js b/secret-manager/createSecret.js index 939462104b..4a89b6b9c5 100644 --- a/secret-manager/createSecret.js +++ b/secret-manager/createSecret.js @@ -14,13 +14,18 @@ 'use strict'; -async function main(parent = 'projects/my-project', secretId = 'my-secret') { +async function main( + parent = 'projects/my-project', + secretId = 'my-secret', + ttl = undefined +) { // [START secretmanager_create_secret] /** * TODO(developer): Uncomment these variables before running the sample. */ // const parent = 'projects/my-project'; // const secretId = 'my-secret'; + // const ttl = undefined // Optional: Specify TTL in seconds (e.g., '900s' for 15 minutes). // Imports the Secret Manager library const {SecretManagerServiceClient} = require('@google-cloud/secret-manager'); @@ -29,14 +34,24 @@ async function main(parent = 'projects/my-project', secretId = 'my-secret') { const client = new SecretManagerServiceClient(); async function createSecret() { + const secretConfig = { + replication: { + automatic: {}, + }, + }; + + // Add TTL to the secret configuration if provided + if (ttl) { + secretConfig.ttl = { + seconds: parseInt(ttl.replace('s', ''), 10), + }; + console.log(`Secret TTL set to ${ttl}`); + } + const [secret] = await client.createSecret({ parent: parent, secretId: secretId, - secret: { - replication: { - automatic: {}, - }, - }, + secret: secretConfig, }); console.log(`Created secret ${secret.name}`); diff --git a/secret-manager/test/secretmanager.test.js b/secret-manager/test/secretmanager.test.js index d9416ebca4..7813d5ec9c 100644 --- a/secret-manager/test/secretmanager.test.js +++ b/secret-manager/test/secretmanager.test.js @@ -245,11 +245,21 @@ describe('Secret Manager samples', () => { assert.match(stdout, new RegExp('Payload: bar')); }); - it('creates a secret', async () => { + it('creates a secret with TTL', async () => { + const ttl = '900s'; const output = execSync( - `node createSecret.js projects/${projectId} ${secretId}-2` + `node createSecret.js projects/${projectId} ${secretId}-2 ${ttl}` ); assert.match(output, new RegExp('Created secret')); + assert.match(output, new RegExp(`Secret TTL set to ${ttl}`)); + }); + + it('creates a secret without TTL', async () => { + const output = execSync( + `node createSecret.js projects/${projectId} ${secretId}-7` + ); + assert.match(output, new RegExp('Created secret')); + assert.notMatch(output, new RegExp('Secret TTL set to')); }); it('creates a regional secret', async () => {