From: Julien Lancelot Date: Wed, 16 Sep 2015 12:49:42 +0000 (+0200) Subject: Re-add indexing of issues/authorization in ApplyPermissionsStep X-Git-Tag: 5.2-RC1~375 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=b48e0f8bc3787c8e73edb47503b345ace29d224c;p=sonarqube.git Re-add indexing of issues/authorization in ApplyPermissionsStep --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/step/ApplyPermissionsStep.java b/server/sonar-server/src/main/java/org/sonar/server/computation/step/ApplyPermissionsStep.java index 0f56a3e1fd3..2a3f826035c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/step/ApplyPermissionsStep.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/step/ApplyPermissionsStep.java @@ -31,6 +31,7 @@ import org.sonar.server.computation.component.DbIdsRepository; import org.sonar.server.computation.component.DepthTraversalTypeAwareCrawler; import org.sonar.server.computation.component.TreeRootHolder; import org.sonar.server.computation.component.TypeAwareVisitorAdapter; +import org.sonar.server.issue.index.IssueAuthorizationIndexer; import static org.sonar.server.computation.component.Component.Type.PROJECT; import static org.sonar.server.computation.component.Component.Type.VIEW; @@ -43,12 +44,15 @@ public class ApplyPermissionsStep implements ComputationStep { private final DbClient dbClient; private final DbIdsRepository dbIdsRepository; + private final IssueAuthorizationIndexer indexer; private final PermissionRepository permissionRepository; private final TreeRootHolder treeRootHolder; - public ApplyPermissionsStep(DbClient dbClient, DbIdsRepository dbIdsRepository, PermissionRepository permissionRepository, TreeRootHolder treeRootHolder) { + public ApplyPermissionsStep(DbClient dbClient, DbIdsRepository dbIdsRepository, IssueAuthorizationIndexer indexer, PermissionRepository permissionRepository, + TreeRootHolder treeRootHolder) { this.dbClient = dbClient; this.dbIdsRepository = dbIdsRepository; + this.indexer = indexer; this.permissionRepository = permissionRepository; this.treeRootHolder = treeRootHolder; } @@ -76,6 +80,7 @@ public class ApplyPermissionsStep implements ComputationStep { if (dbClient.roleDao().countComponentPermissions(session, projectId) == 0) { permissionRepository.grantDefaultRoles(session, projectId, Qualifiers.PROJECT); session.commit(); + indexer.index(); } } finally { MyBatis.closeQuietly(session); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/ApplyPermissionsStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/ApplyPermissionsStepTest.java index d84f3473902..f1263c6a7e3 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/ApplyPermissionsStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/ApplyPermissionsStepTest.java @@ -19,8 +19,12 @@ */ package org.sonar.server.computation.step; +import java.util.List; +import java.util.Map; +import org.elasticsearch.search.SearchHit; import org.junit.After; import org.junit.Before; +import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -41,6 +45,9 @@ import org.sonar.server.computation.component.Component; import org.sonar.server.computation.component.MutableDbIdsRepositoryRule; import org.sonar.server.computation.component.ReportComponent; import org.sonar.server.computation.component.ViewsComponent; +import org.sonar.server.es.EsTester; +import org.sonar.server.issue.index.IssueAuthorizationIndexer; +import org.sonar.server.issue.index.IssueIndexDefinition; import org.sonar.test.DbTests; import static org.assertj.core.api.Assertions.assertThat; @@ -56,6 +63,9 @@ public class ApplyPermissionsStepTest extends BaseStepTest { private static final String ROOT_UUID = "ROOT_UUID"; private static final long SOME_DATE = 1000L; + @ClassRule + public static EsTester esTester = new EsTester().addDefinitions(new IssueIndexDefinition(new Settings())); + @Rule public DbTester dbTester = DbTester.create(System2.INSTANCE); @@ -71,15 +81,20 @@ public class ApplyPermissionsStepTest extends BaseStepTest { Settings settings; + IssueAuthorizationIndexer issueAuthorizationIndexer; + ApplyPermissionsStep step; @Before public void setUp() { dbSession = dbClient.openSession(false); - settings = new Settings(); + esTester.truncateIndices(); - step = new ApplyPermissionsStep(dbClient, dbIdsRepository, new PermissionRepository(dbClient, settings), treeRootHolder); + issueAuthorizationIndexer = new IssueAuthorizationIndexer(dbClient, esTester.client()); + issueAuthorizationIndexer.setEnabled(true); + + step = new ApplyPermissionsStep(dbClient, dbIdsRepository, issueAuthorizationIndexer, new PermissionRepository(dbClient, settings), treeRootHolder); } @After @@ -88,7 +103,7 @@ public class ApplyPermissionsStepTest extends BaseStepTest { } @Test - public void grant_permission_for_report() { + public void grant_permission_on_new_project() { ComponentDto projectDto = ComponentTesting.newProjectDto(ROOT_UUID).setKey(ROOT_KEY); dbClient.componentDao().insert(dbSession, projectDto); @@ -104,10 +119,11 @@ public class ApplyPermissionsStepTest extends BaseStepTest { assertThat(dbClient.componentDao().selectOrFailByKey(dbSession, ROOT_KEY).getAuthorizationUpdatedAt()).isNotNull(); assertThat(dbClient.roleDao().selectGroupPermissions(dbSession, DefaultGroups.ANYONE, projectDto.getId())).containsOnly(UserRole.USER); + verifyAuthorisationIndex(ROOT_UUID, DefaultGroups.ANYONE); } @Test - public void nothing_to_do_for_report() { + public void nothing_to_do_on_existing_project() { ComponentDto projectDto = ComponentTesting.newProjectDto(ROOT_UUID).setKey(ROOT_KEY).setAuthorizationUpdatedAt(SOME_DATE); dbClient.componentDao().insert(dbSession, projectDto); // Permissions are already set on the project @@ -127,7 +143,7 @@ public class ApplyPermissionsStepTest extends BaseStepTest { } @Test - public void grant_permission_for_view() { + public void grant_permission_on_new_view() { ComponentDto viewDto = newView(ROOT_UUID).setKey(ROOT_KEY); dbClient.componentDao().insert(dbSession, viewDto); @@ -147,7 +163,7 @@ public class ApplyPermissionsStepTest extends BaseStepTest { } @Test - public void nothing_to_do_for_view() { + public void nothing_to_do_on_existing_view() { ComponentDto viewDto = newView(ROOT_UUID).setKey(ROOT_KEY).setAuthorizationUpdatedAt(SOME_DATE); dbClient.componentDao().insert(dbSession, viewDto); // Permissions are already set on the view @@ -173,6 +189,15 @@ public class ApplyPermissionsStepTest extends BaseStepTest { dbSession.commit(); } + private void verifyAuthorisationIndex(String rootUuid, String groupPermission){ + List issueAuthorizationHits = esTester.getDocuments(IssueIndexDefinition.INDEX, IssueIndexDefinition.TYPE_AUTHORIZATION); + assertThat(issueAuthorizationHits).hasSize(1); + Map issueAuthorization = issueAuthorizationHits.get(0).sourceAsMap(); + assertThat(issueAuthorization.get("project")).isEqualTo(rootUuid); + assertThat((List) issueAuthorization.get("groups")).containsOnly(groupPermission); + assertThat((List) issueAuthorization.get("users")).isEmpty(); + } + @Override protected ComputationStep step() { return step;