diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-01-27 11:58:36 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-01-27 14:57:15 +0100 |
commit | 354260c08f3a5246b4f937cd45ee55b21dcb7444 (patch) | |
tree | db514a4cff2c27fa0e2e1f09502bd3f8629197d2 /server | |
parent | 3219b99f2e675e9d14dd06ae68f4e005426f15b5 (diff) | |
download | sonarqube-354260c08f3a5246b4f937cd45ee55b21dcb7444.tar.gz sonarqube-354260c08f3a5246b4f937cd45ee55b21dcb7444.zip |
SONAR-6226 Not fail when reactivating a user without password
Diffstat (limited to 'server')
3 files changed, 41 insertions, 5 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/user/UserUpdater.java b/server/sonar-server/src/main/java/org/sonar/server/user/UserUpdater.java index 9fd0e44b238..0c8a052a849 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/user/UserUpdater.java +++ b/server/sonar-server/src/main/java/org/sonar/server/user/UserUpdater.java @@ -107,7 +107,7 @@ public class UserUpdater { saveUser(dbSession, userDto); addDefaultGroup(dbSession, userDto); } else { - isUserReactivated = updateExistingUser(dbSession, existingUser.get(), login, newUser); + isUserReactivated = reactivateUser(dbSession, existingUser.get(), login, newUser); } dbSession.commit(); notifyNewUser(userDto.getLogin(), userDto.getName(), newUser.email()); @@ -115,15 +115,17 @@ public class UserUpdater { return isUserReactivated; } - private boolean updateExistingUser(DbSession dbSession, UserDto existingUser, String login, NewUser newUser) { + private boolean reactivateUser(DbSession dbSession, UserDto existingUser, String login, NewUser newUser) { if (existingUser.isActive()) { throw new IllegalArgumentException(String.format("An active user with login '%s' already exists", login)); } UpdateUser updateUser = UpdateUser.create(login) .setName(newUser.name()) .setEmail(newUser.email()) - .setScmAccounts(newUser.scmAccounts()) - .setPassword(newUser.password()); + .setScmAccounts(newUser.scmAccounts()); + if (newUser.password() != null) { + updateUser.setPassword(newUser.password()); + } updateUserDto(dbSession, updateUser, existingUser); updateUser(dbSession, existingUser); addDefaultGroup(dbSession, existingUser); diff --git a/server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java b/server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java index b3f2efc35c0..9b1e6b7a5bd 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java @@ -473,7 +473,7 @@ public class UserUpdaterTest { } @Test - public void reactivate_user_when_creating_user_with_existing_login() { + public void reactivate_user_when_creating_user_with_existing_login_and_with_authority() { db.prepareDbUnit(getClass(), "reactivate_user.xml"); when(system2.now()).thenReturn(1418215735486L); createDefaultGroup(); @@ -500,6 +500,32 @@ public class UserUpdaterTest { } @Test + public void reactivate_user_not_having_password() { + db.prepareDbUnit(getClass(), "reactivate_user_not_having_password.xml"); + when(system2.now()).thenReturn(1418215735486L); + createDefaultGroup(); + + boolean result = userUpdater.create(NewUser.create() + .setLogin(DEFAULT_LOGIN) + .setName("Marius2") + .setEmail("marius2@mail.com")); + session.commit(); + + UserDto dto = userDao.selectByLogin(session, DEFAULT_LOGIN); + assertThat(dto.isActive()).isTrue(); + assertThat(dto.getName()).isEqualTo("Marius2"); + assertThat(dto.getEmail()).isEqualTo("marius2@mail.com"); + assertThat(dto.getScmAccounts()).isNull(); + + assertThat(dto.getSalt()).isNull(); + assertThat(dto.getCryptedPassword()).isNull(); + assertThat(dto.getCreatedAt()).isEqualTo(1418215735482L); + assertThat(dto.getUpdatedAt()).isEqualTo(1418215735486L); + + assertThat(result).isTrue(); + } + + @Test public void fail_to_reactivate_user_if_not_disabled() { db.prepareDbUnit(getClass(), "fail_to_reactivate_user_if_not_disabled.xml"); createDefaultGroup(); diff --git a/server/sonar-server/src/test/resources/org/sonar/server/user/UserUpdaterTest/reactivate_user_not_having_password.xml b/server/sonar-server/src/test/resources/org/sonar/server/user/UserUpdaterTest/reactivate_user_not_having_password.xml new file mode 100644 index 00000000000..adcf3cffccf --- /dev/null +++ b/server/sonar-server/src/test/resources/org/sonar/server/user/UserUpdaterTest/reactivate_user_not_having_password.xml @@ -0,0 +1,8 @@ +<dataset> + + <users id="101" login="marius" name="Marius" email="marius@lesbronzes.fr" active="[false]" scm_accounts=" ma marius33 " + external_identity_provider="sonarqube" external_identity="marius" + created_at="1418215735482" updated_at="1418215735485" + salt="[null]" crypted_password="[null]"/> + +</dataset> |