diff --git a/README.md b/README.md index e21da0a58..e7daefb5a 100644 --- a/README.md +++ b/README.md @@ -230,9 +230,11 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-storage/tree/ | Configure Retries | [source code](https://github.com/googleapis/java-storage/blob/main/samples/snippets/src/main/java/com/example/storage/ConfigureRetries.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-storage&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/storage/ConfigureRetries.java) | | Quickstart Sample | [source code](https://github.com/googleapis/java-storage/blob/main/samples/snippets/src/main/java/com/example/storage/QuickstartSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-storage&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/storage/QuickstartSample.java) | | Add Bucket Default Owner | [source code](https://github.com/googleapis/java-storage/blob/main/samples/snippets/src/main/java/com/example/storage/bucket/AddBucketDefaultOwner.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-storage&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/storage/bucket/AddBucketDefaultOwner.java) | +| Add Bucket Owner | [source code](https://github.com/googleapis/java-storage/blob/main/samples/snippets/src/main/java/com/example/storage/bucket/AddBucketOwner.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-storage&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/storage/bucket/AddBucketOwner.java) | | Print Bucket Acl | [source code](https://github.com/googleapis/java-storage/blob/main/samples/snippets/src/main/java/com/example/storage/bucket/PrintBucketAcl.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-storage&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/storage/bucket/PrintBucketAcl.java) | | Print Bucket Acl Filter By User | [source code](https://github.com/googleapis/java-storage/blob/main/samples/snippets/src/main/java/com/example/storage/bucket/PrintBucketAclFilterByUser.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-storage&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/storage/bucket/PrintBucketAclFilterByUser.java) | | Remove Bucket Default Owner | [source code](https://github.com/googleapis/java-storage/blob/main/samples/snippets/src/main/java/com/example/storage/bucket/RemoveBucketDefaultOwner.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-storage&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/storage/bucket/RemoveBucketDefaultOwner.java) | +| Remove Bucket Owner | [source code](https://github.com/googleapis/java-storage/blob/main/samples/snippets/src/main/java/com/example/storage/bucket/RemoveBucketOwner.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-storage&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/storage/bucket/RemoveBucketOwner.java) | diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/AddBucketDefaultOwner.java b/samples/snippets/src/main/java/com/example/storage/bucket/AddBucketDefaultOwner.java index 662c40cca..93e172fbd 100644 --- a/samples/snippets/src/main/java/com/example/storage/bucket/AddBucketDefaultOwner.java +++ b/samples/snippets/src/main/java/com/example/storage/bucket/AddBucketDefaultOwner.java @@ -32,7 +32,7 @@ public static void addBucketDefaultOwner(String bucketName, String userEmail) { // The ID to give your GCS bucket // String bucketName = "your-unique-bucket-name"; - // Email of the user you wish to remove as a default owner + // Email of the user you wish to add as a default owner // String userEmail = "someuser@domain.com" Storage storage = StorageOptions.newBuilder().build().getService(); diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/AddBucketOwner.java b/samples/snippets/src/main/java/com/example/storage/bucket/AddBucketOwner.java new file mode 100644 index 000000000..f4b93b637 --- /dev/null +++ b/samples/snippets/src/main/java/com/example/storage/bucket/AddBucketOwner.java @@ -0,0 +1,46 @@ +/* + * Copyright 2022 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 com.example.storage.bucket; + +// [START storage_add_bucket_owner] + +import com.google.cloud.storage.Acl; +import com.google.cloud.storage.Acl.Role; +import com.google.cloud.storage.Acl.User; +import com.google.cloud.storage.Bucket; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageOptions; + +public class AddBucketOwner { + + public static void addBucketOwner(String bucketName, String userEmail) { + // The ID to give your GCS bucket + // String bucketName = "your-unique-bucket-name"; + + // Email of the user you wish to add as an owner + // String userEmail = "someuser@domain.com" + + Storage storage = StorageOptions.newBuilder().build().getService(); + Bucket bucket = storage.get(bucketName); + Acl newOwner = Acl.of(new User(userEmail), Role.OWNER); + + bucket.createAcl(newOwner); + System.out.println("Added user " + userEmail + " as an owner on " + bucketName); + } +} + +// [END storage_add_bucket_owner] diff --git a/samples/snippets/src/main/java/com/example/storage/bucket/RemoveBucketOwner.java b/samples/snippets/src/main/java/com/example/storage/bucket/RemoveBucketOwner.java new file mode 100644 index 000000000..f775605e3 --- /dev/null +++ b/samples/snippets/src/main/java/com/example/storage/bucket/RemoveBucketOwner.java @@ -0,0 +1,48 @@ +/* + * Copyright 2022 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 com.example.storage.bucket; + +// [START storage_remove_bucket_owner] + +import com.google.cloud.storage.Acl.User; +import com.google.cloud.storage.Bucket; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageOptions; + +public class RemoveBucketOwner { + + public static void removeBucketOwner(String bucketName, String userEmail) { + // The ID to give your GCS bucket + // String bucketName = "your-unique-bucket-name"; + + // Email of the user you wish to remove as an owner + // String userEmail = "someuser@domain.com" + + Storage storage = StorageOptions.newBuilder().build().getService(); + Bucket bucket = storage.get(bucketName); + User ownerToRemove = new User(userEmail); + + boolean success = bucket.deleteAcl(ownerToRemove); + if (success) { + System.out.println("Removed user " + userEmail + " as an owner on " + bucketName); + } else { + System.out.println("User " + userEmail + " was not found"); + } + } +} + +// [END storage_remove_bucket_owner] diff --git a/samples/snippets/src/test/java/com/example/storage/bucket/AddBucketOwnerTest.java b/samples/snippets/src/test/java/com/example/storage/bucket/AddBucketOwnerTest.java new file mode 100644 index 000000000..e9edea94b --- /dev/null +++ b/samples/snippets/src/test/java/com/example/storage/bucket/AddBucketOwnerTest.java @@ -0,0 +1,39 @@ +/* + * Copyright 2022 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 com.example.storage.bucket; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertNotNull; + +import com.example.storage.TestBase; +import com.google.cloud.storage.Acl.User; +import org.junit.Test; + +public class AddBucketOwnerTest extends TestBase { + + public static final String IT_SERVICE_ACCOUNT_EMAIL = System.getenv("IT_SERVICE_ACCOUNT_EMAIL"); + + @Test + public void testAddBucketOwner() { + // Check for user email before the actual test. + assertNotNull("Unable to determine user email", IT_SERVICE_ACCOUNT_EMAIL); + + AddBucketOwner.addBucketOwner(bucketName, IT_SERVICE_ACCOUNT_EMAIL); + assertThat(stdOut.getCapturedOutputAsUtf8String()).contains(IT_SERVICE_ACCOUNT_EMAIL); + assertThat(bucket.getAcl(new User(IT_SERVICE_ACCOUNT_EMAIL))).isNotNull(); + } +} diff --git a/samples/snippets/src/test/java/com/example/storage/bucket/RemoveBucketOwnerTest.java b/samples/snippets/src/test/java/com/example/storage/bucket/RemoveBucketOwnerTest.java new file mode 100644 index 000000000..6ad481c1d --- /dev/null +++ b/samples/snippets/src/test/java/com/example/storage/bucket/RemoveBucketOwnerTest.java @@ -0,0 +1,54 @@ +/* + * Copyright 2022 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 com.example.storage.bucket; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertNotNull; + +import com.example.storage.TestBase; +import com.google.cloud.storage.Acl; +import com.google.cloud.storage.Acl.Role; +import com.google.cloud.storage.Acl.User; +import org.junit.Test; + +public class RemoveBucketOwnerTest extends TestBase { + + public static final String IT_SERVICE_ACCOUNT_EMAIL = System.getenv("IT_SERVICE_ACCOUNT_EMAIL"); + + @Test + public void testRemoveBucketOwner() { + // Check for user email before the actual test. + assertNotNull("Unable to determine user email", IT_SERVICE_ACCOUNT_EMAIL); + // Add User as Owner + Acl newOwner = Acl.of(new User(IT_SERVICE_ACCOUNT_EMAIL), Role.OWNER); + bucket.createAcl(newOwner); + + // Remove User as owner + RemoveBucketOwner.removeBucketOwner(bucketName, IT_SERVICE_ACCOUNT_EMAIL); + assertThat(stdOut.getCapturedOutputAsUtf8String()).contains(IT_SERVICE_ACCOUNT_EMAIL); + assertThat(stdOut.getCapturedOutputAsUtf8String()).contains("Removed user"); + assertThat(bucket.getAcl(new User(IT_SERVICE_ACCOUNT_EMAIL))).isNull(); + } + + @Test + public void testUserNotFound() { + // Remove User without Owner Permissions + RemoveBucketOwner.removeBucketOwner(bucketName, IT_SERVICE_ACCOUNT_EMAIL); + assertThat(stdOut.getCapturedOutputAsUtf8String()).contains(IT_SERVICE_ACCOUNT_EMAIL); + assertThat(stdOut.getCapturedOutputAsUtf8String()).contains("was not found"); + } +}