diff --git a/secretmanager/src/main/java/secretmanager/CreateSecretWithDelayedDestroy.java b/secretmanager/src/main/java/secretmanager/CreateSecretWithDelayedDestroy.java new file mode 100644 index 00000000000..a75199e005f --- /dev/null +++ b/secretmanager/src/main/java/secretmanager/CreateSecretWithDelayedDestroy.java @@ -0,0 +1,67 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package secretmanager; + +// [START secretmanager_create_secret_with_delayed_destroy] + +import com.google.cloud.secretmanager.v1.ProjectName; +import com.google.cloud.secretmanager.v1.Replication; +import com.google.cloud.secretmanager.v1.Secret; +import com.google.cloud.secretmanager.v1.SecretManagerServiceClient; +import com.google.protobuf.Duration; +import java.io.IOException; + +public class CreateSecretWithDelayedDestroy { + + public static void createSecretWithDelayedDestroy() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "your-project-id"; + String secretId = "your-secret-id"; + Integer versionDestroyTtl = 86400; + createSecretWithDelayedDestroy(projectId, secretId, versionDestroyTtl); + } + + // Create secret with version destroy TTL. + public static Secret createSecretWithDelayedDestroy( + String projectId, + String secretId, + Integer versionDestroyTtl) + throws IOException { + // Initialize the client that will be used to send requests. + try (SecretManagerServiceClient client = SecretManagerServiceClient.create()) { + // Build the parent name from the project. + ProjectName projectName = ProjectName.of(projectId); + + // Build the secret to create. + Secret secret = + Secret.newBuilder() + .setReplication( + Replication.newBuilder() + .setAutomatic(Replication.Automatic.newBuilder().build()) + .build()) + .setVersionDestroyTtl(Duration.newBuilder().setSeconds(versionDestroyTtl)) + .build(); + + // Create the secret. + Secret createdSecret = client.createSecret(projectName, secretId, secret); + System.out.printf("Created secret with version destroy ttl %s\n", createdSecret.getName()); + + return createdSecret; + } + } +} +// [END secretmanager_create_secret_with_delayed_destroy] diff --git a/secretmanager/src/main/java/secretmanager/DisableSecretDelayedDestroy.java b/secretmanager/src/main/java/secretmanager/DisableSecretDelayedDestroy.java new file mode 100644 index 00000000000..d558f1c1de5 --- /dev/null +++ b/secretmanager/src/main/java/secretmanager/DisableSecretDelayedDestroy.java @@ -0,0 +1,64 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package secretmanager; + +// [START secretmanager_disable_secret_delayed_destroy] + +import com.google.cloud.secretmanager.v1.Secret; +import com.google.cloud.secretmanager.v1.SecretManagerServiceClient; +import com.google.cloud.secretmanager.v1.SecretName; +import com.google.protobuf.FieldMask; +import com.google.protobuf.util.FieldMaskUtil; +import java.io.IOException; + +public class DisableSecretDelayedDestroy { + + public static void disableSecretDelayedDestroy() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "your-project-id"; + String secretId = "your-secret-id"; + disableSecretDelayedDestroy(projectId, secretId); + } + + // Disables delayed destroy for a secret. + public static Secret disableSecretDelayedDestroy( + String projectId, + String secretId) + throws IOException { + // Initialize the client that will be used to send requests. + try (SecretManagerServiceClient client = SecretManagerServiceClient.create()) { + // Build the parent name from the project and secret. + SecretName secretName = SecretName.of(projectId, secretId); + + // Build the secret to update. + Secret secret = + Secret.newBuilder() + .setName(secretName.toString()) + .build(); + + // Build the field mask. + FieldMask fieldMask = FieldMaskUtil.fromString("version_destroy_ttl"); + + // Update the secret. + Secret updatedSecret = client.updateSecret(secret, fieldMask); + System.out.printf("Updated secret %s\n", updatedSecret.getName()); + + return updatedSecret; + } + } +} +// [END secretmanager_disable_secret_delayed_destroy] diff --git a/secretmanager/src/main/java/secretmanager/UpdateSecretWithDelayedDestroy.java b/secretmanager/src/main/java/secretmanager/UpdateSecretWithDelayedDestroy.java new file mode 100644 index 00000000000..21d061f9dbe --- /dev/null +++ b/secretmanager/src/main/java/secretmanager/UpdateSecretWithDelayedDestroy.java @@ -0,0 +1,68 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package secretmanager; + +// [START secretmanager_update_secret_with_delayed_destroy] + +import com.google.cloud.secretmanager.v1.Secret; +import com.google.cloud.secretmanager.v1.SecretManagerServiceClient; +import com.google.cloud.secretmanager.v1.SecretName; +import com.google.protobuf.Duration; +import com.google.protobuf.FieldMask; +import com.google.protobuf.util.FieldMaskUtil; +import java.io.IOException; + +public class UpdateSecretWithDelayedDestroy { + + public static void updateSecretWithDelayedDestroy() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "your-project-id"; + String secretId = "your-secret-id"; + Integer versionDestroyTtl = 86400; + updateSecretWithDelayedDestroy(projectId, secretId, versionDestroyTtl); + } + + // Update secret with version destroy TTL. + public static Secret updateSecretWithDelayedDestroy( + String projectId, + String secretId, + Integer versionDestroyTtl) + throws IOException { + // Initialize the client that will be used to send requests. + try (SecretManagerServiceClient client = SecretManagerServiceClient.create()) { + // Build the parent name from the project and secret. + SecretName secretName = SecretName.of(projectId, secretId); + + // Build the secret to update. + Secret secret = + Secret.newBuilder() + .setName(secretName.toString()) + .setVersionDestroyTtl(Duration.newBuilder().setSeconds(versionDestroyTtl)) + .build(); + + // Build the field mask. + FieldMask fieldMask = FieldMaskUtil.fromString("version_destroy_ttl"); + + // Update the secret. + Secret updatedSecret = client.updateSecret(secret, fieldMask); + System.out.printf("Updated secret %s\n", updatedSecret.getName()); + + return updatedSecret; + } + } +} +// [END secretmanager_update_secret_with_delayed_destroy] diff --git a/secretmanager/src/main/java/secretmanager/regionalsamples/CreateRegionalSecretWithDelayedDestroy.java b/secretmanager/src/main/java/secretmanager/regionalsamples/CreateRegionalSecretWithDelayedDestroy.java new file mode 100644 index 00000000000..2866dfaea57 --- /dev/null +++ b/secretmanager/src/main/java/secretmanager/regionalsamples/CreateRegionalSecretWithDelayedDestroy.java @@ -0,0 +1,71 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package secretmanager.regionalsamples; + +// [START secretmanager_create_regional_secret_with_delayed_destroy] + +import com.google.cloud.secretmanager.v1.LocationName; +import com.google.cloud.secretmanager.v1.Secret; +import com.google.cloud.secretmanager.v1.SecretManagerServiceClient; +import com.google.cloud.secretmanager.v1.SecretManagerServiceSettings; +import com.google.protobuf.Duration; +import java.io.IOException; + +public class CreateRegionalSecretWithDelayedDestroy { + + public static void createRegionalSecretWithDelayedDestroy() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "your-project-id"; + String locationId = "your-location-id"; + String secretId = "your-secret-id"; + Integer versionDestroyTtl = 86400; + createRegionalSecretWithDelayedDestroy(projectId, locationId, secretId, versionDestroyTtl); + } + + // Create secret with version destroy TTL. + public static Secret createRegionalSecretWithDelayedDestroy( + String projectId, + String locationId, + String secretId, + Integer versionDestroyTtl) + throws IOException { + // Endpoint to call the regional secret manager sever + String apiEndpoint = String.format("secretmanager.%s.rep.googleapis.com:443", locationId); + SecretManagerServiceSettings secretManagerServiceSettings = + SecretManagerServiceSettings.newBuilder().setEndpoint(apiEndpoint).build(); + + // Initialize the client that will be used to send requests. + try (SecretManagerServiceClient client = + SecretManagerServiceClient.create(secretManagerServiceSettings)) { + // Build the parent name from the project. + LocationName locationName = LocationName.of(projectId, locationId); + + // Build the secret to create. + Secret secret = + Secret.newBuilder() + .setVersionDestroyTtl(Duration.newBuilder().setSeconds(versionDestroyTtl)) + .build(); + + // Create the secret. + Secret createdSecret = client.createSecret(locationName, secretId, secret); + System.out.printf("Created secret with version destroy ttl %s\n", createdSecret.getName()); + + return createdSecret; + } + } +} +// [END secretmanager_create_regional_secret_with_delayed_destroy] diff --git a/secretmanager/src/main/java/secretmanager/regionalsamples/DisableRegionalSecretDelayedDestroy.java b/secretmanager/src/main/java/secretmanager/regionalsamples/DisableRegionalSecretDelayedDestroy.java new file mode 100644 index 00000000000..03753d09d77 --- /dev/null +++ b/secretmanager/src/main/java/secretmanager/regionalsamples/DisableRegionalSecretDelayedDestroy.java @@ -0,0 +1,74 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package secretmanager.regionalsamples; + +// [START secretmanager_disable_regional_secret_delayed_destroy] + +import com.google.cloud.secretmanager.v1.Secret; +import com.google.cloud.secretmanager.v1.SecretManagerServiceClient; +import com.google.cloud.secretmanager.v1.SecretManagerServiceSettings; +import com.google.cloud.secretmanager.v1.SecretName; +import com.google.protobuf.FieldMask; +import com.google.protobuf.util.FieldMaskUtil; +import java.io.IOException; + +public class DisableRegionalSecretDelayedDestroy { + + public static void disableRegionalSecretDelayedDestroy() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "your-project-id"; + String locationId = "your-location-id"; + String secretId = "your-secret-id"; + disableRegionalSecretDelayedDestroy(projectId, locationId, secretId); + } + + // Disables the secret's delayed destroy. + public static Secret disableRegionalSecretDelayedDestroy( + String projectId, + String locationId, + String secretId) + throws IOException { + // Endpoint to call the regional secret manager sever + String apiEndpoint = String.format("secretmanager.%s.rep.googleapis.com:443", locationId); + SecretManagerServiceSettings secretManagerServiceSettings = + SecretManagerServiceSettings.newBuilder().setEndpoint(apiEndpoint).build(); + + // Initialize the client that will be used to send requests. + try (SecretManagerServiceClient client = + SecretManagerServiceClient.create(secretManagerServiceSettings)) { + // Build the parent name from the project and secret. + SecretName secretName = + SecretName.ofProjectLocationSecretName(projectId, locationId, secretId); + + // Build the secret to update. + Secret secret = + Secret.newBuilder() + .setName(secretName.toString()) + .build(); + + // Build the field mask. + FieldMask fieldMask = FieldMaskUtil.fromString("version_destroy_ttl"); + + // Update the secret. + Secret updatedSecret = client.updateSecret(secret, fieldMask); + System.out.printf("Updated secret %s\n", updatedSecret.getName()); + + return updatedSecret; + } + } +} +// [END secretmanager_disable_regional_secret_delayed_destroy] diff --git a/secretmanager/src/main/java/secretmanager/regionalsamples/UpdateRegionalSecretWithDelayedDestroy.java b/secretmanager/src/main/java/secretmanager/regionalsamples/UpdateRegionalSecretWithDelayedDestroy.java new file mode 100644 index 00000000000..2d233846d97 --- /dev/null +++ b/secretmanager/src/main/java/secretmanager/regionalsamples/UpdateRegionalSecretWithDelayedDestroy.java @@ -0,0 +1,78 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package secretmanager.regionalsamples; + +// [START secretmanager_update_regional_secret_with_delayed_destroy] + +import com.google.cloud.secretmanager.v1.Secret; +import com.google.cloud.secretmanager.v1.SecretManagerServiceClient; +import com.google.cloud.secretmanager.v1.SecretManagerServiceSettings; +import com.google.cloud.secretmanager.v1.SecretName; +import com.google.protobuf.Duration; +import com.google.protobuf.FieldMask; +import com.google.protobuf.util.FieldMaskUtil; +import java.io.IOException; + +public class UpdateRegionalSecretWithDelayedDestroy { + + public static void updateRegionalSecretWithDelayedDestroy() throws IOException { + // TODO(developer): Replace these variables before running the sample. + String projectId = "your-project-id"; + String locationId = "your-location-id"; + String secretId = "your-secret-id"; + Integer versionDestroyTtl = 86400; + updateRegionalSecretWithDelayedDestroy(projectId, locationId, secretId, versionDestroyTtl); + } + + // Update secret with version destroy TTL. + public static Secret updateRegionalSecretWithDelayedDestroy( + String projectId, + String locationId, + String secretId, + Integer versionDestroyTtl) + throws IOException { + // Endpoint to call the regional secret manager sever + String apiEndpoint = String.format("secretmanager.%s.rep.googleapis.com:443", locationId); + SecretManagerServiceSettings secretManagerServiceSettings = + SecretManagerServiceSettings.newBuilder().setEndpoint(apiEndpoint).build(); + + // Initialize the client that will be used to send requests. + try (SecretManagerServiceClient client = + SecretManagerServiceClient.create(secretManagerServiceSettings)) { + // Build the parent name from the project and secret. + SecretName secretName = + SecretName.ofProjectLocationSecretName(projectId, locationId, secretId); + + // Build the secret to update. + Secret secret = + Secret.newBuilder() + .setName(secretName.toString()) + .setVersionDestroyTtl(Duration.newBuilder().setSeconds(versionDestroyTtl)) + .build(); + + // Build the field mask. + FieldMask fieldMask = FieldMaskUtil.fromString("version_destroy_ttl"); + + // Update the secret. + Secret updatedSecret = client.updateSecret(secret, fieldMask); + System.out.printf("Updated secret %s\n", updatedSecret.getName()); + + return updatedSecret; + } + } +} +// [END secretmanager_update_regional_secret_with_delayed_destroy] diff --git a/secretmanager/src/test/java/secretmanager/SnippetsIT.java b/secretmanager/src/test/java/secretmanager/SnippetsIT.java index a67edf2b303..41f88a1e6d9 100644 --- a/secretmanager/src/test/java/secretmanager/SnippetsIT.java +++ b/secretmanager/src/test/java/secretmanager/SnippetsIT.java @@ -89,7 +89,9 @@ public class SnippetsIT { private static Secret TEST_SECRET; private static Secret TEST_SECRET_TO_DELETE; private static Secret TEST_SECRET_TO_DELETE_WITH_ETAG; + private static Secret TEST_SECRET_TO_DELAYED_DESTROY; private static Secret TEST_SECRET_WITH_VERSIONS; + private static SecretName TEST_SECRET_WITH_DELAYED_DESTROY; private static SecretName TEST_SECRET_TO_CREATE_NAME; private static SecretName TEST_SECRET_WITH_LABEL_TO_CREATE_NAME; private static SecretName TEST_SECRET_WITH_TAGS_TO_CREATE_NAME; @@ -116,6 +118,8 @@ public static void beforeAll() throws Exception { TEST_SECRET_TO_DELETE = createSecret(false); TEST_SECRET_TO_DELETE_WITH_ETAG = createSecret(false); TEST_SECRET_WITH_VERSIONS = createSecret(false); + TEST_SECRET_TO_DELAYED_DESTROY = createSecret(false); + TEST_SECRET_WITH_DELAYED_DESTROY = SecretName.of(PROJECT_ID, randomSecretId()); TEST_SECRET_TO_CREATE_NAME = SecretName.of(PROJECT_ID, randomSecretId()); TEST_UMMR_SECRET_TO_CREATE_NAME = SecretName.of(PROJECT_ID, randomSecretId()); TEST_SECRET_WITH_TAGS_TO_CREATE_NAME = SecretName.of(PROJECT_ID, randomSecretId()); @@ -160,6 +164,8 @@ public static void afterAll() throws Exception { deleteSecret(TEST_SECRET_TO_DELETE.getName()); deleteSecret(TEST_SECRET_TO_DELETE_WITH_ETAG.getName()); deleteSecret(TEST_SECRET_WITH_VERSIONS.getName()); + deleteSecret(TEST_SECRET_WITH_DELAYED_DESTROY.toString()); + deleteSecret(TEST_SECRET_TO_DELAYED_DESTROY.getName()); deleteTags(); } @@ -583,6 +589,36 @@ public void testUpdateSecretWithAlias() throws IOException { assertThat(stdOut.toString()).contains("test"); } + @Test + public void testCreateSecretWithDelayedDestroy() throws IOException { + SecretName name = TEST_SECRET_WITH_DELAYED_DESTROY; + Secret secret = CreateSecretWithDelayedDestroy.createSecretWithDelayedDestroy( + name.getProject(), name.getSecret(), 86400); + + assertThat(stdOut.toString()).contains("Created secret with version destroy ttl"); + assertThat(secret.getVersionDestroyTtl().getSeconds()).isEqualTo(86400); + } + + @Test + public void testUpdateSecretWithDelayedDestroy() throws IOException { + SecretName name = SecretName.parse(TEST_SECRET_TO_DELAYED_DESTROY.getName()); + Secret secret = UpdateSecretWithDelayedDestroy.updateSecretWithDelayedDestroy( + name.getProject(), name.getSecret(), 86520); + + assertThat(stdOut.toString()).contains("Updated secret"); + assertThat(secret.getVersionDestroyTtl().getSeconds()).isEqualTo(86520); + } + + @Test + public void testDisableSecretDelayedDestroy() throws IOException { + SecretName name = SecretName.parse(TEST_SECRET_TO_DELAYED_DESTROY.getName()); + Secret secret = DisableSecretDelayedDestroy.disableSecretDelayedDestroy( + name.getProject(), name.getSecret()); + + assertThat(stdOut.toString()).contains("Updated secret"); + assertThat(secret.getVersionDestroyTtl().getSeconds()).isEqualTo(0); + } + @Test public void testConsumeEventNotification() { String message = "hello!"; @@ -599,5 +635,4 @@ public void testConsumeEventNotification() { assertThat(log).isEqualTo( "Received SECRET_UPDATE for projects/p/secrets/s. New metadata: hello!"); } - } diff --git a/secretmanager/src/test/java/secretmanager/regionalsamples/SnippetsIT.java b/secretmanager/src/test/java/secretmanager/regionalsamples/SnippetsIT.java index 55313b3a12a..11ca876dc30 100644 --- a/secretmanager/src/test/java/secretmanager/regionalsamples/SnippetsIT.java +++ b/secretmanager/src/test/java/secretmanager/regionalsamples/SnippetsIT.java @@ -99,6 +99,8 @@ public class SnippetsIT { private static Secret TEST_REGIONAL_SECRET_TO_DELETE; private static Secret TEST_REGIONAL_SECRET_TO_DELETE_WITH_ETAG; private static Secret TEST_REGIONAL_SECRET_WITH_VERSIONS; + private static Secret TEST_REGIONAL_SECRET_TO_DELAYED_DESTROY; + private static SecretName TEST_REGIONAL_SECRET_WITH_DELAYED_DESTROY; private static SecretName TEST_REGIONAL_SECRET_TO_CREATE_NAME; private static SecretName TEST_REGIONAL_SECRET_WITH_LABEL_TO_CREATE_NAME; private static SecretName TEST_REGIONAL_SECRET_WITH_TAGS_TO_CREATE_NAME; @@ -126,6 +128,9 @@ public static void beforeAll() throws Exception { TEST_REGIONAL_SECRET_TO_DELETE = createRegionalSecret(); TEST_REGIONAL_SECRET_TO_DELETE_WITH_ETAG = createRegionalSecret(); TEST_REGIONAL_SECRET_WITH_VERSIONS = createRegionalSecret(); + TEST_REGIONAL_SECRET_TO_DELAYED_DESTROY = createRegionalSecret(); + TEST_REGIONAL_SECRET_WITH_DELAYED_DESTROY = + SecretName.ofProjectLocationSecretName(PROJECT_ID, LOCATION_ID, randomSecretId()); TEST_REGIONAL_SECRET_TO_CREATE_NAME = SecretName.ofProjectLocationSecretName(PROJECT_ID, LOCATION_ID, randomSecretId()); TEST_REGIONAL_SECRET_WITH_ANNOTATION_TO_CREATE_NAME = @@ -178,6 +183,8 @@ public static void afterAll() throws Exception { deleteRegionalSecret(TEST_REGIONAL_SECRET_TO_DELETE.getName()); deleteRegionalSecret(TEST_REGIONAL_SECRET_TO_DELETE_WITH_ETAG.getName()); deleteRegionalSecret(TEST_REGIONAL_SECRET_WITH_VERSIONS.getName()); + deleteRegionalSecret(TEST_REGIONAL_SECRET_WITH_DELAYED_DESTROY.toString()); + deleteRegionalSecret(TEST_REGIONAL_SECRET_TO_DELAYED_DESTROY.getName()); deleteTags(); } @@ -674,5 +681,35 @@ public void testEditSecretAnnotations() throws IOException { assertThat(updatedSecret.getAnnotationsMap()).containsEntry( UPDATED_ANNOTATION_KEY, UPDATED_ANNOTATION_VALUE); } + + @Test + public void testCreateRegionalSecretWithDelayedDestroy() throws IOException { + SecretName name = TEST_REGIONAL_SECRET_WITH_DELAYED_DESTROY; + Secret secret = CreateRegionalSecretWithDelayedDestroy.createRegionalSecretWithDelayedDestroy( + name.getProject(), name.getLocation(), name.getSecret(), 86400); + + assertThat(stdOut.toString()).contains("Created secret with version destroy ttl"); + assertThat(secret.getVersionDestroyTtl().getSeconds()).isEqualTo(86400); + } + + @Test + public void testUpdateRegionalSecretWithDelayedDestroy() throws IOException { + SecretName name = SecretName.parse(TEST_REGIONAL_SECRET_TO_DELAYED_DESTROY.getName()); + Secret secret = UpdateRegionalSecretWithDelayedDestroy.updateRegionalSecretWithDelayedDestroy( + name.getProject(), name.getLocation(), name.getSecret(), 86520); + + assertThat(stdOut.toString()).contains("Updated secret"); + assertThat(secret.getVersionDestroyTtl().getSeconds()).isEqualTo(86520); + } + + @Test + public void testDisableRegionalSecretDelayedDestroy() throws IOException { + SecretName name = SecretName.parse(TEST_REGIONAL_SECRET_TO_DELAYED_DESTROY.getName()); + Secret secret = DisableRegionalSecretDelayedDestroy.disableRegionalSecretDelayedDestroy( + name.getProject(), name.getLocation(), name.getSecret()); + + assertThat(stdOut.toString()).contains("Updated secret"); + assertThat(secret.getVersionDestroyTtl().getSeconds()).isEqualTo(0); + } }