Browse Source

SONAR-8227 Move org.sonar.server.issue.index.IssueAuthorizationIndexer to org.sonar.server.permission.index.AuthorizationIndexer

This indexer will also be used to feed the authorization type of projectmeasures index
tags/6.2-RC1
Julien Lancelot 7 years ago
parent
commit
7b3ad7add7
25 changed files with 97 additions and 92 deletions
  1. 2
    2
      server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java
  2. 3
    3
      server/sonar-server/src/main/java/org/sonar/server/component/ComponentCleanerService.java
  3. 4
    4
      server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/ApplyPermissionsStep.java
  4. 6
    6
      server/sonar-server/src/main/java/org/sonar/server/es/IndexerStartupTask.java
  5. 4
    4
      server/sonar-server/src/main/java/org/sonar/server/permission/PermissionService.java
  6. 3
    3
      server/sonar-server/src/main/java/org/sonar/server/permission/PermissionUpdater.java
  7. 3
    3
      server/sonar-server/src/main/java/org/sonar/server/permission/index/AuthorizationDao.java
  8. 15
    15
      server/sonar-server/src/main/java/org/sonar/server/permission/index/AuthorizationIndexer.java
  9. 2
    2
      server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java
  10. 5
    5
      server/sonar-server/src/test/java/org/sonar/server/batch/IssuesActionTest.java
  11. 2
    2
      server/sonar-server/src/test/java/org/sonar/server/component/ComponentCleanerServiceTest.java
  12. 3
    3
      server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/ApplyPermissionsStepTest.java
  13. 5
    3
      server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexDebtTest.java
  14. 5
    3
      server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexTest.java
  15. 12
    12
      server/sonar-server/src/test/java/org/sonar/server/permission/index/AuthorizationDaoTest.java
  16. 11
    10
      server/sonar-server/src/test/java/org/sonar/server/permission/index/AuthorizationIndexerTest.java
  17. 2
    2
      server/sonar-server/src/test/java/org/sonar/server/permission/ws/BasePermissionWsTest.java
  18. 2
    2
      server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java
  19. 2
    2
      server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/BulkApplyTemplateActionTest.java
  20. 2
    2
      server/sonar-server/src/test/java/org/sonar/server/project/ws/BulkDeleteActionTest.java
  21. 2
    2
      server/sonar-server/src/test/java/org/sonar/server/project/ws/DeleteActionTest.java
  22. 2
    2
      server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java
  23. 0
    0
      server/sonar-server/src/test/resources/org/sonar/server/permission/index/AuthorizationDaoTest/no_authorization.xml
  24. 0
    0
      server/sonar-server/src/test/resources/org/sonar/server/permission/index/AuthorizationDaoTest/shared.xml
  25. 0
    0
      server/sonar-server/src/test/resources/org/sonar/server/permission/index/AuthorizationIndexerTest/index.xml

+ 2
- 2
server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java View File

