@Override protected Policy fromPb(com.google.api.services.cloudresourcemanager.model.Policy policyPb) { Map<Role, Set<Identity>> bindings = new HashMap<>(); if (policyPb.getBindings() != null) { for (Binding bindingPb : policyPb.getBindings()) { bindings.put( Role.of(bindingPb.getRole()), ImmutableSet.copyOf( Lists.transform( bindingPb.getMembers(), new Function<String, Identity>() { @Override public Identity apply(String s) { return IDENTITY_VALUE_OF_FUNCTION.apply(s); } }))); } } return new Builder(bindings, policyPb.getEtag(), policyPb.getVersion()).build(); }
@Test public void testGetPolicy() { assertNull(rpc.getPolicy("nonexistent-project")); rpc.create(PARTIAL_PROJECT); com.google.api.services.cloudresourcemanager.model.Policy policy = rpc.getPolicy(PARTIAL_PROJECT.getProjectId()); assertEquals(Collections.emptyList(), policy.getBindings()); assertNotNull(policy.getEtag()); }
com.google.api.services.cloudresourcemanager.model.Policy policy = rpc.getPolicy(PARTIAL_PROJECT.getProjectId()); assertEquals(Collections.emptyList(), policy.getBindings()); assertNotNull(policy.getEtag()); assertEquals(0, policy.getVersion().intValue()); rpc.replacePolicy(PARTIAL_PROJECT.getProjectId(), POLICY); assertEquals(POLICY.getBindings(), rpc.getPolicy(PARTIAL_PROJECT.getProjectId()).getBindings()); try { rpc.create(PARTIAL_PROJECT); && e.getMessage().endsWith("already exists.")); assertEquals( POLICY.getBindings(), rpc.getPolicy(PARTIAL_PROJECT.getProjectId()).getBindings());
@Test public void testReplacePolicy() { try { rpc.replacePolicy("nonexistent-project", POLICY); fail("Project doesn't exist."); } catch (ResourceManagerException e) { assertEquals(403, e.getCode()); assertTrue(e.getMessage().contains("project was not found")); } rpc.create(PARTIAL_PROJECT); com.google.api.services.cloudresourcemanager.model.Policy invalidPolicy = new com.google.api.services.cloudresourcemanager.model.Policy().setEtag("wrong-etag"); try { rpc.replacePolicy(PARTIAL_PROJECT.getProjectId(), invalidPolicy); fail("Invalid etag."); } catch (ResourceManagerException e) { assertEquals(409, e.getCode()); assertTrue(e.getMessage().startsWith("Policy etag mismatch")); } String originalEtag = rpc.getPolicy(PARTIAL_PROJECT.getProjectId()).getEtag(); com.google.api.services.cloudresourcemanager.model.Policy newPolicy = rpc.replacePolicy(PARTIAL_PROJECT.getProjectId(), POLICY); assertEquals(POLICY.getBindings(), newPolicy.getBindings()); assertNotNull(newPolicy.getEtag()); assertNotEquals(originalEtag, newPolicy.getEtag()); }
private Optional<String> projectPolicyAccess(String projectId, String principalEmail) { final com.google.api.services.cloudresourcemanager.model.Policy policy = getProjectPolicy(projectId) .orElseThrow(() -> new ResponseException(Response.forStatus( BAD_REQUEST.withReasonPhrase("Project does not exist: " + projectId)))); final List<String> members = emptyListIfNull(policy.getBindings()).stream() .filter(binding -> serviceAccountUserRole.equals(binding.getRole())) .flatMap(binding -> emptyListIfNull(binding.getMembers()).stream()) .collect(toList()); return memberStatus(principalEmail, members); }
static Policy fromPb( com.google.api.services.cloudresourcemanager.model.Policy policyPb) { Map<String, Set<Identity>> bindings = new HashMap<>(); for (com.google.api.services.cloudresourcemanager.model.Binding bindingPb : policyPb.getBindings()) { bindings.put( bindingPb.getRole(), ImmutableSet.copyOf( Lists.transform( bindingPb.getMembers(), new Function<String, Identity>() { @Override public Identity apply(String identityPb) { return Identity.valueOf(identityPb); } }))); } return new Policy.Builder(bindings, policyPb.getEtag(), policyPb.getVersion()).build(); } }
static Policy fromPb( com.google.api.services.cloudresourcemanager.model.Policy policyPb) { Map<String, Set<Identity>> bindings = new HashMap<>(); for (com.google.api.services.cloudresourcemanager.model.Binding bindingPb : policyPb.getBindings()) { bindings.put( bindingPb.getRole(), ImmutableSet.copyOf( Lists.transform( bindingPb.getMembers(), new Function<String, Identity>() { @Override public Identity apply(String identityPb) { return Identity.valueOf(identityPb); } }))); } return new Policy.Builder(bindings, policyPb.getEtag(), policyPb.getVersion()).build(); } }
.getIamPolicy(cloudProject.projectId(), new GetIamPolicyRequest()) .execute(); List<Binding> bindings = Lists.newArrayList(existingPolicy.getBindings());