From 13017f564f7f2dbb64398ff039a9288dfaa27115 Mon Sep 17 00:00:00 2001 From: athakor Date: Fri, 27 Mar 2020 17:51:44 +0530 Subject: [PATCH 1/5] feat: implement testPermission api of organization --- clirr-ignored-differences.xml | 14 +++++++ .../resourcemanager/ResourceManager.java | 10 +++++ .../resourcemanager/ResourceManagerImpl.java | 18 +++++++++ .../spi/v1beta1/HttpResourceManagerRpc.java | 21 ++++++++++ .../spi/v1beta1/ResourceManagerRpc.java | 7 +++- .../ResourceManagerImplTest.java | 38 +++++++++++++++++++ 6 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 clirr-ignored-differences.xml diff --git a/clirr-ignored-differences.xml b/clirr-ignored-differences.xml new file mode 100644 index 00000000..8a682cfe --- /dev/null +++ b/clirr-ignored-differences.xml @@ -0,0 +1,14 @@ + + + + + com/google/cloud/resourcemanager/ResourceManager + java.util.List testOrgPermissions(java.lang.String, java.util.List) + 7012 + + + com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc + java.util.List testOrgPermissions(java.lang.String, java.util.List) + 7012 + + diff --git a/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java b/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java index 9da15800..568f3c10 100644 --- a/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java +++ b/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java @@ -337,4 +337,14 @@ public static ProjectListOption fields(ProjectField... fields) { * Platform Services */ List testPermissions(String projectId, List permissions); + + /** + * Returns permissions that the caller has on the specified Organization. + * + * @throws ResourceManagerException upon failure + * @see + * Resource Manager testIamPermissions + */ + List testOrgPermissions(String resource, List permissions); } diff --git a/src/main/java/com/google/cloud/resourcemanager/ResourceManagerImpl.java b/src/main/java/com/google/cloud/resourcemanager/ResourceManagerImpl.java index 7651e645..686e6024 100644 --- a/src/main/java/com/google/cloud/resourcemanager/ResourceManagerImpl.java +++ b/src/main/java/com/google/cloud/resourcemanager/ResourceManagerImpl.java @@ -273,6 +273,24 @@ public List call() { } } + @Override + public List testOrgPermissions(final String resource, final List permissions) { + try { + return runWithRetries( + new Callable>() { + @Override + public List call() { + return resourceManagerRpc.testOrgPermissions(resource, permissions); + } + }, + getOptions().getRetrySettings(), + EXCEPTION_HANDLER, + getOptions().getClock()); + } catch (RetryHelperException ex) { + throw ResourceManagerException.translateAndThrow(ex); + } + } + private Map optionMap(Option... options) { Map temp = Maps.newEnumMap(ResourceManagerRpc.Option.class); for (Option option : options) { diff --git a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java index c5b1150c..acc34f13 100644 --- a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java +++ b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java @@ -301,4 +301,25 @@ projectId, new TestIamPermissionsRequest().setPermissions(permissions)) throw translate(ex); } } + + @Override + public List testOrgPermissions(String resource, List permissions) { + try { + TestIamPermissionsResponse response = + resourceManager + .organizations() + .testIamPermissions( + resource, new TestIamPermissionsRequest().setPermissions(permissions)) + .execute(); + Set permissionsOwned = + ImmutableSet.copyOf(firstNonNull(response.getPermissions(), ImmutableList.of())); + ImmutableList.Builder answer = ImmutableList.builder(); + for (String p : permissions) { + answer.add(permissionsOwned.contains(p)); + } + return answer.build(); + } catch (IOException ex) { + throw translate(ex); + } + } } diff --git a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java index 937e1a6e..6c823d7a 100644 --- a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java +++ b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java @@ -124,5 +124,10 @@ Integer getInt(Map options) { */ List testPermissions(String projectId, List permissions); - // TODO(ajaykannan): implement "Organization" functionality when available (issue #319) + /** + * Returns permissions that the caller has on the specified Organization. + * + * @throws ResourceManagerException upon failure + */ + List testOrgPermissions(String resource, List permissions); } diff --git a/src/test/java/com/google/cloud/resourcemanager/ResourceManagerImplTest.java b/src/test/java/com/google/cloud/resourcemanager/ResourceManagerImplTest.java index 9d4ae0ff..7896c811 100644 --- a/src/test/java/com/google/cloud/resourcemanager/ResourceManagerImplTest.java +++ b/src/test/java/com/google/cloud/resourcemanager/ResourceManagerImplTest.java @@ -456,4 +456,42 @@ public void testRuntimeException() { assertEquals(exceptionMessage, exception.getCause().getMessage()); } } + + @Test + public void testTestOrgPermissions() { + ResourceManagerRpcFactory rpcFactoryMock = EasyMock.createMock(ResourceManagerRpcFactory.class); + ResourceManagerRpc resourceManagerRpcMock = EasyMock.createMock(ResourceManagerRpc.class); + EasyMock.expect(rpcFactoryMock.create(EasyMock.anyObject(ResourceManagerOptions.class))) + .andReturn(resourceManagerRpcMock); + EasyMock.replay(rpcFactoryMock); + ResourceManager resourceManagerMock = + ResourceManagerOptions.newBuilder() + .setServiceRpcFactory(rpcFactoryMock) + .build() + .getService(); + String organization = "organization/12345"; + List permissions = + ImmutableList.of( + "resourcemanager.organizations.get", "resourcemanager.organizations.getIamPolicy"); + List booleans = ImmutableList.of(true, false); + EasyMock.expect(resourceManagerRpcMock.testOrgPermissions(organization, permissions)) + .andReturn(booleans); + EasyMock.replay(resourceManagerRpcMock); + List values = resourceManagerMock.testOrgPermissions(organization, permissions); + assertEquals(booleans, values); + } + + @Test + public void testTestOrgPermissionsWithException() { + List permissions = + ImmutableList.of( + "resourcemanager.organizations.get", "resourcemanager.organizations.getIamPolicy"); + try { + RESOURCE_MANAGER.testOrgPermissions("organizations/12345", permissions); + fail(); + } catch (ResourceManagerException exception) { + assertEquals(404, exception.getCode()); + assertTrue(exception.getMessage().contains("Not Found")); + } + } } From 3960773217cf37e558d5c0f6bd869c3fd18c0487 Mon Sep 17 00:00:00 2001 From: athakor Date: Mon, 30 Mar 2020 11:22:03 +0530 Subject: [PATCH 2/5] feat: modified java doc --- .../com/google/cloud/resourcemanager/ResourceManager.java | 7 ++++++- .../spi/v1beta1/HttpResourceManagerRpc.java | 4 ++-- .../resourcemanager/spi/v1beta1/ResourceManagerRpc.java | 4 +++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java b/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java index 568f3c10..44e2b0f6 100644 --- a/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java +++ b/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java @@ -339,8 +339,13 @@ public static ProjectListOption fields(ProjectField... fields) { List testPermissions(String projectId, List permissions); /** - * Returns permissions that the caller has on the specified Organization. + * Returns a list of booleans representing whether the caller has the permissions on the specified + * Organization. * + * @param resource the organization's resource name, e.g. "organizations/123" + * @param permissions a list of permissions, e.g. "resourcemanager.organizations.get" + * @return A list of booleans representing whether the caller has the permissions specified (in + * the order of the given permissions) * @throws ResourceManagerException upon failure * @see diff --git a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java index acc34f13..93cd9e14 100644 --- a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java +++ b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java @@ -314,8 +314,8 @@ resource, new TestIamPermissionsRequest().setPermissions(permissions)) Set permissionsOwned = ImmutableSet.copyOf(firstNonNull(response.getPermissions(), ImmutableList.of())); ImmutableList.Builder answer = ImmutableList.builder(); - for (String p : permissions) { - answer.add(permissionsOwned.contains(p)); + for (String permission : permissions) { + answer.add(permissionsOwned.contains(permission)); } return answer.build(); } catch (IOException ex) { diff --git a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java index 6c823d7a..af19c4c1 100644 --- a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java +++ b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java @@ -125,7 +125,9 @@ Integer getInt(Map options) { List testPermissions(String projectId, List permissions); /** - * Returns permissions that the caller has on the specified Organization. + * Tests whether the caller has the given permissions on the specified Organization. Returns a + * list of booleans corresponding to whether or not the user has the permission in the same + * position of input list. * * @throws ResourceManagerException upon failure */ From 2d2c781d5f44b77fe1edf55bdaef5d205cafb592 Mon Sep 17 00:00:00 2001 From: athakor Date: Mon, 30 Mar 2020 11:38:17 +0530 Subject: [PATCH 3/5] feat: modified java doc --- .../java/com/google/cloud/resourcemanager/ResourceManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java b/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java index 44e2b0f6..c6fa6e50 100644 --- a/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java +++ b/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java @@ -343,7 +343,8 @@ public static ProjectListOption fields(ProjectField... fields) { * Organization. * * @param resource the organization's resource name, e.g. "organizations/123" - * @param permissions a list of permissions, e.g. "resourcemanager.organizations.get" + * @param permissions the set of permissions to check for the resource. Permissions with wildcards + * (such as '*' or 'storage.*') are not allowed * @return A list of booleans representing whether the caller has the permissions specified (in * the order of the given permissions) * @throws ResourceManagerException upon failure From 96cdd7c0c2463822bd7a4d2b0a456593d24a35a7 Mon Sep 17 00:00:00 2001 From: athakor Date: Tue, 7 Apr 2020 13:23:44 +0530 Subject: [PATCH 4/5] feat: fix review changes --- clirr-ignored-differences.xml | 4 +- pom.xml | 7 ++ .../resourcemanager/ResourceManager.java | 13 ++-- .../ResourceManagerException.java | 2 +- .../resourcemanager/ResourceManagerImpl.java | 8 ++- .../spi/v1beta1/HttpResourceManagerRpc.java | 12 ++-- .../spi/v1beta1/ResourceManagerRpc.java | 10 +-- .../ResourceManagerImplTest.java | 69 ++++++++++++------- 8 files changed, 81 insertions(+), 44 deletions(-) diff --git a/clirr-ignored-differences.xml b/clirr-ignored-differences.xml index 8a682cfe..da1f3c38 100644 --- a/clirr-ignored-differences.xml +++ b/clirr-ignored-differences.xml @@ -3,12 +3,12 @@ com/google/cloud/resourcemanager/ResourceManager - java.util.List testOrgPermissions(java.lang.String, java.util.List) + java.util.Map testOrgPermissions(java.lang.String, java.util.List) 7012 com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc - java.util.List testOrgPermissions(java.lang.String, java.util.List) + java.util.Map testOrgPermissions(java.lang.String, java.util.List) 7012 diff --git a/pom.xml b/pom.xml index 84c6d98c..92628397 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,7 @@ 1.93.3 1.30.9 3.6 + 1.10.19 2.6 0.20.0 1.34.2 @@ -205,6 +206,12 @@ + + org.mockito + mockito-all + ${mockito.version} + test + org.objenesis objenesis diff --git a/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java b/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java index c6fa6e50..b2a46edf 100644 --- a/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java +++ b/src/main/java/com/google/cloud/resourcemanager/ResourceManager.java @@ -24,6 +24,7 @@ import com.google.cloud.resourcemanager.spi.v1beta1.ResourceManagerRpc; import com.google.common.collect.ImmutableList; import java.util.List; +import java.util.Map; /** * An interface for Google Cloud Resource Manager. @@ -339,18 +340,18 @@ public static ProjectListOption fields(ProjectField... fields) { List testPermissions(String projectId, List permissions); /** - * Returns a list of booleans representing whether the caller has the permissions on the specified - * Organization. + * Returns the permissions and their results representing whether the caller has the permissions + * on the specified Organization. * * @param resource the organization's resource name, e.g. "organizations/123" * @param permissions the set of permissions to check for the resource. Permissions with wildcards - * (such as '*' or 'storage.*') are not allowed - * @return A list of booleans representing whether the caller has the permissions specified (in - * the order of the given permissions) + * (such as '*' or 'storage.*') are not allowed. + * @return the permissions and their results representing whether the caller has the permissions + * on the specified Organization. * @throws ResourceManagerException upon failure * @see * Resource Manager testIamPermissions */ - List testOrgPermissions(String resource, List permissions); + Map testOrgPermissions(String resource, List permissions); } diff --git a/src/main/java/com/google/cloud/resourcemanager/ResourceManagerException.java b/src/main/java/com/google/cloud/resourcemanager/ResourceManagerException.java index e8c7f8d0..cc820ee0 100644 --- a/src/main/java/com/google/cloud/resourcemanager/ResourceManagerException.java +++ b/src/main/java/com/google/cloud/resourcemanager/ResourceManagerException.java @@ -66,7 +66,7 @@ public ResourceManagerException(IOException exception) { * @throws ResourceManagerException when {@code ex} was caused by a {@code * ResourceManagerException} */ - static ResourceManagerException translateAndThrow(RetryHelperException ex) { + public static ResourceManagerException translateAndThrow(RetryHelperException ex) { BaseServiceException.translate(ex); throw new ResourceManagerException(UNKNOWN_CODE, ex.getMessage(), ex.getCause()); } diff --git a/src/main/java/com/google/cloud/resourcemanager/ResourceManagerImpl.java b/src/main/java/com/google/cloud/resourcemanager/ResourceManagerImpl.java index 686e6024..557567d9 100644 --- a/src/main/java/com/google/cloud/resourcemanager/ResourceManagerImpl.java +++ b/src/main/java/com/google/cloud/resourcemanager/ResourceManagerImpl.java @@ -32,6 +32,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.common.collect.Maps; +import java.io.IOException; import java.util.List; import java.util.Map; import java.util.concurrent.Callable; @@ -274,12 +275,13 @@ public List call() { } @Override - public List testOrgPermissions(final String resource, final List permissions) { + public Map testOrgPermissions( + final String resource, final List permissions) { try { return runWithRetries( - new Callable>() { + new Callable>() { @Override - public List call() { + public Map call() throws IOException { return resourceManagerRpc.testOrgPermissions(resource, permissions); } }, diff --git a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java index 93cd9e14..12e53a91 100644 --- a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java +++ b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/HttpResourceManagerRpc.java @@ -40,6 +40,7 @@ import com.google.api.services.cloudresourcemanager.model.TestIamPermissionsRequest; import com.google.api.services.cloudresourcemanager.model.TestIamPermissionsResponse; import com.google.api.services.cloudresourcemanager.model.UndeleteProjectRequest; +import com.google.cloud.RetryHelper; import com.google.cloud.Tuple; import com.google.cloud.http.BaseHttpServiceException; import com.google.cloud.http.HttpTransportOptions; @@ -303,7 +304,8 @@ projectId, new TestIamPermissionsRequest().setPermissions(permissions)) } @Override - public List testOrgPermissions(String resource, List permissions) { + public Map testOrgPermissions(String resource, List permissions) + throws IOException { try { TestIamPermissionsResponse response = resourceManager @@ -313,13 +315,13 @@ resource, new TestIamPermissionsRequest().setPermissions(permissions)) .execute(); Set permissionsOwned = ImmutableSet.copyOf(firstNonNull(response.getPermissions(), ImmutableList.of())); - ImmutableList.Builder answer = ImmutableList.builder(); + ImmutableMap.Builder answer = ImmutableMap.builder(); for (String permission : permissions) { - answer.add(permissionsOwned.contains(permission)); + answer.put(permission, permissionsOwned.contains(permission)); } return answer.build(); - } catch (IOException ex) { - throw translate(ex); + } catch (RetryHelper.RetryHelperException ex) { + throw ResourceManagerException.translateAndThrow(ex); } } } diff --git a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java index af19c4c1..f1d6744d 100644 --- a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java +++ b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java @@ -21,6 +21,7 @@ import com.google.cloud.ServiceRpc; import com.google.cloud.Tuple; import com.google.cloud.resourcemanager.ResourceManagerException; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -125,11 +126,12 @@ Integer getInt(Map options) { List testPermissions(String projectId, List permissions); /** - * Tests whether the caller has the given permissions on the specified Organization. Returns a - * list of booleans corresponding to whether or not the user has the permission in the same - * position of input list. + * Tests whether the caller has the given permissions on the specified Organization. Returns the + * permissions and their results corresponding to whether or not the user has the permission in + * the same position of input list. * * @throws ResourceManagerException upon failure */ - List testOrgPermissions(String resource, List permissions); + Map testOrgPermissions(String resource, List permissions) + throws IOException; } diff --git a/src/test/java/com/google/cloud/resourcemanager/ResourceManagerImplTest.java b/src/test/java/com/google/cloud/resourcemanager/ResourceManagerImplTest.java index 7896c811..1fdb954f 100644 --- a/src/test/java/com/google/cloud/resourcemanager/ResourceManagerImplTest.java +++ b/src/test/java/com/google/cloud/resourcemanager/ResourceManagerImplTest.java @@ -24,6 +24,9 @@ import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import com.google.api.gax.paging.Page; import com.google.cloud.Identity; @@ -38,6 +41,7 @@ import com.google.cloud.resourcemanager.testing.LocalResourceManagerHelper; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -46,7 +50,11 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; +@RunWith(MockitoJUnitRunner.class) public class ResourceManagerImplTest { private static final LocalResourceManagerHelper RESOURCE_MANAGER_HELPER = @@ -75,6 +83,9 @@ public class ResourceManagerImplTest { .addIdentity(Role.editor(), Identity.serviceAccount("serviceaccount@gmail.com")) .build(); + private ResourceManagerRpcFactory rpcFactoryMock = Mockito.mock(ResourceManagerRpcFactory.class); + private ResourceManagerRpc resourceManagerRpcMock = Mockito.mock(ResourceManagerRpc.class); + @BeforeClass public static void beforeClass() { RESOURCE_MANAGER_HELPER.start(); @@ -458,40 +469,52 @@ public void testRuntimeException() { } @Test - public void testTestOrgPermissions() { - ResourceManagerRpcFactory rpcFactoryMock = EasyMock.createMock(ResourceManagerRpcFactory.class); - ResourceManagerRpc resourceManagerRpcMock = EasyMock.createMock(ResourceManagerRpc.class); - EasyMock.expect(rpcFactoryMock.create(EasyMock.anyObject(ResourceManagerOptions.class))) - .andReturn(resourceManagerRpcMock); - EasyMock.replay(rpcFactoryMock); - ResourceManager resourceManagerMock = - ResourceManagerOptions.newBuilder() - .setServiceRpcFactory(rpcFactoryMock) - .build() - .getService(); + public void testTestOrgPermissions() throws IOException { String organization = "organization/12345"; List permissions = ImmutableList.of( "resourcemanager.organizations.get", "resourcemanager.organizations.getIamPolicy"); - List booleans = ImmutableList.of(true, false); - EasyMock.expect(resourceManagerRpcMock.testOrgPermissions(organization, permissions)) - .andReturn(booleans); - EasyMock.replay(resourceManagerRpcMock); - List values = resourceManagerMock.testOrgPermissions(organization, permissions); - assertEquals(booleans, values); + Map expected = + ImmutableMap.of( + "resourcemanager.organizations.get", + true, + "resourcemanager.organizations.getIamPolicy", + false); + when(rpcFactoryMock.create(Mockito.any(ResourceManagerOptions.class))) + .thenReturn(resourceManagerRpcMock); + ResourceManager resourceManager = + ResourceManagerOptions.newBuilder() + .setServiceRpcFactory(rpcFactoryMock) + .build() + .getService(); + when(resourceManagerRpcMock.testOrgPermissions(organization, permissions)).thenReturn(expected); + Map actual = resourceManager.testOrgPermissions(organization, permissions); + assertEquals(expected, actual); + verify(resourceManagerRpcMock).testOrgPermissions(organization, permissions); } @Test - public void testTestOrgPermissionsWithException() { + public void testTestOrgPermissionsWithResourceManagerException() throws IOException { + String organization = "organizations/12345"; + String exceptionMessage = "Not Found"; List permissions = ImmutableList.of( "resourcemanager.organizations.get", "resourcemanager.organizations.getIamPolicy"); + when(rpcFactoryMock.create(Mockito.any(ResourceManagerOptions.class))) + .thenReturn(resourceManagerRpcMock); + ResourceManager resourceManager = + ResourceManagerOptions.newBuilder() + .setServiceRpcFactory(rpcFactoryMock) + .build() + .getService(); + doThrow(new ResourceManagerException(404, exceptionMessage)) + .when(resourceManagerRpcMock) + .testOrgPermissions(organization, permissions); try { - RESOURCE_MANAGER.testOrgPermissions("organizations/12345", permissions); - fail(); - } catch (ResourceManagerException exception) { - assertEquals(404, exception.getCode()); - assertTrue(exception.getMessage().contains("Not Found")); + resourceManager.testOrgPermissions(organization, permissions); + } catch (ResourceManagerException expected) { + assertEquals(404, expected.getCode()); + assertEquals(exceptionMessage, expected.getMessage()); } } } From 8ad5c75130688a8d6504e561193cdc43370c2daf Mon Sep 17 00:00:00 2001 From: athakor Date: Tue, 7 Apr 2020 16:58:17 +0530 Subject: [PATCH 5/5] feat: fix javadoc --- .../cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java index f1d6744d..dc45f31d 100644 --- a/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java +++ b/src/main/java/com/google/cloud/resourcemanager/spi/v1beta1/ResourceManagerRpc.java @@ -127,8 +127,7 @@ Integer getInt(Map options) { /** * Tests whether the caller has the given permissions on the specified Organization. Returns the - * permissions and their results corresponding to whether or not the user has the permission in - * the same position of input list. + * permissions and their results. * * @throws ResourceManagerException upon failure */