aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2016-01-27 11:58:36 +0100
committerJulien Lancelot <julien.lancelot@sonarsource.com>2016-01-27 14:57:15 +0100
commit354260c08f3a5246b4f937cd45ee55b21dcb7444 (patch)
treedb514a4cff2c27fa0e2e1f09502bd3f8629197d2 /server
parent3219b99f2e675e9d14dd06ae68f4e005426f15b5 (diff)
downloadsonarqube-354260c08f3a5246b4f937cd45ee55b21dcb7444.tar.gz
sonarqube-354260c08f3a5246b4f937cd45ee55b21dcb7444.zip
SONAR-6226 Not fail when reactivating a user without password
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/user/UserUpdater.java10
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java28
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/user/UserUpdaterTest/reactivate_user_not_having_password.xml8
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="&#10;ma&#10;marius33&#10;"
+ external_identity_provider="sonarqube" external_identity="marius"
+ created_at="1418215735482" updated_at="1418215735485"
+ salt="[null]" crypted_password="[null]"/>
+
+</dataset>