@Override protected com.google.api.services.cloudresourcemanager.model.Policy toPb(Policy policy) { com.google.api.services.cloudresourcemanager.model.Policy policyPb = new com.google.api.services.cloudresourcemanager.model.Policy(); List<Binding> bindingPbList = new LinkedList<>(); for (Map.Entry<Role, Set<Identity>> binding : policy.getBindings().entrySet()) { Binding bindingPb = new Binding(); bindingPb.setRole(binding.getKey().getValue()); bindingPb.setMembers( Lists.transform( new ArrayList<>(binding.getValue()), new Function<Identity, String>() { @Override public String apply(Identity identity) { return IDENTITY_STR_VALUE_FUNCTION.apply(identity); } })); bindingPbList.add(bindingPb); } policyPb.setBindings(bindingPbList); policyPb.setEtag(policy.getEtag()); policyPb.setVersion(policy.getVersion()); return policyPb; } }
new Policy() .setBindings(Collections.<Binding>emptyList()) .setEtag(UUID.randomUUID().toString())
@Test public void testToAndFromPb() { assertEquals( FULL_POLICY, PolicyMarshaller.INSTANCE.fromPb(PolicyMarshaller.INSTANCE.toPb(FULL_POLICY))); assertEquals( SIMPLE_POLICY, PolicyMarshaller.INSTANCE.fromPb(PolicyMarshaller.INSTANCE.toPb(SIMPLE_POLICY))); com.google.api.services.cloudresourcemanager.model.Policy policyPb = new com.google.api.services.cloudresourcemanager.model.Policy(); Policy policy = PolicyMarshaller.INSTANCE.fromPb(policyPb); assertTrue(policy.getBindings().isEmpty()); assertNull(policy.getEtag()); assertEquals(0, policy.getVersion()); } }
@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 void setupFakePolicy() { policy = new Policy(); policy.setBindings(ImmutableList.of()); } }
com.google.api.services.cloudresourcemanager.model.Policy toPb() { com.google.api.services.cloudresourcemanager.model.Policy policyPb = new com.google.api.services.cloudresourcemanager.model.Policy(); List<com.google.api.services.cloudresourcemanager.model.Binding> bindingPbList = new LinkedList<>(); for (Map.Entry<String, Set<Identity>> binding : bindings().entrySet()) { com.google.api.services.cloudresourcemanager.model.Binding bindingPb = new com.google.api.services.cloudresourcemanager.model.Binding(); bindingPb.setRole(binding.getKey()); bindingPb.setMembers( Lists.transform( new ArrayList<>(binding.getValue()), new Function<Identity, String>() { @Override public String apply(Identity identity) { return identity.strValue(); } })); bindingPbList.add(bindingPb); } policyPb.setBindings(bindingPbList); policyPb.setEtag(etag()); policyPb.setVersion(version()); return policyPb; }
com.google.api.services.cloudresourcemanager.model.Policy toPb() { com.google.api.services.cloudresourcemanager.model.Policy policyPb = new com.google.api.services.cloudresourcemanager.model.Policy(); List<com.google.api.services.cloudresourcemanager.model.Binding> bindingPbList = new LinkedList<>(); for (Map.Entry<String, Set<Identity>> binding : bindings().entrySet()) { com.google.api.services.cloudresourcemanager.model.Binding bindingPb = new com.google.api.services.cloudresourcemanager.model.Binding(); bindingPb.setRole(binding.getKey()); bindingPb.setMembers( Lists.transform( new ArrayList<>(binding.getValue()), new Function<Identity, String>() { @Override public String apply(Identity identity) { return identity.strValue(); } })); bindingPbList.add(bindingPb); } policyPb.setBindings(bindingPbList); policyPb.setEtag(etag()); policyPb.setVersion(version()); return policyPb; }
synchronized Response create(Project project) { String customErrorMessage = checkForProjectErrors(project); if (customErrorMessage != null) { return Error.INVALID_ARGUMENT.response(customErrorMessage); } else { project.setLifecycleState("ACTIVE"); project.setProjectNumber(Math.abs(PROJECT_NUMBER_GENERATOR.nextLong() % Long.MAX_VALUE)); project.setCreateTime(ISODateTimeFormat.dateTime().print(System.currentTimeMillis())); if (projects.putIfAbsent(project.getProjectId(), project) != null) { return Error.ALREADY_EXISTS.response( "A project with the same project ID (" + project.getProjectId() + ") already exists."); } Policy emptyPolicy = new Policy() .setBindings(Collections.<Binding>emptyList()) .setEtag(UUID.randomUUID().toString()) .setVersion(0); policies.put(project.getProjectId(), emptyPolicy); try { String createdProjectStr = jsonFactory.toString(project); return new Response(HTTP_OK, createdProjectStr); } catch (IOException e) { return Error.INTERNAL_ERROR.response("Error serializing project " + project.getProjectId()); } } }
synchronized Response create(Project project) { String customErrorMessage = checkForProjectErrors(project); if (customErrorMessage != null) { return Error.INVALID_ARGUMENT.response(customErrorMessage); } else { project.setLifecycleState("ACTIVE"); project.setProjectNumber(Math.abs(PROJECT_NUMBER_GENERATOR.nextLong() % Long.MAX_VALUE)); project.setCreateTime(ISODateTimeFormat.dateTime().print(System.currentTimeMillis())); if (projects.putIfAbsent(project.getProjectId(), project) != null) { return Error.ALREADY_EXISTS.response( "A project with the same project ID (" + project.getProjectId() + ") already exists."); } Policy emptyPolicy = new Policy() .setBindings(Collections.<Binding>emptyList()) .setEtag(UUID.randomUUID().toString()) .setVersion(0); policies.put(project.getProjectId(), emptyPolicy); try { String createdProjectStr = jsonFactory.toString(project); return new Response(HTTP_OK, createdProjectStr); } catch (IOException e) { return Error.INTERNAL_ERROR.response("Error serializing project " + project.getProjectId()); } } }
Policy newPolicy = new Policy(); newPolicy.setBindings(bindings); policyRequest.setPolicy(newPolicy);