private void verifyThatUserIsDeactivated(String login) { Optional<UserDto> user = db.users().selectUserByLogin(login); assertThat(user).isPresent(); assertThat(user.get().isActive()).isFalse(); assertThat(user.get().getEmail()).isNull(); assertThat(user.get().getScmAccountsAsList()).isEmpty(); } }
private static void writeScmAccountsIfNeeded(JsonWriter json, Collection<String> fields, UserDto user) { if (isFieldNeeded(FIELD_SCM_ACCOUNTS, fields)) { json.name(FIELD_SCM_ACCOUNTS) .beginArray() .values(user.getScmAccountsAsList()) .endArray(); } }
private boolean updateScmAccounts(DbSession dbSession, UpdateUser updateUser, UserDto userDto, List<String> messages) { String email = updateUser.email(); List<String> scmAccounts = sanitizeScmAccounts(updateUser.scmAccounts()); List<String> existingScmAccounts = userDto.getScmAccountsAsList(); if (updateUser.isScmAccountsChanged() && !(existingScmAccounts.containsAll(scmAccounts) && scmAccounts.containsAll(existingScmAccounts))) { if (!scmAccounts.isEmpty()) { String newOrOldEmail = email != null ? email : userDto.getEmail(); if (validateScmAccounts(dbSession, scmAccounts, userDto.getLogin(), newOrOldEmail, userDto, messages)) { userDto.setScmAccounts(scmAccounts); } } else { userDto.setScmAccounts((String) null); } return true; } return false; }
private static CreateWsResponse buildResponse(UserDto userDto) { CreateWsResponse.User.Builder userBuilder = CreateWsResponse.User.newBuilder() .setLogin(userDto.getLogin()) .setName(userDto.getName()) .setActive(userDto.isActive()) .setLocal(userDto.isLocal()) .addAllScmAccounts(userDto.getScmAccountsAsList()); ofNullable(emptyToNull(userDto.getEmail())).ifPresent(userBuilder::setEmail); return CreateWsResponse.newBuilder().setUser(userBuilder).build(); }
@Test public void indexOnStartup_adds_all_users_to_index() { UserDto user = db.users().insertUser(u -> u.setScmAccounts(asList("user_1", "u1"))); underTest.indexOnStartup(new HashSet<>()); List<UserDoc> docs = es.getDocuments(UserIndexDefinition.INDEX_TYPE_USER, UserDoc.class); assertThat(docs).hasSize(1); UserDoc doc = docs.get(0); assertThat(doc.uuid()).isEqualTo(user.getUuid()); assertThat(doc.login()).isEqualTo(user.getLogin()); assertThat(doc.name()).isEqualTo(user.getName()); assertThat(doc.email()).isEqualTo(user.getEmail()); assertThat(doc.active()).isEqualTo(user.isActive()); assertThat(doc.scmAccounts()).isEqualTo(user.getScmAccountsAsList()); assertThat(doc.organizationUuids()).isEmpty(); }
@Test public void update_scm_account_ordered_case_insensitive() { createUser(); ws.newRequest() .setParam("login", "john") .setMultiParam("scmAccount", Arrays.asList("jon.3", "Jon.1", "JON.2")) .execute(); UserDto user = dbClient.userDao().selectByLogin(dbSession, "john"); assertThat(user.getScmAccountsAsList()).containsExactly("Jon.1", "JON.2", "jon.3"); }
@Test public void update_only_scm_accounts() { UserDto user = db.users().insertUser(newLocalUser(DEFAULT_LOGIN, "Marius", "marius@lesbronzes.fr") .setScmAccounts(asList("ma", "marius33")) .setSalt("salt") .setCryptedPassword("crypted password")); createDefaultGroup(); underTest.updateAndCommit(session, user, new UpdateUser() .setScmAccounts(asList("ma2")), u -> { }); UserDto dto = dbClient.userDao().selectByLogin(session, DEFAULT_LOGIN); assertThat(dto.getScmAccountsAsList()).containsOnly("ma2"); // Following fields has not changed assertThat(dto.getName()).isEqualTo("Marius"); assertThat(dto.getEmail()).isEqualTo("marius@lesbronzes.fr"); assertThat(dto.getSalt()).isEqualTo("salt"); assertThat(dto.getCryptedPassword()).isEqualTo("crypted password"); }
@Test public void update_only_scm_accounts() { createUser(); ws.newRequest() .setParam("login", "john") .setMultiParam("scmAccount", singletonList("jon.snow")) .execute() .assertJson(getClass(), "update_scm_accounts.json"); UserDto user = dbClient.userDao().selectByLogin(dbSession, "john"); assertThat(user.getScmAccountsAsList()).containsOnly("jon.snow"); }
@Test public void update_only_user_name() { UserDto user = db.users().insertUser(newLocalUser(DEFAULT_LOGIN, "Marius", "marius@lesbronzes.fr") .setScmAccounts(asList("ma", "marius33")) .setSalt("salt") .setCryptedPassword("crypted password")); createDefaultGroup(); underTest.updateAndCommit(session, user, new UpdateUser() .setName("Marius2"), u -> { }); UserDto dto = dbClient.userDao().selectByLogin(session, DEFAULT_LOGIN); assertThat(dto.getName()).isEqualTo("Marius2"); // Following fields has not changed assertThat(dto.getEmail()).isEqualTo("marius@lesbronzes.fr"); assertThat(dto.getScmAccountsAsList()).containsOnly("ma", "marius33"); assertThat(dto.getSalt()).isEqualTo("salt"); assertThat(dto.getCryptedPassword()).isEqualTo("crypted password"); }
@Test public void update_scm_account_having_coma() { createUser(); ws.newRequest() .setParam("login", "john") .setMultiParam("scmAccount", singletonList("jon,snow")) .execute(); UserDto user = dbClient.userDao().selectByLogin(dbSession, "john"); assertThat(user.getScmAccountsAsList()).containsOnly("jon,snow"); }
@Test public void update_scm_account_ignores_duplicates() { createUser(); ws.newRequest() .setParam("login", "john") .setMultiParam("scmAccount", Arrays.asList("jon.snow", "jon.snow", "jon.jon", "jon.snow")) .execute(); UserDto user = dbClient.userDao().selectByLogin(dbSession, "john"); assertThat(user.getScmAccountsAsList()).containsExactlyInAnyOrder("jon.jon", "jon.snow"); }
@Test public void update_only_scm_accounts_with_deprecated_scm_accounts_parameter() { createUser(); ws.newRequest() .setParam("login", "john") .setParam("scm_accounts", "jon.snow") .execute() .assertJson(getClass(), "update_scm_accounts.json"); UserDto user = dbClient.userDao().selectByLogin(dbSession, "john"); assertThat(user.getScmAccountsAsList()).containsOnly("jon.snow"); }
@Test public void update_scm_accounts_with_same_values() { UserDto user = db.users().insertUser(newLocalUser(DEFAULT_LOGIN, "Marius", "marius@lesbronzes.fr") .setScmAccounts(asList("ma", "marius33"))); createDefaultGroup(); underTest.updateAndCommit(session, user, new UpdateUser() .setScmAccounts(asList("ma", "marius33")), u -> { }); UserDto dto = dbClient.userDao().selectByLogin(session, DEFAULT_LOGIN); assertThat(dto.getScmAccountsAsList()).containsOnly("ma", "marius33"); }
@Test public void update_only_scm_accounts_with_deprecated_scmAccounts_parameter() { createUser(); ws.newRequest() .setParam("login", "john") .setParam("scmAccounts", "jon.snow") .execute() .assertJson(getClass(), "update_scm_accounts.json"); UserDto user = dbClient.userDao().selectByLogin(dbSession, "john"); assertThat(user.getScmAccountsAsList()).containsOnly("jon.snow"); }
@Test public void create_user_with_deprecated_scmAccounts_parameter() { logInAsSystemAdministrator(); tester.newRequest() .setParam("login", "john") .setParam("name", "John") .setParam("password", "1234") .setParam("scmAccounts", "jn") .execute(); assertThat(db.users().selectUserByLogin("john").get().getScmAccountsAsList()).containsOnly("jn"); }
@Test public void create_user_with_deprecated_scm_accounts_parameter() { logInAsSystemAdministrator(); tester.newRequest() .setParam("login", "john") .setParam("name", "John") .setParam("password", "1234") .setParam("scm_accounts", "jn") .execute(); assertThat(db.users().selectUserByLogin("john").get().getScmAccountsAsList()).containsOnly("jn"); }
@Test public void create_user_with_scm_accounts_containing_blank_or_null_entries() { createDefaultGroup(); underTest.createAndCommit(db.getSession(), NewUser.builder() .setLogin("user") .setName("User") .setPassword("password") .setScmAccounts(asList("u1", "", null)) .build(), u -> { }); assertThat(dbClient.userDao().selectByLogin(session, "user").getScmAccountsAsList()).containsOnly("u1"); }
@Test public void create_user_with_scm_accounts_containing_duplications() { createDefaultGroup(); underTest.createAndCommit(db.getSession(), NewUser.builder() .setLogin("user") .setName("User") .setPassword("password") .setScmAccounts(asList("u1", "u1")) .build(), u -> { }); assertThat(dbClient.userDao().selectByLogin(session, "user").getScmAccountsAsList()).containsOnly("u1"); }
@Test public void update_user_with_scm_accounts_containing_blank_entry() { UserDto user = db.users().insertUser(newLocalUser(DEFAULT_LOGIN, "Marius", "marius@lesbronzes.fr") .setScmAccounts(asList("ma", "marius33"))); createDefaultGroup(); underTest.updateAndCommit(session, user, new UpdateUser() .setName("Marius2") .setEmail("marius2@mail.com") .setPassword("password2") .setScmAccounts(asList("ma2", "", null)), u -> { }); UserDto dto = dbClient.userDao().selectByLogin(session, DEFAULT_LOGIN); assertThat(dto.getScmAccountsAsList()).containsOnly("ma2"); }
@Test public void does_not_update_user_when_no_change() { UserDto user = newExternalUser(DEFAULT_LOGIN, "Marius", "marius@email.com") .setScmAccounts(asList("ma1", "ma2")); db.users().insertUser(user); createDefaultGroup(); underTest.updateAndCommit(session, user, new UpdateUser() .setName(user.getName()) .setEmail(user.getEmail()) .setScmAccounts(user.getScmAccountsAsList()) .setExternalIdentity(new ExternalIdentity(user.getExternalIdentityProvider(), user.getExternalLogin(), user.getExternalId())), u -> { }); assertThat(dbClient.userDao().selectByLogin(session, DEFAULT_LOGIN).getUpdatedAt()).isEqualTo(user.getUpdatedAt()); }