private static boolean updateEmail(UpdateUser updateUser, UserDto userDto, List<String> messages) { String email = updateUser.email(); if (updateUser.isEmailChanged() && validateEmailFormat(email, messages) && !Objects.equals(userDto.getEmail(), email)) { userDto.setEmail(email); return true; } return false; }
public static UserDto newUserDto(String login, String name, @Nullable String email) { return newUserDto() .setName(name) .setEmail(email) .setLogin(login); }
@Test public void redirect_when_failing_because_of_EmailAlreadyExistException() throws Exception { UserDto existingUser = newUserDto().setEmail("john@email.com").setExternalLogin("john.bitbucket").setExternalIdentityProvider("bitbucket"); FailWithEmailAlreadyExistException identityProvider = new FailWithEmailAlreadyExistException("failing", existingUser); when(request.getRequestURI()).thenReturn("/sessions/init/" + identityProvider.getKey()); identityProviderRepository.addIdentityProvider(identityProvider); underTest.doFilter(request, response, chain); verify(response).sendRedirect("/sessions/email_already_exists?email=john%40email.com&login=john.github&provider=failing&existingLogin=john.bitbucket&existingProvider=bitbucket"); verify(auth2AuthenticationParameters).delete(eq(request), eq(response)); }
@Test public void redirect_when_failing_because_of_EmailAlreadyExistException() throws Exception { UserDto existingUser = newUserDto().setEmail("john@email.com").setExternalLogin("john.bitbucket").setExternalIdentityProvider("bitbucket"); FailWithEmailAlreadyExistException identityProvider = new FailWithEmailAlreadyExistException(existingUser); when(request.getRequestURI()).thenReturn("/oauth2/callback/" + identityProvider.getKey()); identityProviderRepository.addIdentityProvider(identityProvider); underTest.doFilter(request, response, chain); verify(response).sendRedirect("/sessions/email_already_exists?email=john%40email.com&login=john.github&provider=failing&existingLogin=john.bitbucket&existingProvider=bitbucket"); verify(oAuthRedirection).delete(eq(request), eq(response)); }
@Test public void select_by_email() { UserDto activeUser1 = db.users().insertUser(u -> u.setEmail("user1@email.com")); UserDto activeUser2 = db.users().insertUser(u -> u.setEmail("user1@email.com")); UserDto disableUser = db.users().insertUser(u -> u.setActive(false)); assertThat(underTest.selectByEmail(session, "user1@email.com")).hasSize(2); assertThat(underTest.selectByEmail(session, disableUser.getEmail())).isEmpty(); assertThat(underTest.selectByEmail(session, "unknown")).isEmpty(); }
@Test public void select_nullable_by_scm_account_return_many_results_when_same_email_is_used_by_many_users() { db.users().insertUser(user -> user.setLogin("marius").setName("Marius").setEmail("marius@lesbronzes.fr").setScmAccounts(asList("ma", "marius33"))); db.users().insertUser(user -> user.setLogin("sbrandhof").setName("Simon Brandhof").setEmail("marius@lesbronzes.fr").setScmAccounts((String) null)); List<UserDto> results = underTest.selectByScmAccountOrLoginOrEmail(session, "marius@lesbronzes.fr"); assertThat(results).hasSize(2); }
@Test public void convert_empty_email_to_null() { UserDto user = db.users().insertUser(u -> u .setLogin("obiwan.kenobi") .setEmail("")); userSession.logIn(user); CurrentWsResponse response = call(); assertThat(response.hasEmail()).isFalse(); }
@Test public void select_nullable_by_scm_account() { db.users().insertUser(user -> user.setLogin("marius").setName("Marius").setEmail("marius@lesbronzes.fr").setScmAccounts(asList("ma", "marius33"))); db.users().insertUser(user -> user.setLogin("sbrandhof").setName("Simon Brandhof").setEmail("sbrandhof@lesbronzes.fr").setScmAccounts((String) null)); assertThat(underTest.selectByScmAccountOrLoginOrEmail(session, "ma")).extracting(UserDto::getLogin).containsExactly("marius"); assertThat(underTest.selectByScmAccountOrLoginOrEmail(session, "marius")).extracting(UserDto::getLogin).containsExactly("marius"); assertThat(underTest.selectByScmAccountOrLoginOrEmail(session, "marius@lesbronzes.fr")).extracting(UserDto::getLogin).containsExactly("marius"); assertThat(underTest.selectByScmAccountOrLoginOrEmail(session, "m")).isEmpty(); assertThat(underTest.selectByScmAccountOrLoginOrEmail(session, "unknown")).isEmpty(); }
@Test public void return_user_info() { OrganizationDto organization = db.organizations().insert(); db.users().insertDefaultGroup(organization, "default"); UserDto user = db.users().insertUser(u -> u.setEmail("john@smith.com")); AddMemberWsResponse result = call(organization.getKey(), user.getLogin()); assertThat(result.getUser().getLogin()).isEqualTo(user.getLogin()); assertThat(result.getUser().getName()).isEqualTo(user.getName()); assertThat(result.getUser().getAvatar()).isEqualTo("b0d8c6e5ea589e6fc3d3e08afb1873bb"); assertThat(result.getUser().getGroupCount()).isEqualTo(1); }
public static UserDto newLocalUser(String login, String name, @Nullable String email) { return newUserDto() .setLocal(true) .setName(name) .setEmail(email) .setLogin(login) .setExternalId(login) .setExternalLogin(login) .setExternalIdentityProvider("sonarqube"); }
public static UserDto newDisabledUser() { return newUserDto() .setActive(false) // All these fields are reset when disabling a user .setScmAccounts((String) null) .setEmail(null) .setCryptedPassword(null) .setSalt(null); }
public static UserDto newExternalUser(String login, String name, @Nullable String email) { return newUserDto() .setLocal(false) .setName(name) .setEmail(email) .setLogin(login) .setExternalId(randomAlphanumeric(40)) .setExternalLogin(randomAlphanumeric(40)) .setExternalIdentityProvider(randomAlphanumeric(40)); }
@Test public void search_for_users_with_response_example() { UserDto user1 = insertUser(newUserDto().setLogin("admin").setName("Administrator").setEmail("admin@admin.com")); UserDto user2 = insertUser(newUserDto().setLogin("george.orwell").setName("George Orwell").setEmail("george.orwell@1984.net")); PermissionTemplateDto template1 = addTemplateToDefaultOrganization(); addUserToTemplate(newPermissionTemplateUser(CODEVIEWER, template1, user1)); addUserToTemplate(newPermissionTemplateUser(CODEVIEWER, template1, user2)); addUserToTemplate(newPermissionTemplateUser(ADMIN, template1, user2)); loginAsAdmin(db.getDefaultOrganization()); String result = newRequest(null, template1.getUuid()).execute().getInput(); assertJson(result).isSimilarTo(getClass().getResource("template_users-example.json")); }
@Test public void return_avatar() { UserDto user = db.users().insertUser(u -> u.setEmail("john@doe.com")); userIndexer.indexOnStartup(null); userSession.logIn(); SearchWsResponse response = ws.newRequest() .executeProtobuf(SearchWsResponse.class); assertThat(response.getUsersList()) .extracting(User::getLogin, User::getAvatar) .containsExactlyInAnyOrder(tuple(user.getLogin(), "6a6c19fea4a3676970167ce51f39e6ee")); }
@Test public void return_avatar() { OrganizationDto organization = db.organizations().insert(); logAsOrganizationMember(organization); UserDto user = db.users().insertUser(u -> u.setEmail("email@domain.com")); db.organizations().addMember(organization, user); indexer.commitAndIndex(db.getSession(), user); SearchMembersWsResponse result = ws.newRequest() .setParam("organization", organization.getKey()) .executeProtobuf(SearchMembersWsResponse.class); assertThat(result.getUsers(0).getAvatar()).isEqualTo("7328fddefd53de471baeb6e2b764f78a"); }
@Test public void update_user_when_authenticating_exiting_user() { startWithSso(); setNotUserInToken(); insertUser(newUserDto().setLogin(DEFAULT_LOGIN).setName("old name").setEmail("old email"), group1); // Name, email and groups are different HttpServletRequest request = createRequest(DEFAULT_LOGIN, DEFAULT_NAME, DEFAULT_EMAIL, GROUP2); underTest.authenticate(request, response); verifyUserInDb(DEFAULT_LOGIN, DEFAULT_NAME, DEFAULT_EMAIL, group2); verifyTokenIsUpdated(NOW); verify(authenticationEvent).loginSuccess(request, DEFAULT_LOGIN, Source.sso()); }
@Test public void test_example() { UserDto user = db.users().insertUser(u -> u .setLogin("ada.lovelace") .setEmail("ada.lovelace@noteg.com") .setName("Ada Lovelace") .setLocal(true) .setScmAccounts(singletonList("al"))); logInAsSystemAdministrator(); String json = deactivate(user.getLogin()).getInput(); assertJson(json).isSimilarTo(ws.getDef().responseExampleAsString()); }
@Before public void setUp() throws Exception { organizationDto = db.organizations().insert(); user1 = db.users().insertUser(u -> u.setLogin("admin login").setName("Admin name").setEmail("admin@email.com")); user2 = db.users().insertUser(u -> u.setLogin("not.admin").setName("Not Admin").setEmail("Not Admin")); user3 = db.users().insertUser(u -> u.setLogin("inactive").setActive(false)); group1 = db.users().insertGroup(organizationDto, "sonar-administrators"); group2 = db.users().insertGroup(organizationDto, "sonar-users"); group3 = db.users().insertGroup(organizationDto, "sonar-reviewers"); db.organizations().addMember(organizationDto, user1); db.organizations().addMember(organizationDto, user2); }
@Test public void test_response_example() { logInAsRoot(); UserDto user = UserTesting.newUserDto().setLogin("daniel").setName("Daniel").setEmail("daniel@corp.com"); UserDto rootDto = userDao.insert(dbSession, user); userDao.setRoot(dbSession, rootDto.getLogin(), true); dbSession.commit(); TestResponse response = wsTester.newRequest().setMediaType(MediaTypes.JSON).execute(); assertJson(response.getInput()).isSimilarTo(wsTester.getDef().responseExampleAsString()); }
@Test public void json_example() { OrganizationDto organization = db.organizations().insert(); db.users().insertDefaultGroup(organization, "default"); UserDto user = db.users().insertUser(u -> u.setLogin("ada.lovelace").setName("Ada Lovelace").setEmail("ada@lovelace.com")); String result = ws.newRequest().setParam(PARAM_ORGANIZATION, organization.getKey()).setParam("login", user.getLogin()).execute().getInput(); assertJson(result).isSimilarTo(ws.getDef().responseExampleAsString()); }