diff --git a/google-cloud-secretmanager/pom.xml b/google-cloud-secretmanager/pom.xml index a1447e93..2c80cc19 100644 --- a/google-cloud-secretmanager/pom.xml +++ b/google-cloud-secretmanager/pom.xml @@ -72,7 +72,11 @@ junit test - + + com.google.cloud + google-cloud-core + test + com.google.api.grpc grpc-google-cloud-secretmanager-v1beta1 diff --git a/google-cloud-secretmanager/src/test/java/com/google/cloud/secretmanager/v1beta1/it/ITSystemTest.java b/google-cloud-secretmanager/src/test/java/com/google/cloud/secretmanager/v1beta1/it/ITSystemTest.java new file mode 100644 index 00000000..256b2c3f --- /dev/null +++ b/google-cloud-secretmanager/src/test/java/com/google/cloud/secretmanager/v1beta1/it/ITSystemTest.java @@ -0,0 +1,187 @@ +/* + * Copyright 2020 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 + * + * https://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 com.google.cloud.secretmanager.v1beta1.it; + +import static org.junit.Assert.assertEquals; + +import com.google.cloud.ServiceOptions; +import com.google.cloud.secretmanager.v1beta1.SecretManagerServiceClient; +import com.google.cloud.secrets.v1beta1.AccessSecretVersionRequest; +import com.google.cloud.secrets.v1beta1.AccessSecretVersionResponse; +import com.google.cloud.secrets.v1beta1.AddSecretVersionRequest; +import com.google.cloud.secrets.v1beta1.CreateSecretRequest; +import com.google.cloud.secrets.v1beta1.DeleteSecretRequest; +import com.google.cloud.secrets.v1beta1.DestroySecretVersionRequest; +import com.google.cloud.secrets.v1beta1.DisableSecretVersionRequest; +import com.google.cloud.secrets.v1beta1.EnableSecretVersionRequest; +import com.google.cloud.secrets.v1beta1.GetSecretRequest; +import com.google.cloud.secrets.v1beta1.GetSecretVersionRequest; +import com.google.cloud.secrets.v1beta1.ListSecretVersionsRequest; +import com.google.cloud.secrets.v1beta1.ListSecretsRequest; +import com.google.cloud.secrets.v1beta1.ProjectName; +import com.google.cloud.secrets.v1beta1.Replication; +import com.google.cloud.secrets.v1beta1.Secret; +import com.google.cloud.secrets.v1beta1.SecretName; +import com.google.cloud.secrets.v1beta1.SecretPayload; +import com.google.cloud.secrets.v1beta1.SecretVersion; +import com.google.cloud.secrets.v1beta1.SecretVersionName; +import com.google.protobuf.ByteString; +import java.io.IOException; +import java.util.UUID; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +public class ITSystemTest { + + private static final String PROJECT_ID = ServiceOptions.getDefaultProjectId(); + private static final String PROJECT_NAME = ProjectName.of(PROJECT_ID).toString(); + private static final String ID = UUID.randomUUID().toString().substring(0, 8); + private static final String SECRET_ID = "test-secret-id-" + ID; + private static final String LOCATION = "us-central1"; + private static final SecretPayload PAYLOAD = + SecretPayload.newBuilder().setData(ByteString.copyFromUtf8("test-payload")).build(); + private static SecretManagerServiceClient client; + private static Secret secret; + private static String secretId; + private static String formattedSecretName; + private static SecretVersion secretVersion; + private static String secretVersionId; + private static String formattedSecretVersion; + + @BeforeClass + public static void setUp() throws IOException { + + /* create secret */ + client = SecretManagerServiceClient.create(); + Replication createReplication = + Replication.newBuilder() + .setUserManaged( + Replication.UserManaged.newBuilder() + .addReplicas( + Replication.UserManaged.Replica.newBuilder().setLocation(LOCATION).build())) + .build(); + Secret createSecret = Secret.newBuilder().setReplication(createReplication).build(); + CreateSecretRequest secretRequest = + CreateSecretRequest.newBuilder() + .setParent(PROJECT_NAME) + .setSecretId(SECRET_ID) + .setSecret(createSecret) + .build(); + secret = client.createSecret(secretRequest); + secretId = getName(secret.getName()); + formattedSecretName = SecretName.of(PROJECT_ID, secretId).toString(); + + /* create secret version */ + AddSecretVersionRequest versionRequest = + AddSecretVersionRequest.newBuilder() + .setParent(formattedSecretName) + .setPayload(PAYLOAD) + .build(); + secretVersion = client.addSecretVersion(versionRequest); + secretVersionId = getName(secretVersion.getName()); + formattedSecretVersion = SecretVersionName.of(PROJECT_ID, secretId, secretVersionId).toString(); + } + + @AfterClass + public static void tearDown() { + + /* destroy secret version */ + DestroySecretVersionRequest versionRequest = + DestroySecretVersionRequest.newBuilder().setName(formattedSecretVersion).build(); + SecretVersion actualSecretVersion = client.destroySecretVersion(versionRequest); + assertEquals(secretVersion.getCreateTime(), actualSecretVersion.getCreateTime()); + assertEquals(SecretVersion.State.DESTROYED, actualSecretVersion.getState()); + + /* delete secret */ + DeleteSecretRequest secretRequest = + DeleteSecretRequest.newBuilder().setName(formattedSecretName).build(); + client.deleteSecret(secretRequest); + client.close(); + } + + @Test + public void listSecretsTest() { + ListSecretsRequest request = ListSecretsRequest.newBuilder().setParent(PROJECT_NAME).build(); + for (Secret actualSecret : client.listSecrets(request).iterateAll()) { + if (secret.getName().equals(actualSecret.getName())) { + assertEquals(secret.getReplication(), actualSecret.getReplication()); + assertEquals(secret.getCreateTime(), actualSecret.getCreateTime()); + } + } + } + + @Test + public void getSecretTest() { + GetSecretRequest request = GetSecretRequest.newBuilder().setName(formattedSecretName).build(); + Secret actualSecret = client.getSecret(request); + assertEquals(secret.getName(), actualSecret.getName()); + assertEquals(secret.getReplication(), actualSecret.getReplication()); + assertEquals(secret.getCreateTime(), actualSecret.getCreateTime()); + } + + @Test + public void listSecretVersionsTest() { + ListSecretVersionsRequest request = + ListSecretVersionsRequest.newBuilder().setParent(formattedSecretName).build(); + for (SecretVersion actualSecretVersion : client.listSecretVersions(request).iterateAll()) { + if (secretVersion.getName().equals(actualSecretVersion.getName())) { + assertEquals(secretVersion.getCreateTime(), actualSecretVersion.getCreateTime()); + assertEquals(SecretVersion.State.ENABLED, actualSecretVersion.getState()); + } + } + } + + @Test + public void getSecretVersionTest() { + GetSecretVersionRequest request = + GetSecretVersionRequest.newBuilder().setName(formattedSecretVersion).build(); + SecretVersion actualSecretVersion = client.getSecretVersion(request); + assertEquals(secretVersion.getName(), actualSecretVersion.getName()); + assertEquals(secretVersion.getCreateTime(), actualSecretVersion.getCreateTime()); + assertEquals(SecretVersion.State.ENABLED, actualSecretVersion.getState()); + } + + @Test + public void accessSecretVersionTest() { + AccessSecretVersionRequest request = + AccessSecretVersionRequest.newBuilder().setName(formattedSecretVersion).build(); + AccessSecretVersionResponse response = client.accessSecretVersion(request); + assertEquals(secretVersion.getName(), response.getName()); + assertEquals(PAYLOAD, response.getPayload()); + } + + @Test + public void disableAndEnableSecretVersionTest() { + DisableSecretVersionRequest disableSecretVersionRequest = + DisableSecretVersionRequest.newBuilder().setName(formattedSecretVersion).build(); + SecretVersion disableSecretVersion = client.disableSecretVersion(disableSecretVersionRequest); + assertEquals(secretVersion.getName(), disableSecretVersion.getName()); + assertEquals(secretVersion.getCreateTime(), disableSecretVersion.getCreateTime()); + assertEquals(SecretVersion.State.DISABLED, disableSecretVersion.getState()); + + EnableSecretVersionRequest enableSecretVersionRequest = + EnableSecretVersionRequest.newBuilder().setName(formattedSecretVersion).build(); + SecretVersion enableSecretVersion = client.enableSecretVersion(enableSecretVersionRequest); + assertEquals(secretVersion.getName(), enableSecretVersion.getName()); + assertEquals(secretVersion.getCreateTime(), enableSecretVersion.getCreateTime()); + assertEquals(SecretVersion.State.ENABLED, enableSecretVersion.getState()); + } + + private static String getName(String name) { + return name.substring(name.lastIndexOf("/")).replace("/", ""); + } +} diff --git a/pom.xml b/pom.xml index 95be1934..f6a3bbd8 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,7 @@ UTF-8 github google-cloud-secretmanager-parent - 1.91.3 + 1.92.0 1.8.1 1.17.0 1.52.0 @@ -131,6 +131,11 @@ proto-google-common-protos ${google.common-protos.version} + + com.google.cloud + google-cloud-core + ${google.core.version} + org.threeten threetenbp