From 841186b87bedde84ce450da6bafc0bbf78f04aad Mon Sep 17 00:00:00 2001 From: Ivan Hernandez Date: Tue, 14 Jan 2025 18:35:11 +0000 Subject: [PATCH 1/6] feat(secret-manager): add optional ttl field to createSecret function --- secret-manager/createSecret.js | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/secret-manager/createSecret.js b/secret-manager/createSecret.js index 939462104b..872701a3f4 100644 --- a/secret-manager/createSecret.js +++ b/secret-manager/createSecret.js @@ -14,29 +14,41 @@ 'use strict'; -async function main(parent = 'projects/my-project', secretId = 'my-secret') { +async function main( + parent = 'projects/my-project', + secretId = 'my-secret', + ttl = '900s' +) { // [START secretmanager_create_secret] /** * TODO(developer): Uncomment these variables before running the sample. */ // const parent = 'projects/my-project'; // const secretId = 'my-secret'; + // const ttl = '900s' // Optional: Specify TTL in seconds (e.g., '900s' for 15 minutes). // Imports the Secret Manager library - const {SecretManagerServiceClient} = require('@google-cloud/secret-manager'); + const { SecretManagerServiceClient } = require('@google-cloud/secret-manager'); // Instantiates a client const client = new SecretManagerServiceClient(); async function createSecret() { + const secretConfig = { + replication: { + automatic: {}, + }, + }; + + // Add TTL to the secret configuration if provided + if (ttl) { + secretConfig.ttl = ttl; + } + const [secret] = await client.createSecret({ parent: parent, secretId: secretId, - secret: { - replication: { - automatic: {}, - }, - }, + secret: secretConfig, }); console.log(`Created secret ${secret.name}`); @@ -47,4 +59,4 @@ async function main(parent = 'projects/my-project', secretId = 'my-secret') { } const args = process.argv.slice(2); -main(...args).catch(console.error); +main(...args).catch(console.error); \ No newline at end of file From d8abb663092f594a95794ee46619371489d450a1 Mon Sep 17 00:00:00 2001 From: Ivan Hernandez Date: Tue, 14 Jan 2025 18:39:01 +0000 Subject: [PATCH 2/6] fix linting errors --- secret-manager/createSecret.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/secret-manager/createSecret.js b/secret-manager/createSecret.js index 872701a3f4..e7632f1479 100644 --- a/secret-manager/createSecret.js +++ b/secret-manager/createSecret.js @@ -28,7 +28,7 @@ async function main( // const ttl = '900s' // Optional: Specify TTL in seconds (e.g., '900s' for 15 minutes). // Imports the Secret Manager library - const { SecretManagerServiceClient } = require('@google-cloud/secret-manager'); + const {SecretManagerServiceClient} = require('@google-cloud/secret-manager'); // Instantiates a client const client = new SecretManagerServiceClient(); @@ -59,4 +59,4 @@ async function main( } const args = process.argv.slice(2); -main(...args).catch(console.error); \ No newline at end of file +main(...args).catch(console.error); From 9bedf11109b36a71e63de400923a41c87a7848bd Mon Sep 17 00:00:00 2001 From: Ivan Hernandez Date: Wed, 15 Jan 2025 00:14:06 +0000 Subject: [PATCH 3/6] fix: update TTL format --- secret-manager/createSecret.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/secret-manager/createSecret.js b/secret-manager/createSecret.js index e7632f1479..87d2f130f0 100644 --- a/secret-manager/createSecret.js +++ b/secret-manager/createSecret.js @@ -42,7 +42,9 @@ async function main( // Add TTL to the secret configuration if provided if (ttl) { - secretConfig.ttl = ttl; + secretConfig.ttl = { + seconds: parseInt(ttl.replace('s', ''), 10), + }; } const [secret] = await client.createSecret({ From 9845093901cfadd32714fd80ecc5b8bc420ddc54 Mon Sep 17 00:00:00 2001 From: Ivan Hernandez Date: Wed, 15 Jan 2025 00:32:01 +0000 Subject: [PATCH 4/6] fix: correct ttl parameter --- secret-manager/createSecret.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/secret-manager/createSecret.js b/secret-manager/createSecret.js index 87d2f130f0..c3378174cc 100644 --- a/secret-manager/createSecret.js +++ b/secret-manager/createSecret.js @@ -17,7 +17,7 @@ async function main( parent = 'projects/my-project', secretId = 'my-secret', - ttl = '900s' + ttl = undefined ) { // [START secretmanager_create_secret] /** @@ -25,7 +25,7 @@ async function main( */ // const parent = 'projects/my-project'; // const secretId = 'my-secret'; - // const ttl = '900s' // Optional: Specify TTL in seconds (e.g., '900s' for 15 minutes). + // 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'); From 741ca1822f6745993141e579d789bbde7864fb9f Mon Sep 17 00:00:00 2001 From: Ivan Hernandez Date: Tue, 18 Feb 2025 19:16:19 +0000 Subject: [PATCH 5/6] fix(secret-manager): Update unit test for createSecret.js --- secret-manager/test/secretmanager.test.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/secret-manager/test/secretmanager.test.js b/secret-manager/test/secretmanager.test.js index d9416ebca4..dc5a8f28a5 100644 --- a/secret-manager/test/secretmanager.test.js +++ b/secret-manager/test/secretmanager.test.js @@ -246,8 +246,9 @@ describe('Secret Manager samples', () => { }); it('creates a secret', 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')); }); From baa50978e5c25fcef0fbb1b14934a2bb8ae520b3 Mon Sep 17 00:00:00 2001 From: Ivan Hernandez Date: Tue, 11 Mar 2025 18:40:13 +0000 Subject: [PATCH 6/6] fix(secret-manager): Add TTL support to secret creation with improved test validation --- secret-manager/createSecret.js | 1 + secret-manager/test/secretmanager.test.js | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/secret-manager/createSecret.js b/secret-manager/createSecret.js index c3378174cc..4a89b6b9c5 100644 --- a/secret-manager/createSecret.js +++ b/secret-manager/createSecret.js @@ -45,6 +45,7 @@ async function main( secretConfig.ttl = { seconds: parseInt(ttl.replace('s', ''), 10), }; + console.log(`Secret TTL set to ${ttl}`); } const [secret] = await client.createSecret({ diff --git a/secret-manager/test/secretmanager.test.js b/secret-manager/test/secretmanager.test.js index dc5a8f28a5..7813d5ec9c 100644 --- a/secret-manager/test/secretmanager.test.js +++ b/secret-manager/test/secretmanager.test.js @@ -245,12 +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 ${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 () => {