From 13973f15115ff723e0a0ccbaea1ac5ea351dbe95 Mon Sep 17 00:00:00 2001 From: Frank Natividad Date: Wed, 26 Apr 2017 01:59:35 -0700 Subject: [PATCH 1/6] Adding Bucket-level IAM snippets in google-cloud-examples --- .../storage/snippets/BucketIamSnippets.java | 112 ++++++++++++++++++ .../storage/snippets/ITBucketSnippets.java | 52 ++++++++ 2 files changed, 164 insertions(+) create mode 100644 google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java new file mode 100644 index 000000000000..2d9f681b0666 --- /dev/null +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java @@ -0,0 +1,112 @@ +/* + * Copyright 2017 Google Inc. All Rights Reserved. + * + * 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. + */ + +/* + * EDITING INSTRUCTIONS + * This file is referenced in Storage's javadoc. Any change to this file should be reflected in + * Storage's javadoc. + */ + +package com.google.cloud.examples.storage.snippets; + +import com.google.cloud.Identity; +import com.google.cloud.Policy; +import com.google.cloud.Role; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageException; +import com.google.cloud.storage.StorageOptions; +import com.google.cloud.storage.StorageRoles; + +import java.util.Map; +import java.util.Set; + +/** + * This class contains Bucket-level IAM snippets for the {@link Storage} interface. + */ +public class BucketIamSnippets { + + private final Storage storage; + + public BucketIamSnippets(Storage storage) { + this.storage = storage; + } + + /** + * Example of listing the Bucket-Level IAM Roles and Members + */ + + public Policy listBucketIamMembers(String bucketName) { + // [START view_bucket_iam_members] + // Initialize a Cloud Storage client + Storage storage = StorageOptions.getDefaultInstance().getService(); + + // Get IAM Policy for a bucket + Policy policy = storage.getIamPolicy(bucketName); + + // Print Roles and its identities + Map> policyBindings = policy.getBindings(); + for(Map.Entry> entry : policyBindings.entrySet()) { + System.out.printf("Role: %s", entry.getKey()); + System.out.printf(" Identities: %s\n", entry.getValue()); + } + // [END view_bucket_iam_members] + return policy; + } + + /** + * Example of adding a member to the Bucket-level IAM + */ + + public void addBucketIamMember(String bucketName, Role role, Identity identity) { + // [START add_bucket_iam_member] + // Initialize a Cloud Storage client + Storage storage = StorageOptions.getDefaultInstance().getService(); + + // Get IAM Policy for a bucket + Policy policy = storage.getIamPolicy(bucketName); + + // Add identity to Bucket-level IAM role + Policy updatedPolicy = policy.toBuilder().addIdentity(role, identity).build(); + + // Update the bucket IAM Policy + storage.setIamPolicy(bucketName, updatedPolicy); + + System.out.printf("Added %s with role %s to %s\n", identity, role, bucketName); + // [END add_bucket_iam_member] + } + + /** + * Example of removing a member from the Bucket-level IAM + */ + + public void removeBucketIamMember(String bucketName, Role role, Identity identity) { + // [START remove_bucket_iam_member] + // Initialize a Cloud Storage client + Storage storage = StorageOptions.getDefaultInstance().getService(); + + // Get IAM Policy for a bucket + Policy policy = storage.getIamPolicy(bucketName); + + // Remove identity from Bucket-level IAM role + Policy updatedPolicy = policy.toBuilder().removeIdentity(role, identity).build(); + + // Update the bucket IAM Policy + storage.setIamPolicy(bucketName, updatedPolicy); + + System.out.printf("Removed %s with role %s from %s\n", identity, role, bucketName); + // [END remove_bucket_iam_member] + } +} diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java index 7e49265b930d..69fd73372967 100644 --- a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java @@ -21,6 +21,8 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import com.google.cloud.Identity; +import com.google.cloud.Policy; import com.google.cloud.storage.Acl; import com.google.cloud.storage.Acl.Role; import com.google.cloud.storage.Blob; @@ -28,6 +30,7 @@ import com.google.cloud.storage.BucketInfo; import com.google.cloud.storage.Storage; import com.google.cloud.storage.StorageException; +import com.google.cloud.storage.StorageRoles; import com.google.cloud.storage.testing.RemoteStorageHelper; import com.google.common.collect.Sets; @@ -49,6 +52,7 @@ public class ITBucketSnippets { private static final Logger log = Logger.getLogger(ITBucketSnippets.class.getName()); private static final String BUCKET = RemoteStorageHelper.generateBucketName(); + private static final String USER_EMAIL = "test@test.com"; private static final String BLOB1 = "blob1"; private static final String BLOB2 = "blob2"; private static final String BLOB3 = "blob3"; @@ -56,6 +60,7 @@ public class ITBucketSnippets { private static Storage storage; private static BucketSnippets bucketSnippets; + private static BucketIamSnippets bucketIamSnippets; @Rule public ExpectedException thrown = ExpectedException.none(); @@ -68,6 +73,7 @@ public static void beforeClass() { RemoteStorageHelper helper = RemoteStorageHelper.create(); storage = helper.getOptions().getService(); bucketSnippets = new BucketSnippets(storage.create(BucketInfo.of(BUCKET))); + bucketIamSnippets = new BucketIamSnippets(storage); } @AfterClass @@ -133,4 +139,50 @@ public void testBucket() throws InterruptedException { thrown.expect(StorageException.class); assertTrue(bucketSnippets.delete()); } + + @Test + public void testListBucketIamMembers() { + // Test an added Bucket-level IAM member is listed + Policy policy = storage.getIamPolicy(BUCKET); + storage.setIamPolicy(BUCKET, policy.toBuilder().removeRole(StorageRoles.admin()).build()); + policy = storage.getIamPolicy(BUCKET); + assertNull(policy.getBindings().get(StorageRoles.admin())); + storage.setIamPolicy(BUCKET, policy.toBuilder().addIdentity(StorageRoles.admin(), + Identity.user(USER_EMAIL)).build()); + policy = storage.getIamPolicy(BUCKET); + assertTrue(policy.getBindings().get(StorageRoles.admin()).contains(Identity.user(USER_EMAIL))); + Policy snippetPolicy = bucketIamSnippets.listBucketIamMembers(BUCKET); + assertTrue(snippetPolicy.getBindings().get(StorageRoles.admin()). + contains(Identity.user(USER_EMAIL))); + } + + @Test + public void testAddBucketIamMemeber() { + // Test a member is added to Bucket-level IAM + Policy policy = storage.getIamPolicy(BUCKET); + storage.setIamPolicy(BUCKET, policy.toBuilder().removeRole(StorageRoles.admin()).build()); + policy = storage.getIamPolicy(BUCKET); + assertNull(policy.getBindings().get(StorageRoles.admin())); + bucketIamSnippets.addBucketIamMember(BUCKET, StorageRoles.admin(), Identity.user(USER_EMAIL)); + policy = storage.getIamPolicy(BUCKET); + assertTrue(policy.getBindings().get(StorageRoles.admin()).contains(Identity.user(USER_EMAIL))); + } + + @Test + public void testRemoveBucketIamMember() { + // Test a member is removed from Bucket-level IAM + Policy policy = storage.getIamPolicy(BUCKET); + storage.setIamPolicy(BUCKET, policy.toBuilder().removeRole(StorageRoles.admin()).build()); + policy = storage.getIamPolicy(BUCKET); + assertNull(policy.getBindings().get(StorageRoles.admin())); + policy = policy.toBuilder().addIdentity(StorageRoles.admin(), + Identity.user(USER_EMAIL)).build(); + storage.setIamPolicy(BUCKET, policy); + policy = storage.getIamPolicy(BUCKET); + assertTrue(policy.getBindings().get(StorageRoles.admin()).contains(Identity.user(USER_EMAIL))); + bucketIamSnippets.removeBucketIamMember(BUCKET, StorageRoles.admin(), + Identity.user(USER_EMAIL)); + policy = storage.getIamPolicy(BUCKET); + assertNull(policy.getBindings().get(StorageRoles.admin())); + } } From 6ec2d3ccd352d44867af0fb19a55d964c1fdb3e5 Mon Sep 17 00:00:00 2001 From: Frank Natividad Date: Wed, 26 Apr 2017 02:05:00 -0700 Subject: [PATCH 2/6] Removing unwanted whitespace (tabs).. --- .../storage/snippets/BucketIamSnippets.java | 14 +++++++------- .../storage/snippets/ITBucketSnippets.java | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java index 2d9f681b0666..31b3ac0ce613 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java @@ -49,9 +49,9 @@ public BucketIamSnippets(Storage storage) { */ public Policy listBucketIamMembers(String bucketName) { - // [START view_bucket_iam_members] - // Initialize a Cloud Storage client - Storage storage = StorageOptions.getDefaultInstance().getService(); + // [START view_bucket_iam_members] + // Initialize a Cloud Storage client + Storage storage = StorageOptions.getDefaultInstance().getService(); // Get IAM Policy for a bucket Policy policy = storage.getIamPolicy(bucketName); @@ -71,7 +71,7 @@ public Policy listBucketIamMembers(String bucketName) { */ public void addBucketIamMember(String bucketName, Role role, Identity identity) { - // [START add_bucket_iam_member] + // [START add_bucket_iam_member] // Initialize a Cloud Storage client Storage storage = StorageOptions.getDefaultInstance().getService(); @@ -85,7 +85,7 @@ public void addBucketIamMember(String bucketName, Role role, Identity identity) storage.setIamPolicy(bucketName, updatedPolicy); System.out.printf("Added %s with role %s to %s\n", identity, role, bucketName); - // [END add_bucket_iam_member] + // [END add_bucket_iam_member] } /** @@ -93,7 +93,7 @@ public void addBucketIamMember(String bucketName, Role role, Identity identity) */ public void removeBucketIamMember(String bucketName, Role role, Identity identity) { - // [START remove_bucket_iam_member] + // [START remove_bucket_iam_member] // Initialize a Cloud Storage client Storage storage = StorageOptions.getDefaultInstance().getService(); @@ -107,6 +107,6 @@ public void removeBucketIamMember(String bucketName, Role role, Identity identit storage.setIamPolicy(bucketName, updatedPolicy); System.out.printf("Removed %s with role %s from %s\n", identity, role, bucketName); - // [END remove_bucket_iam_member] + // [END remove_bucket_iam_member] } } diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java index 69fd73372967..cd6af7760d2e 100644 --- a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java @@ -146,11 +146,11 @@ public void testListBucketIamMembers() { Policy policy = storage.getIamPolicy(BUCKET); storage.setIamPolicy(BUCKET, policy.toBuilder().removeRole(StorageRoles.admin()).build()); policy = storage.getIamPolicy(BUCKET); - assertNull(policy.getBindings().get(StorageRoles.admin())); + assertNull(policy.getBindings().get(StorageRoles.admin())); storage.setIamPolicy(BUCKET, policy.toBuilder().addIdentity(StorageRoles.admin(), Identity.user(USER_EMAIL)).build()); policy = storage.getIamPolicy(BUCKET); - assertTrue(policy.getBindings().get(StorageRoles.admin()).contains(Identity.user(USER_EMAIL))); + assertTrue(policy.getBindings().get(StorageRoles.admin()).contains(Identity.user(USER_EMAIL))); Policy snippetPolicy = bucketIamSnippets.listBucketIamMembers(BUCKET); assertTrue(snippetPolicy.getBindings().get(StorageRoles.admin()). contains(Identity.user(USER_EMAIL))); @@ -165,7 +165,7 @@ public void testAddBucketIamMemeber() { assertNull(policy.getBindings().get(StorageRoles.admin())); bucketIamSnippets.addBucketIamMember(BUCKET, StorageRoles.admin(), Identity.user(USER_EMAIL)); policy = storage.getIamPolicy(BUCKET); - assertTrue(policy.getBindings().get(StorageRoles.admin()).contains(Identity.user(USER_EMAIL))); + assertTrue(policy.getBindings().get(StorageRoles.admin()).contains(Identity.user(USER_EMAIL))); } @Test @@ -176,13 +176,13 @@ public void testRemoveBucketIamMember() { policy = storage.getIamPolicy(BUCKET); assertNull(policy.getBindings().get(StorageRoles.admin())); policy = policy.toBuilder().addIdentity(StorageRoles.admin(), - Identity.user(USER_EMAIL)).build(); + Identity.user(USER_EMAIL)).build(); storage.setIamPolicy(BUCKET, policy); policy = storage.getIamPolicy(BUCKET); assertTrue(policy.getBindings().get(StorageRoles.admin()).contains(Identity.user(USER_EMAIL))); bucketIamSnippets.removeBucketIamMember(BUCKET, StorageRoles.admin(), Identity.user(USER_EMAIL)); policy = storage.getIamPolicy(BUCKET); - assertNull(policy.getBindings().get(StorageRoles.admin())); + assertNull(policy.getBindings().get(StorageRoles.admin())); } } From b21740be6c10b4fa9ef9430045c135fc574f8f4e Mon Sep 17 00:00:00 2001 From: Frank Natividad Date: Thu, 27 Apr 2017 09:10:12 -0700 Subject: [PATCH 3/6] Removed unnecessary comment and verified post-operation --- .../storage/snippets/BucketIamSnippets.java | 35 +++++++------------ 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java index 31b3ac0ce613..f04f28cbd2ea 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java @@ -14,12 +14,6 @@ * limitations under the License. */ -/* - * EDITING INSTRUCTIONS - * This file is referenced in Storage's javadoc. Any change to this file should be reflected in - * Storage's javadoc. - */ - package com.google.cloud.examples.storage.snippets; import com.google.cloud.Identity; @@ -47,7 +41,6 @@ public BucketIamSnippets(Storage storage) { /** * Example of listing the Bucket-Level IAM Roles and Members */ - public Policy listBucketIamMembers(String bucketName) { // [START view_bucket_iam_members] // Initialize a Cloud Storage client @@ -59,8 +52,7 @@ public Policy listBucketIamMembers(String bucketName) { // Print Roles and its identities Map> policyBindings = policy.getBindings(); for(Map.Entry> entry : policyBindings.entrySet()) { - System.out.printf("Role: %s", entry.getKey()); - System.out.printf(" Identities: %s\n", entry.getValue()); + System.out.printf("Role: %s Identities: %s\n", entry.getKey(), entry.getValue()); } // [END view_bucket_iam_members] return policy; @@ -69,7 +61,6 @@ public Policy listBucketIamMembers(String bucketName) { /** * Example of adding a member to the Bucket-level IAM */ - public void addBucketIamMember(String bucketName, Role role, Identity identity) { // [START add_bucket_iam_member] // Initialize a Cloud Storage client @@ -79,19 +70,18 @@ public void addBucketIamMember(String bucketName, Role role, Identity identity) Policy policy = storage.getIamPolicy(bucketName); // Add identity to Bucket-level IAM role - Policy updatedPolicy = policy.toBuilder().addIdentity(role, identity).build(); + Policy updatedPolicy = storage.setIamPolicy(bucketName, + policy.toBuilder().addIdentity(role, identity).build()); - // Update the bucket IAM Policy - storage.setIamPolicy(bucketName, updatedPolicy); - - System.out.printf("Added %s with role %s to %s\n", identity, role, bucketName); + if (updatedPolicy.getBindings().get(role).contains(identity)) { + System.out.printf("Added %s with role %s to %s\n", identity, role, bucketName); + } // [END add_bucket_iam_member] } /** * Example of removing a member from the Bucket-level IAM */ - public void removeBucketIamMember(String bucketName, Role role, Identity identity) { // [START remove_bucket_iam_member] // Initialize a Cloud Storage client @@ -100,13 +90,14 @@ public void removeBucketIamMember(String bucketName, Role role, Identity identit // Get IAM Policy for a bucket Policy policy = storage.getIamPolicy(bucketName); - // Remove identity from Bucket-level IAM role - Policy updatedPolicy = policy.toBuilder().removeIdentity(role, identity).build(); + // Remove an identity from a Bucket-level IAM role + Policy updatedPolicy = storage.setIamPolicy(bucketName, + policy.toBuilder().removeIdentity(role, identity).build()); - // Update the bucket IAM Policy - storage.setIamPolicy(bucketName, updatedPolicy); - - System.out.printf("Removed %s with role %s from %s\n", identity, role, bucketName); + if (updatedPolicy.getBindings().get(role) == null || + !updatedPolicy.getBindings().get(role).contains(identity)) { + System.out.printf("Removed %s with role %s from %s\n", identity, role, bucketName); + } // [END remove_bucket_iam_member] } } From 873b8ff884148ccaad13b0c36a52507f1abbab44 Mon Sep 17 00:00:00 2001 From: Frank Natividad Date: Thu, 27 Apr 2017 09:32:54 -0700 Subject: [PATCH 4/6] Removing unused class imports and variables --- .../cloud/examples/storage/snippets/BucketIamSnippets.java | 7 +------ .../cloud/examples/storage/snippets/ITBucketSnippets.java | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java index f04f28cbd2ea..bf1bc9d0a40b 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java @@ -20,9 +20,7 @@ import com.google.cloud.Policy; import com.google.cloud.Role; import com.google.cloud.storage.Storage; -import com.google.cloud.storage.StorageException; import com.google.cloud.storage.StorageOptions; -import com.google.cloud.storage.StorageRoles; import java.util.Map; import java.util.Set; @@ -32,10 +30,7 @@ */ public class BucketIamSnippets { - private final Storage storage; - - public BucketIamSnippets(Storage storage) { - this.storage = storage; + public BucketIamSnippets() { } /** diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java index cd6af7760d2e..b2a6d3a5103b 100644 --- a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java @@ -73,7 +73,7 @@ public static void beforeClass() { RemoteStorageHelper helper = RemoteStorageHelper.create(); storage = helper.getOptions().getService(); bucketSnippets = new BucketSnippets(storage.create(BucketInfo.of(BUCKET))); - bucketIamSnippets = new BucketIamSnippets(storage); + bucketIamSnippets = new BucketIamSnippets(); } @AfterClass From 8b49ff98e0310ca4df83257d9fce0a1ea4a54c75 Mon Sep 17 00:00:00 2001 From: Frank Natividad Date: Thu, 27 Apr 2017 10:58:47 -0700 Subject: [PATCH 5/6] Removing empty constructor --- .../cloud/examples/storage/snippets/BucketIamSnippets.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java index bf1bc9d0a40b..bc74c4d960d6 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java @@ -30,9 +30,6 @@ */ public class BucketIamSnippets { - public BucketIamSnippets() { - } - /** * Example of listing the Bucket-Level IAM Roles and Members */ From 00555f38fda64c201a4ab776178b3ad1046bc43d Mon Sep 17 00:00:00 2001 From: Frank Natividad Date: Fri, 28 Apr 2017 00:56:05 -0700 Subject: [PATCH 6/6] Using snippet policy to verify correctness. Removed extra API calls getIamPolicy --- .../storage/snippets/BucketIamSnippets.java | 6 ++-- .../storage/snippets/ITBucketSnippets.java | 35 +++++++++---------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java index bc74c4d960d6..af256a2ddb97 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/snippets/BucketIamSnippets.java @@ -53,7 +53,7 @@ public Policy listBucketIamMembers(String bucketName) { /** * Example of adding a member to the Bucket-level IAM */ - public void addBucketIamMember(String bucketName, Role role, Identity identity) { + public Policy addBucketIamMember(String bucketName, Role role, Identity identity) { // [START add_bucket_iam_member] // Initialize a Cloud Storage client Storage storage = StorageOptions.getDefaultInstance().getService(); @@ -69,12 +69,13 @@ public void addBucketIamMember(String bucketName, Role role, Identity identity) System.out.printf("Added %s with role %s to %s\n", identity, role, bucketName); } // [END add_bucket_iam_member] + return updatedPolicy; } /** * Example of removing a member from the Bucket-level IAM */ - public void removeBucketIamMember(String bucketName, Role role, Identity identity) { + public Policy removeBucketIamMember(String bucketName, Role role, Identity identity) { // [START remove_bucket_iam_member] // Initialize a Cloud Storage client Storage storage = StorageOptions.getDefaultInstance().getService(); @@ -91,5 +92,6 @@ public void removeBucketIamMember(String bucketName, Role role, Identity identit System.out.printf("Removed %s with role %s from %s\n", identity, role, bucketName); } // [END remove_bucket_iam_member] + return updatedPolicy; } } diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java index b2a6d3a5103b..688d9d951633 100644 --- a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java @@ -144,12 +144,11 @@ public void testBucket() throws InterruptedException { public void testListBucketIamMembers() { // Test an added Bucket-level IAM member is listed Policy policy = storage.getIamPolicy(BUCKET); - storage.setIamPolicy(BUCKET, policy.toBuilder().removeRole(StorageRoles.admin()).build()); - policy = storage.getIamPolicy(BUCKET); + policy = storage.setIamPolicy(BUCKET, + policy.toBuilder().removeRole(StorageRoles.admin()).build()); assertNull(policy.getBindings().get(StorageRoles.admin())); - storage.setIamPolicy(BUCKET, policy.toBuilder().addIdentity(StorageRoles.admin(), - Identity.user(USER_EMAIL)).build()); - policy = storage.getIamPolicy(BUCKET); + policy = storage.setIamPolicy(BUCKET, policy.toBuilder().addIdentity(StorageRoles.admin(), + Identity.user(USER_EMAIL)).build()); assertTrue(policy.getBindings().get(StorageRoles.admin()).contains(Identity.user(USER_EMAIL))); Policy snippetPolicy = bucketIamSnippets.listBucketIamMembers(BUCKET); assertTrue(snippetPolicy.getBindings().get(StorageRoles.admin()). @@ -160,29 +159,27 @@ public void testListBucketIamMembers() { public void testAddBucketIamMemeber() { // Test a member is added to Bucket-level IAM Policy policy = storage.getIamPolicy(BUCKET); - storage.setIamPolicy(BUCKET, policy.toBuilder().removeRole(StorageRoles.admin()).build()); - policy = storage.getIamPolicy(BUCKET); + policy = storage.setIamPolicy(BUCKET, + policy.toBuilder().removeRole(StorageRoles.admin()).build()); assertNull(policy.getBindings().get(StorageRoles.admin())); - bucketIamSnippets.addBucketIamMember(BUCKET, StorageRoles.admin(), Identity.user(USER_EMAIL)); - policy = storage.getIamPolicy(BUCKET); - assertTrue(policy.getBindings().get(StorageRoles.admin()).contains(Identity.user(USER_EMAIL))); + Policy snippetPolicy = bucketIamSnippets.addBucketIamMember(BUCKET, StorageRoles.admin(), + Identity.user(USER_EMAIL)); + assertTrue(snippetPolicy.getBindings().get(StorageRoles.admin()). + contains(Identity.user(USER_EMAIL))); } @Test public void testRemoveBucketIamMember() { // Test a member is removed from Bucket-level IAM Policy policy = storage.getIamPolicy(BUCKET); - storage.setIamPolicy(BUCKET, policy.toBuilder().removeRole(StorageRoles.admin()).build()); - policy = storage.getIamPolicy(BUCKET); + policy = storage.setIamPolicy(BUCKET, + policy.toBuilder().removeRole(StorageRoles.admin()).build()); assertNull(policy.getBindings().get(StorageRoles.admin())); - policy = policy.toBuilder().addIdentity(StorageRoles.admin(), - Identity.user(USER_EMAIL)).build(); - storage.setIamPolicy(BUCKET, policy); - policy = storage.getIamPolicy(BUCKET); + policy = storage.setIamPolicy(BUCKET, policy.toBuilder().addIdentity(StorageRoles.admin(), + Identity.user(USER_EMAIL)).build()); assertTrue(policy.getBindings().get(StorageRoles.admin()).contains(Identity.user(USER_EMAIL))); - bucketIamSnippets.removeBucketIamMember(BUCKET, StorageRoles.admin(), + Policy snippetPolicy = bucketIamSnippets.removeBucketIamMember(BUCKET, StorageRoles.admin(), Identity.user(USER_EMAIL)); - policy = storage.getIamPolicy(BUCKET); - assertNull(policy.getBindings().get(StorageRoles.admin())); + assertNull(snippetPolicy.getBindings().get(StorageRoles.admin())); } }