public static Builder newBuilder(User user) { return new Builder(user.getUID(), user.getUserName(), user.getFirstName(), user.getLastName(), user.getEmail(), user.getCreatedAt(), user.getModifiedAt(), user.getVersion()); } }
public static User fromUser(com.dremio.service.users.User user) { return new User(user.getUID().getId(), user.getUserName()); } }
setEmail("mark.johnson@dremio.test").setFirstName("Mark").setLastName("Johnson").build(); db = userService.createUser(db, db.getFirstName() + "1234"); md = userService.createUser(md, md.getFirstName() + "1234"); dw = userService.createUser(dw, dw.getFirstName() + "1234"); mj = userService.createUser(mj, mj.getFirstName() + "1234"); UserUI u = expectSuccess(getBuilder(getAPIv2().path("user/" + md.getUserName())).buildGet(), UserUI.class); assertEquals(md.getEmail(), u.getUser().getEmail()); assertEquals(md.getFirstName(), u.getUser().getFirstName()); assertEquals(md.getLastName(), u.getUser().getLastName()); u = expectSuccess(getBuilder(getAPIv2().path("user/" + mj.getUserName())).buildGet(), UserUI.class); assertEquals(mj.getEmail(), u.getUser().getEmail()); assertEquals(mj.getFirstName(), u.getUser().getFirstName()); assertEquals(mj.getLastName(), u.getUser().getLastName()); assertEquals(toString(), 2, users7.getItems().size()); userService.deleteUser(db.getUserName(), db.getVersion()); userService.deleteUser(md.getUserName(), md.getVersion()); userService.deleteUser(dw.getUserName(), dw.getVersion()); userService.deleteUser(mj.getUserName(), mj.getVersion());
final NamespaceKey homeKey = new HomePath(HomeName.getUserHomePath(userConfig.getUserName())).toNamespaceKey(); try { ns.getHome(homeKey); new HomeConfig().setCtime(System.currentTimeMillis()).setOwner(userConfig.getUserName()) ); tokenDetails.token, userLogin.getUserName(), userConfig.getFirstName(), userConfig.getLastName(), tokenDetails.expiresAt, userConfig.getEmail(), userConfig.getUID().getId(), true, userConfig.getCreatedAt(), support.getClusterId().getIdentity(), support.getClusterId().getCreated(),
@After public void teardown() throws Exception { final UserService userService = l(UserService.class); userService.deleteUser(createdUser.getUserName(), createdUser.getVersion()); }
private boolean recordHeader(OutputStream output, JobId id, User user, String submissionId) throws UserNotFoundException, IOException, JobNotFoundException { SupportHeader header = new SupportHeader(); header.setClusterInfo(getClusterInfo()); header.setJob(jobsService.get().getJob(id).getJobAttempt()); Submission submission = new Submission() .setSubmissionId(submissionId) .setDate(System.currentTimeMillis()) .setEmail(user.getEmail()) .setFirst(user.getFirstName()) .setLast(user.getLastName()); header.setSubmission(submission); // record the dremio version that was used to run the query in the header header.setDremioVersion(jobsService.get().getProfile(id, 0).getDremioVersion()); ProtostuffUtil.toJSON(output, header, SupportHeader.getSchema(), false); return true; }
@Test public void testUserOCC() throws Exception { getPopulator().populateTestUsers(); doc("create user"); final User uc = SimpleUser.newBuilder().setUserName(testUserName("test11")).setEmail("test11@dremio.test").setFirstName("test11") .setLastName("dremio").build(); expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test11"))).buildPut(Entity.json(new UserForm(uc, testPassword("test11")))), UserUI.class); UserUI u1 = expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test11"))).buildGet(), UserUI.class); doc("update user"); final User uc2 = SimpleUser.newBuilder(u1.getUser()).setEmail("test22@dremio.test").build(); expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test11"))).buildPost(Entity.json(new UserForm(uc2))), UserUI.class); UserUI u2 = expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test11"))).buildGet(), UserUI.class); assertEquals(uc2.getEmail(), u2.getUser().getEmail()); doc("delete with missing version"); final GenericErrorMessage errorDelete = expectStatus(BAD_REQUEST, getBuilder(getAPIv2().path("user/" + testUserName("test11"))).buildDelete(), GenericErrorMessage.class); assertErrorMessage(errorDelete, "missing version param"); doc("delete with bad version"); final GenericErrorMessage errorDelete2 = expectStatus(CONFLICT, getBuilder(getAPIv2().path("user/" + testUserName("test11")).queryParam("version", 1234L)).buildDelete(), GenericErrorMessage.class); assertErrorMessage(errorDelete2, "tried to delete version 1234, found previous version 1"); doc("delete"); expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test11")).queryParam("version", u2.getUser().getVersion())).buildDelete()); }
@Override public String getName() { return user.getUserName(); }
@Override public User createUser(final User userConfig, final String authKey) throws IOException, IllegalArgumentException { final String userName = userConfig.getUserName(); if (findUserByUserName(userName) != null) { throw UserException.validationError() .message("User [%s] already exists", userName) .build(logger); } validatePassword(authKey); UserConfig newUser = toUserConfig(userConfig) .setUid(new UID(UUID.randomUUID().toString())) .setCreatedAt(System.currentTimeMillis()) .setModifiedAt(userConfig.getCreatedAt()) .setTag(null); UserInfo userInfo = new UserInfo(); userInfo.setConfig(newUser); userInfo.setAuth(buildUserAuth(newUser.getUid(), authKey)); userStore.put(newUser.getUid(), userInfo); // Return the new state return fromUserConfig(newUser); }
@Test public void testNoSelfDelete() throws Exception { // Get the current user info UserUI u1 = expectSuccess(getBuilder(getAPIv2().path("user/" + SampleDataPopulator.DEFAULT_USER_NAME)).buildGet(), UserUI.class); assertEquals(SampleDataPopulator.DEFAULT_USER_NAME, u1.getUserName().getName()); final GenericErrorMessage errorDelete = expectStatus(FORBIDDEN, getBuilder( getAPIv2().path("user/" + SampleDataPopulator.DEFAULT_USER_NAME) .queryParam("version", u1.getUser().getVersion()) ).buildDelete(), GenericErrorMessage.class); assertEquals("Deletion of the user account of currently logged in user is not allowed.", errorDelete.getErrorMessage()); }
public String getId() { return user.getUID().getId(); }
@Test public void testUser() throws Exception { getPopulator().populateTestUsers(); doc("getting user info"); UserUI u1 = expectSuccess(getBuilder(getAPIv2().path("user/" + SampleDataPopulator.DEFAULT_USER_NAME)).buildGet(), UserUI.class); assertEquals(SampleDataPopulator.DEFAULT_USER_NAME, u1.getUserName().getName()); assertEquals(SampleDataPopulator.DEFAULT_USER_NAME + "@dremio.test", u1.getUser().getEmail()); // TODO: Expected error is going to change after refactoring of DAC/dependent services into a common module. expectError(CLIENT_ERROR, getBuilder(getAPIv2().path("user/dac")).buildGet(), GenericErrorMessage.class); doc("Creating user"); final User userConfig2 = SimpleUser.newBuilder().setUserName(testUserName("test11")).setEmail("test11@dremio.test").setFirstName("test11") .setLastName("dremio").build(); expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test11"))).buildPut(Entity.json(new UserForm(userConfig2, testPassword("test11")))), UserUI.class); UserUI u2 = expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test11"))).buildGet(), UserUI.class); assertEquals(userConfig2.getEmail(), u2.getUser().getEmail()); assertEquals(userConfig2.getFirstName(), u2.getUser().getFirstName()); assertEquals(userConfig2.getLastName(), u2.getUser().getLastName()); doc("updating user"); User uc3 = SimpleUser.newBuilder(u2.getUser()).setEmail("test2@dremio.test").build(); expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test11"))).buildPost(Entity.json(new UserForm(uc3))), UserUI.class); UserUI u3 = expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test11"))).buildGet(), UserUI.class); assertEquals(u3.getUser().getEmail(), uc3.getEmail()); assertEquals(u3.getUser().getFirstName(), uc3.getFirstName()); assertEquals(u3.getUser().getLastName(), uc3.getLastName()); doc("deleting user"); expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test11")).queryParam("version", u3.getUser().getVersion())).buildDelete()); // TODO: Expected error is going to change after refactoring of DAC/dependent services into a common module. expectError(CLIENT_ERROR, getBuilder(getAPIv2().path("user/" + testUserName("test11"))).buildGet(), GenericErrorMessage.class); }
@Before public void setup() throws Exception { clearAllDataExceptUser(); final UserService userService = l(UserService.class); // clear test users for (User userConfig: userService.getAllUsers(10000)) { if (userConfig.getUserName().startsWith(USERNAME_PREFIX)) { try { userService.deleteUser(userConfig.getUserName(), userConfig.getVersion()); } catch (UserNotFoundException e) { // ignore search index may have user thats not in kvstore. } } } }
@Test public void testGetUserByName() throws Exception { final UserService userService = l(UserService.class); User user = expectSuccess(getBuilder(getPublicAPI(3).path(USER_PATH).path("by-name").path(createdUser.getUserName())).buildGet(), User.class); assertEquals(user.getId(), createdUser.getUID().getId()); assertEquals(user.getName(), createdUser.getUserName()); }
.setVersion(user.getUser().getVersion()) .build(); user = expectSuccess(getAPIv2().path("user/" + testUserName("user2")).request(JSON).header(HttpHeader.AUTHORIZATION.toString(), "_dremio" + adminLoginToken.getToken()).buildPost(Entity.json(new UserForm(user2, testPassword("user2")))), UserUI.class); assertEquals(testUserName("user2"), user.getUserName().getName()); assertEquals(user2.getEmail(), user.getUser().getEmail()); "_dremio" + adminLoginToken.getToken()).buildPost(Entity.json(new UserForm(testPassword("user2_new")))), UserUI.class); assertEquals(testUserName("user2"), user.getUserName().getName()); assertEquals(user2.getEmail(), user.getUser().getEmail()); assertEquals(user2.getEmail(), user.getUser().getEmail()); assertEquals(testUserName("user2_new"), user.getUserName().getName()); .setVersion(user.getUser().getVersion()) .build();
@GET @Path("/users") @Produces(APPLICATION_JSON) public JobFilterItems searchUsers(@QueryParam("filter") String query, @QueryParam("limit") Integer limit) throws IOException { final JobFilterItems users = new JobFilterItems(); for (final User userConfig : userService.searchUsers(query, null, null, limit)) { users.add(new JobFilterItem(userConfig.getUserName(), userConfig.getUserName())); } return users; }
@Test public void testUserChangePassword() throws Exception { doc("Creating user"); User userConfig = SimpleUser.newBuilder().setUserName(testUserName("test12")).setEmail("test1@dremio.test").setFirstName("test12") .setLastName("dremio").build(); expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test12"))).buildPut(Entity.json(new UserForm(userConfig, testPassword("test12")))), UserUI.class); UserUI u = expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test12"))).buildGet(), UserUI.class); doc("login"); UserLogin userLogin = new UserLogin(testUserName("test12"), testPassword("test12")); expectSuccess(getBuilder(getAPIv2().path("/login")).buildPost(Entity.json(userLogin)), UserLoginSession.class); doc("change name"); User userConfig2 = SimpleUser.newBuilder(u.getUser()).setUserName(testUserName("newTestName")).build(); expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("test12"))).buildPost(Entity.json(new UserForm(userConfig2, testPassword("test12")))), UserUI.class); UserLogin userLogin2 = new UserLogin(testUserName("newTestName"), testPassword("test12")); expectSuccess(getBuilder(getAPIv2().path("/login")).buildPost(Entity.json(userLogin2)), UserLoginSession.class); u = expectSuccess(getBuilder(getAPIv2().path("user/" + testUserName("newTestName"))).buildGet(), UserUI.class); l(UserService.class).deleteUser(new UserName(testUserName("newTestName")).getName(), u.getUser().getVersion()); }
public void setWiki(String entityId, Wiki wiki) throws NamespaceException { Preconditions.checkNotNull(entityId, "Entity id is required."); validateEntity(entityId); final CollaborationWiki collaborationWiki = new CollaborationWiki(); collaborationWiki.setText(wiki.getText()); collaborationWiki.setCreatedAt(System.currentTimeMillis()); // store the user User user = null; try { user = sabotContext.getUserService().getUser(context.getUserPrincipal().getName()); } catch (UserNotFoundException e) { throw new RuntimeException(String.format("Could not load user [%s].", context.getUserPrincipal().getName())); } collaborationWiki.setId(UUID.randomUUID().toString()); collaborationWiki.setUserId(user.getUID().getId()); final Optional<CollaborationWiki> existingWiki = wikiStore.getLatestWikiForEntityId(entityId); collaborationWiki.setVersion(existingWiki.transform(l -> { // check if versions match Long existingVersion = l.getVersion(); Long newVersion = wiki.getVersion(); if (!existingVersion.equals(newVersion)) { throw new ConcurrentModificationException(String.format("The provided version [%s] does not match the stored version [%s].", newVersion, existingVersion)); } // We create a new entry for each update but keep incrementing the version (for sorting). Because we do this we can't // rely on the store to do the version incrementing and therefore do it manually. return existingVersion + 1L; }).or(0L)); collaborationWiki.setEntityId(entityId); wikiStore.save(collaborationWiki); }
protected UserConfig toUserConfig(User user) { return new UserConfig() .setUid(user.getUID()) .setUserName(user.getUserName()) .setFirstName(user.getFirstName()) .setLastName(user.getLastName()) .setEmail(user.getEmail()) .setCreatedAt(user.getCreatedAt()) .setModifiedAt(user.getModifiedAt()) .setTag(user.getVersion()); }
setEmail("mark.johnson@dremio.test").setFirstName("Mark").setLastName("Johnson").build(); db = userGroupService.createUser(db, db.getUserName() + "1"); md = userGroupService.createUser(md, md.getUserName() + "1"); dw = userGroupService.createUser(dw, dw.getUserName() + "1"); mj = userGroupService.createUser(mj, mj.getUserName() + "1"); assertEquals("db", userGroupService.getUser(db.getUserName()).getEmail()); userGroupService.authenticate(db.getUserName(), db.getUserName() + "1"); userGroupService.authenticate(db.getUserName(), "abcABC123"); final String oldUserName = db.getUserName(); final String newUserName = "JohnBrown"; db = SimpleUser.newBuilder(db) .build(); db = userGroupService.updateUserName(oldUserName, newUserName, db, null); assertEquals("db", userGroupService.getUser(newUserName).getEmail()); assertEquals("John", userGroupService.getUser(newUserName).getFirstName()); userGroupService.deleteUser(oldUserName, db.getVersion());