From a53c89132fd8a142f0741aa6553c80459dbbe9c6 Mon Sep 17 00:00:00 2001 From: Teryk Bellahsene Date: Tue, 21 Mar 2017 18:28:37 +0100 Subject: [PATCH] SONAR-8980 Reindex a user when adding an organization membership --- .../organization/ws/AddMemberAction.java | 6 +++++- .../organization/ws/AddMemberActionTest.java | 20 +++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/AddMemberAction.java b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/AddMemberAction.java index 8de6650a589..4eb1612ac81 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/organization/ws/AddMemberAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/organization/ws/AddMemberAction.java @@ -32,6 +32,7 @@ import org.sonar.db.permission.OrganizationPermission; import org.sonar.db.user.UserDto; import org.sonar.server.exceptions.BadRequestException; import org.sonar.server.user.UserSession; +import org.sonar.server.user.index.UserIndexer; import static java.lang.String.format; import static org.sonar.server.organization.ws.OrganizationsWsSupport.PARAM_LOGIN; @@ -43,10 +44,12 @@ import static org.sonar.server.ws.WsUtils.checkFoundWithOptional; public class AddMemberAction implements OrganizationsWsAction { private final DbClient dbClient; private final UserSession userSession; + private final UserIndexer userIndexer; - public AddMemberAction(DbClient dbClient, UserSession userSession) { + public AddMemberAction(DbClient dbClient, UserSession userSession, UserIndexer userIndexer) { this.dbClient = dbClient; this.userSession = userSession; + this.userIndexer = userIndexer; } @Override @@ -95,6 +98,7 @@ public class AddMemberAction implements OrganizationsWsAction { dbClient.organizationMemberDao().insert(dbSession, organizationMember); dbSession.commit(); + userIndexer.index(user.getLogin()); } response.noContent(); diff --git a/server/sonar-server/src/test/java/org/sonar/server/organization/ws/AddMemberActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/organization/ws/AddMemberActionTest.java index 8b1851cb6c7..d9ae10ce569 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/organization/ws/AddMemberActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/organization/ws/AddMemberActionTest.java @@ -20,21 +20,30 @@ package org.sonar.server.organization.ws; +import java.util.List; import javax.annotation.Nullable; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import org.sonar.api.config.MapSettings; import org.sonar.api.server.ws.WebService; import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.DbTester; import org.sonar.db.organization.OrganizationDto; import org.sonar.db.user.UserDto; +import org.sonar.server.es.EsTester; +import org.sonar.server.es.SearchOptions; import org.sonar.server.exceptions.BadRequestException; import org.sonar.server.exceptions.ForbiddenException; import org.sonar.server.exceptions.NotFoundException; import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.user.index.UserDoc; +import org.sonar.server.user.index.UserIndex; +import org.sonar.server.user.index.UserIndexDefinition; +import org.sonar.server.user.index.UserIndexer; +import org.sonar.server.user.index.UserQuery; import org.sonar.server.ws.TestRequest; import org.sonar.server.ws.TestResponse; import org.sonar.server.ws.WsActionTester; @@ -52,11 +61,15 @@ public class AddMemberActionTest { @Rule public UserSessionRule userSession = UserSessionRule.standalone().logIn().setRoot(); @Rule + public EsTester es = new EsTester(new UserIndexDefinition(new MapSettings())); + private UserIndex userIndex = new UserIndex(es.client()); + @Rule public DbTester db = DbTester.create(); private DbClient dbClient = db.getDbClient(); private DbSession dbSession = db.getSession(); - private WsActionTester ws = new WsActionTester(new AddMemberAction(dbClient, userSession)); + + private WsActionTester ws = new WsActionTester(new AddMemberAction(dbClient, userSession, new UserIndexer(dbClient, es.client()))); private OrganizationDto organization; private UserDto user; @@ -93,10 +106,13 @@ public class AddMemberActionTest { } @Test - public void add_member_in_db() { + public void add_member_in_db_and_user_index() { call(organization.getKey(), user.getLogin()); assertMember(organization.getUuid(), user.getId()); + List userDocs = userIndex.search(UserQuery.builder().build(), new SearchOptions()).getDocs(); + assertThat(userDocs).hasSize(1); + assertThat(userDocs.get(0).organizationUuids()).containsOnly(organization.getUuid()); } @Test -- 2.39.5