]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6467 Highlight reactivation of a user upon creation/update
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Wed, 20 May 2015 13:18:41 +0000 (15:18 +0200)
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Tue, 26 May 2015 14:04:31 +0000 (16:04 +0200)
server/sonar-server/src/main/java/org/sonar/server/user/ws/CreateAction.java
server/sonar-server/src/main/java/org/sonar/server/user/ws/UpdateAction.java
server/sonar-server/src/test/java/org/sonar/server/user/UserUpdaterTest.java

index be89ca92fbcda98de118557ee488e949dccc122e..143ca191130b347b5caf3aed6704af74492b7eb9 100644 (file)
@@ -56,7 +56,8 @@ public class CreateAction implements UsersWsAction {
   @Override
   public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("create")
-      .setDescription("Create a user. Requires Administer System permission")
+      .setDescription("Create a user. If a deactivated user account exists with the given login, it will be reactivated. " +
+        "Requires Administer System permission")
       .setSince("3.7")
       .setPost(true)
       .setHandler(this);
index 19d6c41db8667dfc986aa847e95f71ebe3ed0e2f..d3cf1fa69fe43a89c511d34d63020f242c8dbe61 100644 (file)
@@ -52,7 +52,8 @@ public class UpdateAction implements UsersWsAction {
   @Override
   public void define(WebService.NewController controller) {
     WebService.NewAction action = controller.createAction("update")
-      .setDescription("Update a user. Requires Administer System permission. Since 5.2, a user's password can only be changed using the 'change_password' action.")
+      .setDescription("Update a user. If a deactivated user account exists with the given login, it will be reactivated. " +
+        "Requires Administer System permission. Since 5.2, a user's password can only be changed using the 'change_password' action.")
       .setSince("3.7")
       .setPost(true)
       .setHandler(this)
index a96cd3b697c77d77e5f1bd94afad30ae4d8124ba..9f17e500e9ed1945646e608cea29747488c74455 100644 (file)
@@ -21,6 +21,7 @@
 package org.sonar.server.user;
 
 import com.google.common.base.Strings;
+import java.util.List;
 import org.elasticsearch.search.SearchHit;
 import org.junit.After;
 import org.junit.Before;
@@ -54,8 +55,6 @@ import org.sonar.server.user.index.UserIndexer;
 import org.sonar.server.util.Validation;
 import org.sonar.test.DbTests;
 
-import java.util.List;
-
 import static com.google.common.collect.Lists.newArrayList;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.data.MapEntry.entry;
@@ -602,6 +601,41 @@ public class UserUpdaterTest {
         entry("email", "marius2@mail.com"));
   }
 
+  @Test
+  public void reactivate_user_on_update() {
+    db.prepareDbUnit(getClass(), "reactivate_user.xml");
+    when(system2.now()).thenReturn(1418215735486L);
+    createDefaultGroup();
+
+    userUpdater.update(UpdateUser.create("marius")
+      .setName("Marius2")
+      .setEmail("marius2@mail.com")
+      .setPassword("password2")
+      .setPasswordConfirmation("password2")
+      .setScmAccounts(newArrayList("ma2")));
+    session.commit();
+    session.clearCache();
+
+    UserDto dto = userDao.selectNullableByLogin(session, "marius");
+    assertThat(dto.isActive()).isTrue();
+    assertThat(dto.getName()).isEqualTo("Marius2");
+    assertThat(dto.getEmail()).isEqualTo("marius2@mail.com");
+    assertThat(dto.getScmAccountsAsList()).containsOnly("ma2");
+
+    assertThat(dto.getSalt()).isNotEqualTo("79bd6a8e79fb8c76ac8b121cc7e8e11ad1af8365");
+    assertThat(dto.getCryptedPassword()).isNotEqualTo("650d2261c98361e2f67f90ce5c65a95e7d8ea2fg");
+    assertThat(dto.getCreatedAt()).isEqualTo(1418215735482L);
+    assertThat(dto.getUpdatedAt()).isEqualTo(1418215735486L);
+
+    List<SearchHit> indexUsers = es.getDocuments(UserIndexDefinition.INDEX, UserIndexDefinition.TYPE_USER);
+    assertThat(indexUsers).hasSize(1);
+    assertThat(indexUsers.get(0).getSource())
+      .contains(
+        entry("login", "marius"),
+        entry("name", "Marius2"),
+        entry("email", "marius2@mail.com"));
+  }
+
   @Test
   public void update_user_with_scm_accounts_containing_blank_entry() {
     db.prepareDbUnit(getClass(), "update_user.xml");