@Test public void testPatch() throws Throwable { UserState state = new UserState(); state.email = "jane@doe.com"; state.documentSelfLink = UUID.randomUUID().toString(); state.userGroupLinks = new HashSet<String>(); state.userGroupLinks.add("link1"); state.userGroupLinks.add("link2"); UserState responseState = this.host.verifyPost(UserState.class, ServiceUriPaths.CORE_AUTHZ_USERS, state, Operation.STATUS_CODE_OK); assertEquals(state.email, responseState.email); assertEquals(state.userGroupLinks.size(), state.userGroupLinks.size()); state.email = "john@doe.com"; state.userGroupLinks.clear(); state.userGroupLinks.add("link2"); state.userGroupLinks.add("link3"); String path = UriUtils.buildUriPath(ServiceUriPaths.CORE_AUTHZ_USERS, state.documentSelfLink); Operation op = Operation.createPatch(this.host, path).setBody(state); UserState patchedState = this.sender.sendAndWait(op, UserState.class); assertEquals(state.email, patchedState.email); assertEquals(3, patchedState.userGroupLinks.size()); }
@Test public void testPatch() throws Throwable { UserState state = new UserState(); state.email = "jane@doe.com"; state.documentSelfLink = UUID.randomUUID().toString(); state.userGroupLinks = new HashSet<String>(); state.userGroupLinks.add("link1"); state.userGroupLinks.add("link2"); UserState responseState = this.host.verifyPost(UserState.class, ServiceUriPaths.CORE_AUTHZ_USERS, state, Operation.STATUS_CODE_OK); assertEquals(state.email, responseState.email); assertEquals(state.userGroupLinks.size(), state.userGroupLinks.size()); state.email = "john@doe.com"; state.userGroupLinks.clear(); state.userGroupLinks.add("link2"); state.userGroupLinks.add("link3"); String path = UriUtils.buildUriPath(ServiceUriPaths.CORE_AUTHZ_USERS, state.documentSelfLink); Operation op = Operation.createPatch(this.host, path).setBody(state); UserState patchedState = this.sender.sendAndWait(op, UserState.class); assertEquals(state.email, patchedState.email); assertEquals(3, patchedState.userGroupLinks.size()); }
UserState userState = new UserState(); userState.email = userName; userState.userGroupLinks = Collections.singleton(groupState.documentSelfLink);
UserState user = new UserState(); user.email = this.userEmail; if (this.userSelfLink != null) {
@Test public void testFactoryIdempotentPost() throws Throwable { String email = "jane@doe.com"; String servicePath = UriUtils.buildUriPath(UserService.FACTORY_LINK, email); UserState state = new UserState(); state.email = email; state.documentSelfLink = servicePath; UserState responseState = this.host.verifyPost(UserState.class, ServiceUriPaths.CORE_AUTHZ_USERS, state, Operation.STATUS_CODE_OK); assertEquals(state.email,responseState.email); long initialVersion = responseState.documentVersion; // sending same document, this post/put should not persist(increment) the document responseState = this.host.verifyPost(UserState.class, ServiceUriPaths.CORE_AUTHZ_USERS, state, Operation.STATUS_CODE_OK); assertEquals(state.email,responseState.email); UserState getState = this.sender.sendAndWait(Operation.createGet(this.host, servicePath), UserState.class); assertEquals("version should not increase", initialVersion, getState.documentVersion); state.email = "john@doe.com"; responseState = this.host.verifyPost(UserState.class, ServiceUriPaths.CORE_AUTHZ_USERS, state, Operation.STATUS_CODE_OK); assertEquals(state.email, responseState.email); assertTrue("version should increase", initialVersion < responseState.documentVersion); }
/** * Patch a user with the link of the userGroup that was just created */ private void updateUserGroupForUser() { if (!this.updateUserGroupForUser) { this.currentStep = UserCreationStep.MAKE_RESOURCE_GROUP; setupUser(); return; } UserState userState = new UserState(); userState.userGroupLinks = Collections.singleton(this.userGroupSelfLink); Operation patchUser = Operation.createPatch(AuthUtils .buildAuthProviderHostUri(this.host, this.userSelfLink)) .setBody(userState) .setReferer(this.referer) .setCompletion((op, ex) -> { if (ex != null) { this.failureMessage = String.format( "Could not patch user %s: %s", this.userSelfLink, ex); this.currentStep = UserCreationStep.FAILURE; setupUser(); return; } this.currentStep = UserCreationStep.MAKE_RESOURCE_GROUP; setupUser(); }); addReplicationFactor(patchUser); this.host.sendRequest(patchUser); }
@Test public void testFactoryIdempotentPost() throws Throwable { String email = "jane@doe.com"; String servicePath = UriUtils.buildUriPath(UserService.FACTORY_LINK, email); UserState state = new UserState(); state.email = email; state.documentSelfLink = servicePath; UserState responseState = this.host.verifyPost(UserState.class, ServiceUriPaths.CORE_AUTHZ_USERS, state, Operation.STATUS_CODE_OK); assertEquals(state.email,responseState.email); long initialVersion = responseState.documentVersion; // sending same document, this post/put should not persist(increment) the document responseState = this.host.verifyPost(UserState.class, ServiceUriPaths.CORE_AUTHZ_USERS, state, Operation.STATUS_CODE_OK); assertEquals(state.email,responseState.email); UserState getState = this.sender.sendAndWait(Operation.createGet(this.host, servicePath), UserState.class); assertEquals("version should not increase", initialVersion, getState.documentVersion); state.email = "john@doe.com"; responseState = this.host.verifyPost(UserState.class, ServiceUriPaths.CORE_AUTHZ_USERS, state, Operation.STATUS_CODE_OK); assertEquals(state.email, responseState.email); assertTrue("version should increase", initialVersion < responseState.documentVersion); }
@Test public void testInvalidUserAndResourceGroup() throws Throwable { OperationContext.setAuthorizationContext(this.host.getSystemAuthorizationContext()); AuthorizationHelper authsetupHelper = new AuthorizationHelper(this.host); String email = "foo@foo.com"; String userLink = authsetupHelper.createUserService(this.host, email); Query userGroupQuery = Query.Builder.create().addFieldClause(UserState.FIELD_NAME_EMAIL, email).build(); String userGroupLink = authsetupHelper.createUserGroup(this.host, email, userGroupQuery); authsetupHelper.createRole(this.host, userGroupLink, "foo", EnumSet.allOf(Action.class)); // Assume identity this.host.assumeIdentity(userLink); this.host.sendAndWaitExpectSuccess( Operation.createGet(UriUtils.buildUri(this.host, ExampleService.FACTORY_LINK))); // set an invalid userGroupLink for the user OperationContext.setAuthorizationContext(this.host.getSystemAuthorizationContext()); UserState patchUserState = new UserState(); patchUserState.userGroupLinks = Collections.singleton("foo"); this.host.sendAndWaitExpectSuccess( Operation.createPatch(UriUtils.buildUri(this.host, userLink)).setBody(patchUserState)); this.host.assumeIdentity(userLink); this.host.sendAndWaitExpectSuccess( Operation.createGet(UriUtils.buildUri(this.host, ExampleService.FACTORY_LINK))); }
public static String createUserService(VerificationHost host, ServiceHost target, String email) throws Throwable { final String[] userUriPath = new String[1]; UserState userState = new UserState(); userState.documentSelfLink = email; userState.email = email; URI postUserUri = UriUtils.buildUri(target, ServiceUriPaths.CORE_AUTHZ_USERS); host.testStart(1); host.send(Operation .createPost(postUserUri) .setBody(userState) .setCompletion((o, e) -> { if (e != null) { host.failIteration(e); return; } UserState state = o.getBody(UserState.class); userUriPath[0] = state.documentSelfLink; host.completeIteration(); })); host.testWait(); return userUriPath[0]; }
public static String createUserService(VerificationHost host, ServiceHost target, String email) throws Throwable { final String[] userUriPath = new String[1]; UserState userState = new UserState(); userState.documentSelfLink = email; userState.email = email; URI postUserUri = UriUtils.buildUri(target, ServiceUriPaths.CORE_AUTHZ_USERS); host.testStart(1); host.send(Operation .createPost(postUserUri) .setBody(userState) .setCompletion((o, e) -> { if (e != null) { host.failIteration(e); return; } UserState state = o.getBody(UserState.class); userUriPath[0] = state.documentSelfLink; host.completeIteration(); })); host.testWait(); return userUriPath[0]; }
private void createUserState(LocalPrincipalState state, Operation op) { UserState user = new UserState(); user.email = state.email.toLowerCase(); user.documentSelfLink = encode(user.email); URI userFactoryUri = UriUtils.buildUri(getHost(), AuthUtil.buildUserServicePathFromPrincipalId("")); Operation postUser = Operation.createPost(userFactoryUri) .setBody(user) .setReferer(op.getUri()) .setCompletion((o, ex) -> { if (ex != null) { logWarning("Unable to create user state %s: %s", state.email, Utils .toString(ex)); op.fail(ex); return; } UserState us = o.getBody(UserState.class); logInfo("UserState created email: %s link: %s ", us.email, us.documentSelfLink); createUserCredentials(state, op); }); addReplicationFactor(postUser); sendRequest(postUser); }
@Test public void testInvalidUserAndResourceGroup() throws Throwable { OperationContext.setAuthorizationContext(this.host.getSystemAuthorizationContext()); AuthorizationHelper authsetupHelper = new AuthorizationHelper(this.host); String email = "foo@foo.com"; String userLink = authsetupHelper.createUserService(this.host, email); Query userGroupQuery = Query.Builder.create().addFieldClause(UserState.FIELD_NAME_EMAIL, email).build(); String userGroupLink = authsetupHelper.createUserGroup(this.host, email, userGroupQuery); authsetupHelper.createRole(this.host, userGroupLink, "foo", EnumSet.allOf(Action.class)); // Assume identity this.host.assumeIdentity(userLink); this.host.sendAndWaitExpectSuccess( Operation.createGet(UriUtils.buildUri(this.host, ExampleService.FACTORY_LINK))); // set an invalid userGroupLink for the user OperationContext.setAuthorizationContext(this.host.getSystemAuthorizationContext()); UserState patchUserState = new UserState(); patchUserState.userGroupLinks = Collections.singleton("foo"); this.host.sendAndWaitExpectSuccess( Operation.createPatch(UriUtils.buildUri(this.host, userLink)).setBody(patchUserState)); this.host.assumeIdentity(userLink); this.host.sendAndWaitExpectSuccess( Operation.createGet(UriUtils.buildUri(this.host, ExampleService.FACTORY_LINK))); }
private static DeferredResult<UserState> getUserState(Service requestorService, String principalId) { Operation getUserStateOp = Operation.createGet(requestorService, AuthUtil.buildUserServicePathFromPrincipalId(encode(principalId))); requestorService.setAuthorizationContext(getUserStateOp, requestorService.getSystemAuthorizationContext()); return requestorService.sendWithDeferredResult(getUserStateOp, UserState.class) .exceptionally((ex) -> { if (ex.getCause() instanceof ServiceNotFoundException) { return new UserState(); } return null; }); }
private void createUserServices(URI userFactorURI, List<URI> userServices) throws Throwable { TestContext ctx = this.host.testCreate(this.serviceCount); for (int i = 0; i < this.serviceCount; i++) { UserService.UserState s = new UserService.UserState(); s.email = UUID.randomUUID().toString() + "@example.org"; userServices.add(UriUtils.buildUri(this.host.getUri(), ExampleService.FACTORY_LINK, s.documentSelfLink)); this.host.send(Operation.createPost(userFactorURI) .setBody(s) .setCompletion(ctx.getCompletion())); } this.host.testWait(ctx); }
private void createUserServices(URI userFactorURI, List<URI> userServices) throws Throwable { TestContext ctx = this.host.testCreate(this.serviceCount); for (int i = 0; i < this.serviceCount; i++) { UserService.UserState s = new UserService.UserState(); s.email = UUID.randomUUID().toString() + "@example.org"; userServices.add(UriUtils.buildUri(this.host.getUri(), ExampleService.FACTORY_LINK, s.documentSelfLink)); this.host.send(Operation.createPost(userFactorURI) .setBody(s) .setCompletion(ctx.getCompletion())); } this.host.testWait(ctx); }
private static DeferredResult<UserState> createUser(Service service, String principalId) { UserState user = new UserState(); user.email = decode(principalId); user.documentSelfLink = encode(principalId); Operation postUser = Operation .createPost(service, AuthUtil.buildUserServicePathFromPrincipalId("")) .addPragmaDirective(Operation.PRAGMA_DIRECTIVE_FORCE_INDEX_UPDATE) .setBody(user); addReplicationFactor(postUser); return service.sendWithDeferredResult(postUser, UserState.class); }
@Test public void testFactoryPostFailure() { UserState state = new UserState(); state.email = "not an email"; Operation op = Operation.createPost(this.host, ServiceUriPaths.CORE_AUTHZ_USERS).setBody(state); FailureResponse response = this.sender.sendAndWaitFailure(op); assertEquals(Operation.STATUS_CODE_FAILURE_THRESHOLD, response.op.getStatusCode()); assertEquals("email is invalid", response.failure.getMessage()); }
@Test public void testFactoryPostAndDelete() { UserState state = new UserState(); state.email = "jane@doe.com"; Operation op = Operation.createPost(this.host, ServiceUriPaths.CORE_AUTHZ_USERS).setBody(state); UserState outState = this.sender.sendAndWait(op, UserState.class); assertEquals(state.email, outState.email); }
@Test public void testFactoryPostAndDelete() { UserState state = new UserState(); state.email = "jane@doe.com"; Operation op = Operation.createPost(this.host, ServiceUriPaths.CORE_AUTHZ_USERS).setBody(state); UserState outState = this.sender.sendAndWait(op, UserState.class); assertEquals(state.email, outState.email); }
@Test public void testFactoryPostFailure() { UserState state = new UserState(); state.email = "not an email"; Operation op = Operation.createPost(this.host, ServiceUriPaths.CORE_AUTHZ_USERS).setBody(state); FailureResponse response = this.sender.sendAndWaitFailure(op); assertEquals(Operation.STATUS_CODE_FAILURE_THRESHOLD, response.op.getStatusCode()); assertEquals("email is invalid", response.failure.getMessage()); }