@@ -75,7 +75,6 @@ import org.sonar.server.debt.DebtModelPluginRepository;
import org.sonar.server.debt.DebtRulesXMLImporter;
import org.sonar.server.event.NewAlerts;
import org.sonar.server.issue.IssueUpdater;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.issue.index.IssueIndex;
import org.sonar.server.issue.index.IssueIndexer;
import org.sonar.server.issue.notification.ChangesOnMyIssueNotificationDispatcher;
@@ -100,6 +99,7 @@ import org.sonar.server.permission.GroupPermissionChanger;
import org.sonar.server.permission.PermissionService;
import org.sonar.server.permission.PermissionUpdater;
import org.sonar.server.permission.UserPermissionChanger;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.platform.DatabaseServerCompatibility;
import org.sonar.server.platform.DefaultServerUpgradeStatus;
import org.sonar.server.platform.ServerFileSystemImpl;
@@ -340,7 +340,7 @@ public class ComputeEngineContainerImpl implements ComputeEngineContainer {

// issues
IssueIndexer.class,
IssueAuthorizationIndexer.class,
AuthorizationIndexer.class,
IssueUpdater.class, // used in Web Services and CE's DebtCalculator
FunctionExecutor.class, // used by IssueWorkflow
IssueWorkflow.class, // used in Web Services and CE's DebtCalculator

+ 3
- 3
server/sonar-server/src/main/java/org/sonar/server/component/ComponentCleanerService.java View File

@@ -29,8 +29,8 @@ import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.db.MyBatis;
import org.sonar.db.component.ComponentDto;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.issue.index.IssueIndexer;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.component.es.ProjectMeasuresIndexer;
import org.sonar.server.test.index.TestIndexer;

@@ -39,14 +39,14 @@ import org.sonar.server.test.index.TestIndexer;
public class ComponentCleanerService {

private final DbClient dbClient;
private final IssueAuthorizationIndexer issueAuthorizationIndexer;
private final AuthorizationIndexer issueAuthorizationIndexer;
private final IssueIndexer issueIndexer;
private final TestIndexer testIndexer;
private final ProjectMeasuresIndexer projectMeasuresIndexer;
private final ResourceTypes resourceTypes;
private final ComponentFinder componentFinder;

public ComponentCleanerService(DbClient dbClient, IssueAuthorizationIndexer issueAuthorizationIndexer, IssueIndexer issueIndexer,
public ComponentCleanerService(DbClient dbClient, AuthorizationIndexer issueAuthorizationIndexer, IssueIndexer issueIndexer,
TestIndexer testIndexer, ProjectMeasuresIndexer projectMeasuresIndexer, ResourceTypes resourceTypes, ComponentFinder componentFinder) {
this.dbClient = dbClient;
this.issueAuthorizationIndexer = issueAuthorizationIndexer;

+ 4
- 4
server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/step/ApplyPermissionsStep.java View File

@@ -29,7 +29,7 @@ import org.sonar.server.computation.task.projectanalysis.component.DepthTraversa
import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolder;
import org.sonar.server.computation.task.projectanalysis.component.TypeAwareVisitorAdapter;
import org.sonar.server.computation.task.step.ComputationStep;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.permission.index.AuthorizationIndexer;

import static org.sonar.server.computation.task.projectanalysis.component.Component.Type.PROJECT;
import static org.sonar.server.computation.task.projectanalysis.component.Component.Type.VIEW;
@@ -42,12 +42,12 @@ public class ApplyPermissionsStep implements ComputationStep {

private final DbClient dbClient;
private final DbIdsRepository dbIdsRepository;
private final IssueAuthorizationIndexer indexer;
private final AuthorizationIndexer indexer;
private final PermissionRepository permissionRepository;
private final TreeRootHolder treeRootHolder;

public ApplyPermissionsStep(DbClient dbClient, DbIdsRepository dbIdsRepository, IssueAuthorizationIndexer indexer, PermissionRepository permissionRepository,
TreeRootHolder treeRootHolder) {
public ApplyPermissionsStep(DbClient dbClient, DbIdsRepository dbIdsRepository, AuthorizationIndexer indexer, PermissionRepository permissionRepository,
TreeRootHolder treeRootHolder) {
this.dbClient = dbClient;
this.dbIdsRepository = dbIdsRepository;
this.indexer = indexer;

+ 6
- 6
server/sonar-server/src/main/java/org/sonar/server/es/IndexerStartupTask.java View File

@@ -22,8 +22,8 @@ package org.sonar.server.es;
import org.sonar.api.config.Settings;
import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.issue.index.IssueIndexer;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.component.es.ProjectMeasuresIndexer;
import org.sonar.server.test.index.TestIndexer;
import org.sonar.server.user.index.UserIndexer;
@@ -34,7 +34,7 @@ public class IndexerStartupTask {
private static final Logger LOG = Loggers.get(IndexerStartupTask.class);

private final TestIndexer testIndexer;
private final IssueAuthorizationIndexer issueAuthorizationIndexer;
private final AuthorizationIndexer issueAuthorizationIndexer;
private final IssueIndexer issueIndexer;
private final UserIndexer userIndexer;
private final ViewIndexer viewIndexer;
@@ -43,12 +43,12 @@ public class IndexerStartupTask {

/**
* Limitation - {@link org.sonar.server.es.BaseIndexer} are not injected through an array or a collection
* because we need {@link org.sonar.server.issue.index.IssueAuthorizationIndexer} to be executed before
* because we need {@link AuthorizationIndexer} to be executed before
* {@link org.sonar.server.issue.index.IssueIndexer}
*/
public IndexerStartupTask(TestIndexer testIndexer, IssueAuthorizationIndexer issueAuthorizationIndexer, IssueIndexer issueIndexer,
UserIndexer userIndexer, ViewIndexer viewIndexer, ProjectMeasuresIndexer projectMeasuresIndexer,
Settings settings) {
public IndexerStartupTask(TestIndexer testIndexer, AuthorizationIndexer issueAuthorizationIndexer, IssueIndexer issueIndexer,
UserIndexer userIndexer, ViewIndexer viewIndexer, ProjectMeasuresIndexer projectMeasuresIndexer,
Settings settings) {
this.testIndexer = testIndexer;
this.issueAuthorizationIndexer = issueAuthorizationIndexer;
this.issueIndexer = issueIndexer;

+ 4
- 4
server/sonar-server/src/main/java/org/sonar/server/permission/PermissionService.java View File

@@ -33,7 +33,7 @@ import org.sonar.db.component.ResourceDto;
import org.sonar.db.permission.PermissionRepository;
import org.sonar.db.permission.template.PermissionTemplateDto;
import org.sonar.server.component.ComponentFinder;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.user.UserSession;

import static org.sonar.server.permission.PermissionPrivilegeChecker.checkProjectAdminUserByComponentKey;
@@ -43,12 +43,12 @@ public class PermissionService {

private final DbClient dbClient;
private final PermissionRepository permissionRepository;
private final IssueAuthorizationIndexer issueAuthorizationIndexer;
private final AuthorizationIndexer issueAuthorizationIndexer;
private final UserSession userSession;
private final ComponentFinder componentFinder;

public PermissionService(DbClient dbClient, PermissionRepository permissionRepository, IssueAuthorizationIndexer issueAuthorizationIndexer, UserSession userSession,
ComponentFinder componentFinder) {
public PermissionService(DbClient dbClient, PermissionRepository permissionRepository, AuthorizationIndexer issueAuthorizationIndexer, UserSession userSession,
ComponentFinder componentFinder) {
this.dbClient = dbClient;
this.permissionRepository = permissionRepository;
this.issueAuthorizationIndexer = issueAuthorizationIndexer;

+ 3
- 3
server/sonar-server/src/main/java/org/sonar/server/permission/PermissionUpdater.java View File

@@ -25,7 +25,7 @@ import java.util.Optional;
import java.util.Set;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.permission.index.AuthorizationIndexer;

/**
* Add or remove global/project permissions to a group. This class
@@ -35,11 +35,11 @@ import org.sonar.server.issue.index.IssueAuthorizationIndexer;
public class PermissionUpdater {

private final DbClient dbClient;
private final IssueAuthorizationIndexer issueAuthorizationIndexer;
private final AuthorizationIndexer issueAuthorizationIndexer;
private final UserPermissionChanger userPermissionChanger;
private final GroupPermissionChanger groupPermissionChanger;

public PermissionUpdater(DbClient dbClient, IssueAuthorizationIndexer issueAuthorizationIndexer,
public PermissionUpdater(DbClient dbClient, AuthorizationIndexer issueAuthorizationIndexer,
UserPermissionChanger userPermissionChanger, GroupPermissionChanger groupPermissionChanger) {
this.dbClient = dbClient;
this.issueAuthorizationIndexer = issueAuthorizationIndexer;

server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueAuthorizationDao.java → server/sonar-server/src/main/java/org/sonar/server/permission/index/AuthorizationDao.java View File

@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.issue.index;
package org.sonar.server.permission.index;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -35,7 +35,7 @@ import org.sonar.db.DbSession;
/**
* No streaming because of union of joins -> no need to use ResultSetIterator
*/
public class IssueAuthorizationDao {
public class AuthorizationDao {

public static final class Dto {
private final String projectUuid;
@@ -162,7 +162,7 @@ public class IssueAuthorizationDao {
DbUtils.closeQuietly(stmt);
}
} catch (SQLException e) {
throw new IllegalStateException("Fail to select issue authorizations after date: " + afterDate, e);
throw new IllegalStateException("Fail to select authorizations after date: " + afterDate, e);
}
}


server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueAuthorizationIndexer.java → server/sonar-server/src/main/java/org/sonar/server/permission/index/AuthorizationIndexer.java View File

@@ -17,21 +17,21 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.issue.index;
package org.sonar.server.permission.index;

import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableMap;
import java.util.Collection;
import java.util.Date;
import java.util.Map;
import org.elasticsearch.action.ActionRequest;
import org.elasticsearch.action.update.UpdateRequest;
import org.sonar.db.DbSession;
import org.sonar.db.DbClient;
import org.sonar.db.DbSession;
import org.sonar.server.es.BaseIndexer;
import org.sonar.server.es.BulkIndexer;
import org.sonar.server.es.EsClient;

import java.util.Collection;
import java.util.Date;
import java.util.Map;
import org.sonar.server.issue.index.IssueIndexDefinition;

/**
* Manages the synchronization of index issues/authorization with authorization settings defined in database :
@@ -40,11 +40,11 @@ import java.util.Map;
* <li>delete project orphans from index</li>
* </ul>
*/
public class IssueAuthorizationIndexer extends BaseIndexer {
public class AuthorizationIndexer extends BaseIndexer {

private final DbClient dbClient;

public IssueAuthorizationIndexer(DbClient dbClient, EsClient esClient) {
public AuthorizationIndexer(DbClient dbClient, EsClient esClient) {
super(esClient, 0L, IssueIndexDefinition.INDEX, IssueIndexDefinition.TYPE_AUTHORIZATION, IssueIndexDefinition.FIELD_ISSUE_TECHNICAL_UPDATED_AT);
this.dbClient = dbClient;
}
@@ -56,23 +56,23 @@ public class IssueAuthorizationIndexer extends BaseIndexer {
// will impact the type "issue" which is much bigger than issueAuthorization
BulkIndexer bulk = new BulkIndexer(esClient, IssueIndexDefinition.INDEX);

IssueAuthorizationDao dao = new IssueAuthorizationDao();
Collection<IssueAuthorizationDao.Dto> authorizations = dao.selectAfterDate(dbClient, dbSession, lastUpdatedAt);
AuthorizationDao dao = new AuthorizationDao();
Collection<AuthorizationDao.Dto> authorizations = dao.selectAfterDate(dbClient, dbSession, lastUpdatedAt);
return doIndex(bulk, authorizations);
}
}

@VisibleForTesting
public void index(Collection<IssueAuthorizationDao.Dto> authorizations) {
public void index(Collection<AuthorizationDao.Dto> authorizations) {
final BulkIndexer bulk = new BulkIndexer(esClient, IssueIndexDefinition.INDEX);
doIndex(bulk, authorizations);
}

private long doIndex(BulkIndexer bulk, Collection<IssueAuthorizationDao.Dto> authorizations) {
private long doIndex(BulkIndexer bulk, Collection<AuthorizationDao.Dto> authorizations) {
long maxDate = 0L;
bulk.start();
for (IssueAuthorizationDao.Dto authorization : authorizations) {
bulk.add(newUpdateRequest(authorization));
for (AuthorizationDao.Dto authorization : authorizations) {
bulk.add(newIssueUpdateRequest(authorization));
maxDate = Math.max(maxDate, authorization.getUpdatedAt());
}
bulk.stop();
@@ -87,7 +87,7 @@ public class IssueAuthorizationIndexer extends BaseIndexer {
.get();
}

private static ActionRequest newUpdateRequest(IssueAuthorizationDao.Dto dto) {
private static ActionRequest newIssueUpdateRequest(AuthorizationDao.Dto dto) {
Map<String, Object> doc = ImmutableMap.of(
IssueIndexDefinition.FIELD_AUTHORIZATION_PROJECT_UUID, dto.getProjectUuid(),
IssueIndexDefinition.FIELD_AUTHORIZATION_GROUPS, dto.getGroups(),

+ 2
- 2
server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java View File

@@ -102,7 +102,6 @@ import org.sonar.server.issue.SetSeverityAction;
import org.sonar.server.issue.SetTypeAction;
import org.sonar.server.issue.TransitionAction;
import org.sonar.server.issue.filter.IssueFilterWsModule;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.issue.index.IssueIndexDefinition;
import org.sonar.server.issue.index.IssueIndexer;
import org.sonar.server.issue.notification.ChangesOnMyIssueNotificationDispatcher;
@@ -140,6 +139,7 @@ import org.sonar.server.permission.GroupPermissionChanger;
import org.sonar.server.permission.PermissionService;
import org.sonar.server.permission.PermissionUpdater;
import org.sonar.server.permission.UserPermissionChanger;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.permission.ws.PermissionsWsModule;
import org.sonar.server.platform.BackendCleanup;
import org.sonar.server.platform.PersistentSettings;
@@ -457,7 +457,7 @@ public class PlatformLevel4 extends PlatformLevel {
// issues
IssueIndexDefinition.class,
IssueIndexer.class,
IssueAuthorizationIndexer.class,
AuthorizationIndexer.class,
ServerIssueStorage.class,
IssueUpdater.class,
FunctionExecutor.class,

+ 5
- 5
server/sonar-server/src/test/java/org/sonar/server/batch/IssuesActionTest.java View File

@@ -39,12 +39,12 @@ import org.sonar.server.component.ComponentFinder;
import org.sonar.server.es.EsTester;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.issue.IssueTesting;
import org.sonar.server.issue.index.IssueAuthorizationDao;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.issue.index.IssueDoc;
import org.sonar.server.issue.index.IssueIndex;
import org.sonar.server.issue.index.IssueIndexDefinition;
import org.sonar.server.issue.index.IssueIndexer;
import org.sonar.server.permission.index.AuthorizationDao;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.platform.ServerFileSystem;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.ws.WsTester;
@@ -78,7 +78,7 @@ public class IssuesActionTest {

private IssueIndex issueIndex;
private IssueIndexer issueIndexer;
private IssueAuthorizationIndexer issueAuthorizationIndexer;
private AuthorizationIndexer issueAuthorizationIndexer;
private ServerFileSystem fs = mock(ServerFileSystem.class);

WsTester tester;
@@ -89,7 +89,7 @@ public class IssuesActionTest {
public void before() {
issueIndex = new IssueIndex(es.client(), System2.INSTANCE, userSessionRule);
issueIndexer = new IssueIndexer(null, es.client());
issueAuthorizationIndexer = new IssueAuthorizationIndexer(null, es.client());
issueAuthorizationIndexer = new AuthorizationIndexer(null, es.client());
issuesAction = new IssuesAction(db.getDbClient(), issueIndex, userSessionRule, new ComponentFinder(db.getDbClient()));

tester = new WsTester(new BatchWs(new BatchIndex(fs), issuesAction));
@@ -329,7 +329,7 @@ public class IssuesActionTest {
}

private void addIssueAuthorization(String projectUuid, @Nullable String group, @Nullable String user) {
issueAuthorizationIndexer.index(newArrayList(new IssueAuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user)));
issueAuthorizationIndexer.index(newArrayList(new AuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user)));
}

private void addBrowsePermissionOnComponent(String componentKey) {

+ 2
- 2
server/sonar-server/src/test/java/org/sonar/server/component/ComponentCleanerServiceTest.java View File

@@ -42,9 +42,9 @@ import org.sonar.server.es.EsTester;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.issue.IssueTesting;
import org.sonar.server.issue.index.IssueAuthorizationDoc;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.issue.index.IssueIndexDefinition;
import org.sonar.server.issue.index.IssueIndexer;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.component.es.ProjectMeasuresIndexDefinition;
import org.sonar.server.component.es.ProjectMeasuresIndexer;
import org.sonar.server.test.index.TestDoc;
@@ -78,7 +78,7 @@ public class ComponentCleanerServiceTest {
DbClient dbClient = db.getDbClient();
DbSession dbSession = db.getSession();

IssueAuthorizationIndexer issueAuthorizationIndexer = new IssueAuthorizationIndexer(dbClient, es.client());
AuthorizationIndexer issueAuthorizationIndexer = new AuthorizationIndexer(dbClient, es.client());
IssueIndexer issueIndexer = new IssueIndexer(dbClient, es.client());
TestIndexer testIndexer = new TestIndexer(dbClient, es.client());
ProjectMeasuresIndexer projectMeasuresIndexer = new ProjectMeasuresIndexer(dbClient, es.client());

+ 3
- 3
server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/step/ApplyPermissionsStepTest.java View File

@@ -45,8 +45,8 @@ import org.sonar.server.computation.task.projectanalysis.component.TreeRootHolde
import org.sonar.server.computation.task.projectanalysis.component.ViewsComponent;
import org.sonar.server.computation.task.step.ComputationStep;
import org.sonar.server.es.EsTester;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.issue.index.IssueIndexDefinition;
import org.sonar.server.permission.index.AuthorizationIndexer;

import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.db.component.ComponentTesting.newView;
@@ -76,14 +76,14 @@ public class ApplyPermissionsStepTest extends BaseStepTest {
private DbSession dbSession;
private DbClient dbClient = dbTester.getDbClient();
private Settings settings = new MapSettings();
private IssueAuthorizationIndexer issueAuthorizationIndexer;
private AuthorizationIndexer issueAuthorizationIndexer;
private ApplyPermissionsStep step;

@Before
public void setUp() {
dbSession = dbClient.openSession(false);

issueAuthorizationIndexer = new IssueAuthorizationIndexer(dbClient, esTester.client());
issueAuthorizationIndexer = new AuthorizationIndexer(dbClient, esTester.client());

step = new ApplyPermissionsStep(dbClient, dbIdsRepository, issueAuthorizationIndexer, new PermissionRepository(dbClient, settings), treeRootHolder);
}

+ 5
- 3
server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexDebtTest.java View File

@@ -41,6 +41,8 @@ import org.sonar.server.es.SearchResult;
import org.sonar.server.issue.IssueQuery;
import org.sonar.server.issue.IssueQuery.Builder;
import org.sonar.server.issue.IssueTesting;
import org.sonar.server.permission.index.AuthorizationDao;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.view.index.ViewIndexDefinition;
import org.sonar.server.view.index.ViewIndexer;
@@ -64,13 +66,13 @@ public class IssueIndexDebtTest {
IssueIndex index;

IssueIndexer issueIndexer;
IssueAuthorizationIndexer issueAuthorizationIndexer;
AuthorizationIndexer issueAuthorizationIndexer;
ViewIndexer viewIndexer;

@Before
public void setUp() {
issueIndexer = new IssueIndexer(null, tester.client());
issueAuthorizationIndexer = new IssueAuthorizationIndexer(null, tester.client());
issueAuthorizationIndexer = new AuthorizationIndexer(null, tester.client());
viewIndexer = new ViewIndexer(null, tester.client());
System2 system = mock(System2.class);
when(system.getDefaultTimeZone()).thenReturn(TimeZone.getTimeZone("+01:00"));
@@ -285,7 +287,7 @@ public class IssueIndexDebtTest {
}

private void addIssueAuthorization(String projectUuid, @Nullable String group, @Nullable String user) {
issueAuthorizationIndexer.index(newArrayList(new IssueAuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user)));
issueAuthorizationIndexer.index(newArrayList(new AuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user)));
}

private Builder newQueryBuilder() {

+ 5
- 3
server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexTest.java View File

@@ -50,6 +50,8 @@ import org.sonar.server.es.SearchResult;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.issue.IssueQuery;
import org.sonar.server.issue.IssueTesting;
import org.sonar.server.permission.index.AuthorizationDao;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.view.index.ViewDoc;
import org.sonar.server.view.index.ViewIndexDefinition;
@@ -77,13 +79,13 @@ public class IssueIndexTest {
IssueIndex underTest;

IssueIndexer issueIndexer;
IssueAuthorizationIndexer issueAuthorizationIndexer;
AuthorizationIndexer issueAuthorizationIndexer;
ViewIndexer viewIndexer;

@Before
public void setUp() {
issueIndexer = new IssueIndexer(null, tester.client());
issueAuthorizationIndexer = new IssueAuthorizationIndexer(null, tester.client());
issueAuthorizationIndexer = new AuthorizationIndexer(null, tester.client());
viewIndexer = new ViewIndexer(null, tester.client());
System2 system = mock(System2.class);
when(system.getDefaultTimeZone()).thenReturn(TimeZone.getTimeZone("GMT-1:00"));
@@ -1288,7 +1290,7 @@ public class IssueIndexTest {
}

private void addIssueAuthorization(String projectUuid, @Nullable String group, @Nullable String user) {
issueAuthorizationIndexer.index(newArrayList(new IssueAuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user)));
issueAuthorizationIndexer.index(newArrayList(new AuthorizationDao.Dto(projectUuid, 1).addGroup(group).addUser(user)));
}

private void indexView(String viewUuid, List<String> projects) {

server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueAuthorizationDaoTest.java → server/sonar-server/src/test/java/org/sonar/server/permission/index/AuthorizationDaoTest.java View File

@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.issue.index;
package org.sonar.server.permission.index;

import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
@@ -29,26 +29,26 @@ import org.sonar.db.DbTester;

import static org.assertj.core.api.Assertions.assertThat;

public class IssueAuthorizationDaoTest {
public class AuthorizationDaoTest {

@Rule
public DbTester dbTester = DbTester.create(System2.INSTANCE);

private IssueAuthorizationDao dao = new IssueAuthorizationDao();
private AuthorizationDao dao = new AuthorizationDao();

@Test
public void select_all() {
dbTester.prepareDbUnit(getClass(), "shared.xml");

Collection<IssueAuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 0L);
Collection<AuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 0L);
assertThat(dtos).hasSize(2);

IssueAuthorizationDao.Dto abc = Iterables.find(dtos, new ProjectPredicate("ABC"));
AuthorizationDao.Dto abc = Iterables.find(dtos, new ProjectPredicate("ABC"));
assertThat(abc.getGroups()).containsOnly("Anyone", "devs");
assertThat(abc.getUsers()).containsOnly("user1");
assertThat(abc.getUpdatedAt()).isNotNull();

IssueAuthorizationDao.Dto def = Iterables.find(dtos, new ProjectPredicate("DEF"));
AuthorizationDao.Dto def = Iterables.find(dtos, new ProjectPredicate("DEF"));
assertThat(def.getGroups()).containsOnly("Anyone");
assertThat(def.getUsers()).containsOnly("user1", "user2");
assertThat(def.getUpdatedAt()).isNotNull();
@@ -58,11 +58,11 @@ public class IssueAuthorizationDaoTest {
public void select_after_date() {
dbTester.prepareDbUnit(getClass(), "shared.xml");

Collection<IssueAuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 1500000000L);
Collection<AuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 1500000000L);

// only project DEF was updated in this period
assertThat(dtos).hasSize(1);
IssueAuthorizationDao.Dto def = Iterables.find(dtos, new ProjectPredicate("DEF"));
AuthorizationDao.Dto def = Iterables.find(dtos, new ProjectPredicate("DEF"));
assertThat(def).isNotNull();
assertThat(def.getGroups()).containsOnly("Anyone");
assertThat(def.getUsers()).containsOnly("user1", "user2");
@@ -72,16 +72,16 @@ public class IssueAuthorizationDaoTest {
public void no_authorization() {
dbTester.prepareDbUnit(getClass(), "no_authorization.xml");

Collection<IssueAuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 0L);
Collection<AuthorizationDao.Dto> dtos = dao.selectAfterDate(dbTester.getDbClient(), dbTester.getSession(), 0L);

assertThat(dtos).hasSize(1);
IssueAuthorizationDao.Dto abc = Iterables.find(dtos, new ProjectPredicate("ABC"));
AuthorizationDao.Dto abc = Iterables.find(dtos, new ProjectPredicate("ABC"));
assertThat(abc.getGroups()).isEmpty();
assertThat(abc.getUsers()).isEmpty();
assertThat(abc.getUpdatedAt()).isNotNull();
}

private static class ProjectPredicate implements Predicate<IssueAuthorizationDao.Dto> {
private static class ProjectPredicate implements Predicate<AuthorizationDao.Dto> {

private final String projectUuid;

@@ -90,7 +90,7 @@ public class IssueAuthorizationDaoTest {
}

@Override
public boolean apply(IssueAuthorizationDao.Dto input) {
public boolean apply(AuthorizationDao.Dto input) {
return input.getProjectUuid().equals(projectUuid);
}


server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueAuthorizationIndexerTest.java → server/sonar-server/src/test/java/org/sonar/server/permission/index/AuthorizationIndexerTest.java View File

@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.server.issue.index;
package org.sonar.server.permission.index;

import java.util.Arrays;
import java.util.Collection;
@@ -30,11 +30,12 @@ import org.sonar.api.utils.System2;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
import org.sonar.server.es.EsTester;
import org.sonar.server.issue.index.IssueIndexDefinition;

import static org.assertj.core.api.Assertions.assertThat;


public class IssueAuthorizationIndexerTest {
public class AuthorizationIndexerTest {

@Rule
public DbTester dbTester = DbTester.create(System2.INSTANCE);
@@ -44,7 +45,7 @@ public class IssueAuthorizationIndexerTest {

@Test
public void index_nothing() {
IssueAuthorizationIndexer indexer = createIndexer();
AuthorizationIndexer indexer = createIndexer();
indexer.index();

assertThat(esTester.countDocuments("issues", "authorization")).isZero();
@@ -54,7 +55,7 @@ public class IssueAuthorizationIndexerTest {
public void index() {
dbTester.prepareDbUnit(getClass(), "index.xml");

IssueAuthorizationIndexer indexer = createIndexer();
AuthorizationIndexer indexer = createIndexer();
indexer.doIndex(0L);

List<SearchHit> docs = esTester.getDocuments("issues", "authorization");
@@ -72,15 +73,15 @@ public class IssueAuthorizationIndexerTest {

@Test
public void do_not_fail_when_deleting_unindexed_project() {
IssueAuthorizationIndexer indexer = createIndexer();
AuthorizationIndexer indexer = createIndexer();
indexer.deleteProject("UNKNOWN", true);
assertThat(esTester.countDocuments("issues", "authorization")).isZero();
}

@Test
public void delete_permissions() {
IssueAuthorizationIndexer indexer = createIndexer();
IssueAuthorizationDao.Dto authorization = new IssueAuthorizationDao.Dto("ABC", System.currentTimeMillis());
AuthorizationIndexer indexer = createIndexer();
AuthorizationDao.Dto authorization = new AuthorizationDao.Dto("ABC", System.currentTimeMillis());
authorization.addUser("guy");
authorization.addGroup("dev");
indexer.index(Arrays.asList(authorization));
@@ -89,7 +90,7 @@ public class IssueAuthorizationIndexerTest {
assertThat(esTester.countDocuments("issues", "authorization")).isEqualTo(1);

// remove permissions -> dto has no users nor groups
authorization = new IssueAuthorizationDao.Dto("ABC", System.currentTimeMillis());
authorization = new AuthorizationDao.Dto("ABC", System.currentTimeMillis());
indexer.index(Arrays.asList(authorization));

List<SearchHit> docs = esTester.getDocuments("issues", "authorization");
@@ -98,7 +99,7 @@ public class IssueAuthorizationIndexerTest {
assertThat((Collection)docs.get(0).sourceAsMap().get(IssueIndexDefinition.FIELD_AUTHORIZATION_GROUPS)).hasSize(0);
}

private IssueAuthorizationIndexer createIndexer() {
return new IssueAuthorizationIndexer(new DbClient(dbTester.database(), dbTester.myBatis()), esTester.client());
private AuthorizationIndexer createIndexer() {
return new AuthorizationIndexer(new DbClient(dbTester.database(), dbTester.myBatis()), esTester.client());
}
}

+ 2
- 2
server/sonar-server/src/test/java/org/sonar/server/permission/ws/BasePermissionWsTest.java View File

@@ -31,11 +31,11 @@ import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.permission.template.PermissionTemplateDto;
import org.sonar.db.permission.template.PermissionTemplateTesting;
import org.sonar.server.component.ComponentFinder;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
import org.sonar.server.permission.GroupPermissionChanger;
import org.sonar.server.permission.PermissionUpdater;
import org.sonar.server.permission.UserPermissionChanger;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.tester.UserSessionRule;
import org.sonar.server.usergroups.ws.GroupWsSupport;
import org.sonar.server.ws.WsTester;
@@ -77,7 +77,7 @@ public abstract class BasePermissionWsTest<A extends PermissionsWsAction> {

protected PermissionUpdater newPermissionUpdater() {
return new PermissionUpdater(db.getDbClient(),
mock(IssueAuthorizationIndexer.class),
mock(AuthorizationIndexer.class),
new UserPermissionChanger(db.getDbClient(), defaultOrganizationProvider),
new GroupPermissionChanger(db.getDbClient(), defaultOrganizationProvider));
}

+ 2
- 2
server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/ApplyTemplateActionTest.java View File

@@ -37,8 +37,8 @@ import org.sonar.server.component.ComponentFinder;
import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.permission.PermissionService;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.permission.ws.BasePermissionWsTest;
import org.sonar.server.ws.WsTester;

@@ -64,7 +64,7 @@ public class ApplyTemplateActionTest extends BasePermissionWsTest<ApplyTemplateA
private ComponentDto project;
private PermissionTemplateDto template1;
private PermissionTemplateDto template2;
private IssueAuthorizationIndexer issueAuthorizationIndexer = mock(IssueAuthorizationIndexer.class);
private AuthorizationIndexer issueAuthorizationIndexer = mock(AuthorizationIndexer.class);

@Override
protected ApplyTemplateAction buildWsAction() {

+ 2
- 2
server/sonar-server/src/test/java/org/sonar/server/permission/ws/template/BulkApplyTemplateActionTest.java View File

@@ -36,8 +36,8 @@ import org.sonar.server.component.ComponentFinder;
import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.i18n.I18nRule;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.permission.PermissionService;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.permission.ws.BasePermissionWsTest;
import org.sonar.server.ws.WsTester;

@@ -61,7 +61,7 @@ public class BulkApplyTemplateActionTest extends BasePermissionWsTest<BulkApplyT
private GroupDto group2;
private PermissionTemplateDto template1;
private PermissionTemplateDto template2;
private IssueAuthorizationIndexer issueAuthorizationIndexer = mock(IssueAuthorizationIndexer.class);
private AuthorizationIndexer issueAuthorizationIndexer = mock(AuthorizationIndexer.class);

@Override
protected BulkApplyTemplateAction buildWsAction() {

+ 2
- 2
server/sonar-server/src/test/java/org/sonar/server/project/ws/BulkDeleteActionTest.java View File

@@ -48,9 +48,9 @@ import org.sonar.server.es.EsTester;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.issue.IssueTesting;
import org.sonar.server.issue.index.IssueAuthorizationDoc;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.issue.index.IssueIndexDefinition;
import org.sonar.server.issue.index.IssueIndexer;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.component.es.ProjectMeasuresIndexer;
import org.sonar.server.test.index.TestDoc;
import org.sonar.server.test.index.TestIndexDefinition;
@@ -99,7 +99,7 @@ public class BulkDeleteActionTest {
ws = new WsTester(new ProjectsWs(
new BulkDeleteAction(
new ComponentCleanerService(dbClient,
new IssueAuthorizationIndexer(dbClient, es.client()),
new AuthorizationIndexer(dbClient, es.client()),
new IssueIndexer(dbClient, es.client()),
new TestIndexer(dbClient, es.client()),
new ProjectMeasuresIndexer(dbClient, es.client()),

+ 2
- 2
server/sonar-server/src/test/java/org/sonar/server/project/ws/DeleteActionTest.java View File

@@ -46,9 +46,9 @@ import org.sonar.server.es.EsTester;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.issue.IssueTesting;
import org.sonar.server.issue.index.IssueAuthorizationDoc;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.issue.index.IssueIndexDefinition;
import org.sonar.server.issue.index.IssueIndexer;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.component.es.ProjectMeasuresIndexer;
import org.sonar.server.test.index.TestDoc;
import org.sonar.server.test.index.TestIndexDefinition;
@@ -100,7 +100,7 @@ public class DeleteActionTest {
new DeleteAction(
new ComponentCleanerService(
dbClient,
new IssueAuthorizationIndexer(dbClient, es.client()),
new AuthorizationIndexer(dbClient, es.client()),
new IssueIndexer(dbClient, es.client()),
new TestIndexer(dbClient, es.client()),
new ProjectMeasuresIndexer(dbClient, es.client()),

+ 2
- 2
server/sonar-server/src/test/java/org/sonar/server/view/index/ViewIndexerTest.java View File

@@ -41,11 +41,11 @@ import org.sonar.server.es.SearchOptions;
import org.sonar.server.es.SearchResult;
import org.sonar.server.issue.IssueQuery;
import org.sonar.server.issue.IssueTesting;
import org.sonar.server.issue.index.IssueAuthorizationIndexer;
import org.sonar.server.issue.index.IssueDoc;
import org.sonar.server.issue.index.IssueIndex;
import org.sonar.server.issue.index.IssueIndexDefinition;
import org.sonar.server.issue.index.IssueIndexer;
import org.sonar.server.permission.index.AuthorizationIndexer;
import org.sonar.server.tester.UserSessionRule;

import static com.google.common.collect.Lists.newArrayList;
@@ -144,7 +144,7 @@ public class ViewIndexerTest {
public void clear_views_lookup_cache_on_index_view_uuid() {
IssueIndex issueIndex = new IssueIndex(esTester.client(), System2.INSTANCE, userSessionRule);
IssueIndexer issueIndexer = new IssueIndexer(dbClient, esTester.client());
IssueAuthorizationIndexer issueAuthorizationIndexer = new IssueAuthorizationIndexer(dbClient, esTester.client());
AuthorizationIndexer issueAuthorizationIndexer = new AuthorizationIndexer(dbClient, esTester.client());

String viewUuid = "ABCD";


server/sonar-server/src/test/resources/org/sonar/server/issue/index/IssueAuthorizationDaoTest/no_authorization.xml → server/sonar-server/src/test/resources/org/sonar/server/permission/index/AuthorizationDaoTest/no_authorization.xml View File


server/sonar-server/src/test/resources/org/sonar/server/issue/index/IssueAuthorizationDaoTest/shared.xml → server/sonar-server/src/test/resources/org/sonar/server/permission/index/AuthorizationDaoTest/shared.xml View File


server/sonar-server/src/test/resources/org/sonar/server/issue/index/IssueAuthorizationIndexerTest/index.xml → server/sonar-server/src/test/resources/org/sonar/server/permission/index/AuthorizationIndexerTest/index.xml View File


Loading…
Cancel
Save