summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@sonarsource.com>2015-09-16 14:49:42 +0200
committerJulien Lancelot <julien.lancelot@sonarsource.com>2015-09-16 14:49:55 +0200
commitb48e0f8bc3787c8e73edb47503b345ace29d224c (patch)
tree0ce29687e54a5281a0c4aab0a757a0e43087bf61 /server
parentb525a1a435a402a47f178af93a235c83c3323c35 (diff)
downloadsonarqube-b48e0f8bc3787c8e73edb47503b345ace29d224c.tar.gz
sonarqube-b48e0f8bc3787c8e73edb47503b345ace29d224c.zip
Re-add indexing of issues/authorization in ApplyPermissionsStep
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/computation/step/ApplyPermissionsStep.java7
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/computation/step/ApplyPermissionsStepTest.java37
2 files changed, 37 insertions, 7 deletions
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<SearchHit> issueAuthorizationHits = esTester.getDocuments(IssueIndexDefinition.INDEX, IssueIndexDefinition.TYPE_AUTHORIZATION);
+ assertThat(issueAuthorizationHits).hasSize(1);
+ Map<String, Object> issueAuthorization = issueAuthorizationHits.get(0).sourceAsMap();
+ assertThat(issueAuthorization.get("project")).isEqualTo(rootUuid);
+ assertThat((List<String>) issueAuthorization.get("groups")).containsOnly(groupPermission);
+ assertThat((List<String>) issueAuthorization.get("users")).isEmpty();
+ }
+
@Override
protected ComputationStep step() {
return step;