Browse Source

SONAR-8429 apply permission template of specified organization

rather than the one of the default organization no matter what
PermissionTemplateService does not use the default organization under the hood anymore
tags/6.3-RC1
Sébastien Lesaint 7 years ago
parent
commit
722854e4dc

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

@@ -99,9 +99,10 @@ public class DefaultRubyComponentService implements RubyComponentService {
.setQualifier(qualifier)
.setBranch(branch)
.build());
permissionTemplateService.applyDefaultPermissionTemplate(dbSession, provisionedComponent.getKey());
String organizationUuid = defaultOrganizationProvider.get().getUuid();
permissionTemplateService.applyDefaultPermissionTemplate(dbSession, organizationUuid, provisionedComponent.getKey());
if (Qualifiers.PROJECT.equals(provisionedComponent.qualifier())
&& permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(dbSession, provisionedComponent)) {
&& permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(dbSession, organizationUuid, provisionedComponent)) {
favoriteUpdater.add(dbSession, provisionedComponent);
dbSession.commit();
}

+ 6
- 6
server/sonar-server/src/main/java/org/sonar/server/computation/queue/ReportSubmitter.java View File

@@ -57,8 +57,8 @@ public class ReportSubmitter {
private final DbClient dbClient;
private final FavoriteUpdater favoriteUpdater;

public ReportSubmitter(CeQueue queue, UserSession userSession,
ComponentService componentService, PermissionTemplateService permissionTemplateService, DbClient dbClient, FavoriteUpdater favoriteUpdater) {
public ReportSubmitter(CeQueue queue, UserSession userSession, ComponentService componentService,
PermissionTemplateService permissionTemplateService, DbClient dbClient, FavoriteUpdater favoriteUpdater) {
this.queue = queue;
this.userSession = userSession;
this.componentService = componentService;
@@ -88,7 +88,7 @@ public class ReportSubmitter {
.orElseThrow(() -> new NotFoundException(format("Organization with key '%s' does not exist", organizationKey)));
}

private void ensureOrganizationIsConsistent(Optional<ComponentDto> project, OrganizationDto organizationDto) {
private static void ensureOrganizationIsConsistent(Optional<ComponentDto> project, OrganizationDto organizationDto) {
if (project.isPresent()) {
checkArgument(project.get().getOrganizationUuid().equals(organizationDto.getUuid()),
"Organization of component with key '%s' does not match specified organization '%s'",
@@ -101,7 +101,7 @@ public class ReportSubmitter {
Long projectCreatorUserId = userId == null ? null : userId.longValue();

boolean wouldCurrentUserHaveScanPermission = permissionTemplateService.wouldUserHavePermissionWithDefaultTemplate(
dbSession, projectCreatorUserId, SCAN_EXECUTION, projectBranch, projectKey, Qualifiers.PROJECT);
dbSession, organizationUuid, projectCreatorUserId, SCAN_EXECUTION, projectBranch, projectKey, Qualifiers.PROJECT);
if (!wouldCurrentUserHaveScanPermission) {
throw insufficientPrivilegesException();
}
@@ -115,12 +115,12 @@ public class ReportSubmitter {
.build();
// "provisioning" permission is check in ComponentService
ComponentDto project = componentService.create(dbSession, newProject);
if (permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(dbSession, project)) {
if (permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(dbSession, organizationUuid, project)) {
favoriteUpdater.add(dbSession, project);
dbSession.commit();
}

permissionTemplateService.applyDefault(dbSession, project, projectCreatorUserId);
permissionTemplateService.applyDefault(dbSession, organizationUuid, project, projectCreatorUserId);

return project;
}

+ 13
- 34
server/sonar-server/src/main/java/org/sonar/server/permission/PermissionTemplateService.java View File

@@ -44,7 +44,6 @@ import org.sonar.db.permission.template.PermissionTemplateCharacteristicDto;
import org.sonar.db.permission.template.PermissionTemplateDto;
import org.sonar.db.permission.template.PermissionTemplateGroupDto;
import org.sonar.db.permission.template.PermissionTemplateUserDto;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.permission.index.PermissionIndexer;
import org.sonar.server.user.UserSession;

@@ -62,37 +61,20 @@ public class PermissionTemplateService {
private final Settings settings;
private final PermissionIndexer permissionIndexer;
private final UserSession userSession;
private final DefaultOrganizationProvider defaultOrganizationProvider;

public PermissionTemplateService(DbClient dbClient, Settings settings, PermissionIndexer permissionIndexer, UserSession userSession,
DefaultOrganizationProvider defaultOrganizationProvider) {
public PermissionTemplateService(DbClient dbClient, Settings settings, PermissionIndexer permissionIndexer, UserSession userSession) {
this.dbClient = dbClient;
this.settings = settings;
this.permissionIndexer = permissionIndexer;
this.userSession = userSession;
this.defaultOrganizationProvider = defaultOrganizationProvider;
}

/**
* @deprecated replaced by {@link #applyDefault(DbSession, ComponentDto, Long)}, which <b>does not
* @deprecated replaced by {@link #applyDefault(DbSession, String, ComponentDto, Long)}, which <b>does not
* verify that user is authorized to administrate the component</b>.
*/
@Deprecated
public void applyDefaultPermissionTemplate(String componentKey) {
DbSession session = dbClient.openSession(false);
try {
applyDefaultPermissionTemplate(session, componentKey);
} finally {
session.close();
}
}

/**
* @deprecated replaced by {@link #applyDefault(DbSession, ComponentDto, Long)}, which <b>does not
* verify that user is authorized to administrate the component</b>.
*/
@Deprecated
public void applyDefaultPermissionTemplate(DbSession session, String componentKey) {
public void applyDefaultPermissionTemplate(DbSession session, String organizationUuid, String componentKey) {
ComponentDto component = checkFoundWithOptional(dbClient.componentDao().selectByKey(session, componentKey), "Component key '%s' not found", componentKey);
ResourceDto provisioned = dbClient.resourceDao().selectProvisionedProject(session, componentKey);
if (provisioned == null) {
@@ -103,17 +85,18 @@ public class PermissionTemplateService {

Integer currentUserId = userSession.getUserId();
Long userId = Qualifiers.PROJECT.equals(component.qualifier()) && currentUserId != null ? currentUserId.longValue() : null;
applyDefault(session, component, userId);
applyDefault(session, organizationUuid, component, userId);
}

public boolean wouldUserHavePermissionWithDefaultTemplate(DbSession dbSession, @Nullable Long userId, String permission, @Nullable String branch, String projectKey,
public boolean wouldUserHavePermissionWithDefaultTemplate(DbSession dbSession,
String organizationUuid, @Nullable Long userId, String permission, @Nullable String branch, String projectKey,
String qualifier) {
if (userSession.hasPermission(permission)) {
return true;
}

String effectiveKey = ComponentKeys.createKey(projectKey, branch);
PermissionTemplateDto template = findDefaultTemplate(dbSession, new ComponentDto().setKey(effectiveKey).setQualifier(qualifier));
PermissionTemplateDto template = findTemplate(dbSession, organizationUuid, new ComponentDto().setKey(effectiveKey).setQualifier(qualifier));
if (template == null) {
return false;
}
@@ -142,22 +125,18 @@ public class PermissionTemplateService {
/**
* Apply the default permission template to project. The project can already exist (so it has permissions) or
* can be provisioned (so has no permissions yet).
*
* @param dbSession
* @param component
* @param projectCreatorUserId id of the user who creates the project, only if project is provisioned. He will
* benefit from the permissions defined in the template for "project creator".
*/
public void applyDefault(DbSession dbSession, ComponentDto component, @Nullable Long projectCreatorUserId) {
PermissionTemplateDto template = findDefaultTemplate(dbSession, component);
public void applyDefault(DbSession dbSession, String organizationUuid, ComponentDto component, @Nullable Long projectCreatorUserId) {
PermissionTemplateDto template = findTemplate(dbSession, organizationUuid, component);
checkArgument(template != null, "Cannot retrieve default permission template");
copyPermissions(dbSession, template, component, projectCreatorUserId);
dbSession.commit();
indexProjectPermissions(dbSession, asList(component.uuid()));
}

public boolean hasDefaultTemplateWithPermissionOnProjectCreator(DbSession dbSession, ComponentDto component) {
PermissionTemplateDto template = findDefaultTemplate(dbSession, component);
public boolean hasDefaultTemplateWithPermissionOnProjectCreator(DbSession dbSession, String organizationUuid, ComponentDto component) {
PermissionTemplateDto template = findTemplate(dbSession, organizationUuid, component);
return hasProjectCreatorPermission(dbSession, template);
}

@@ -214,8 +193,8 @@ public class PermissionTemplateService {
* template for the component qualifier.
*/
@CheckForNull
private PermissionTemplateDto findDefaultTemplate(DbSession dbSession, ComponentDto component) {
List<PermissionTemplateDto> allPermissionTemplates = dbClient.permissionTemplateDao().selectAll(dbSession, defaultOrganizationProvider.get().getUuid(), null);
private PermissionTemplateDto findTemplate(DbSession dbSession, String organizationUuid, ComponentDto component) {
List<PermissionTemplateDto> allPermissionTemplates = dbClient.permissionTemplateDao().selectAll(dbSession, organizationUuid, null);
List<PermissionTemplateDto> matchingTemplates = new ArrayList<>();
for (PermissionTemplateDto permissionTemplateDto : allPermissionTemplates) {
String keyPattern = permissionTemplateDto.getKeyPattern();

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

@@ -21,6 +21,7 @@ package org.sonar.server.component;

import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.config.MapSettings;
@@ -82,6 +83,13 @@ public class DefaultRubyComponentServiceTest {
private DefaultRubyComponentService underTest = new DefaultRubyComponentService(dbClient, resourceDao, componentService,
permissionTemplateService, favoriteUpdater, defaultOrganizationProvider);

private String defaultOrganizationUuid;

@Before
public void setUp() throws Exception {
defaultOrganizationUuid = db.getDefaultOrganization().getUuid();
}

@Test
public void find_by_key() {
ComponentDto componentDto = componentDb.insertProject();
@@ -109,7 +117,7 @@ public class DefaultRubyComponentServiceTest {
String componentKey = "new-project";
String componentName = "New Project";
String qualifier = Qualifiers.PROJECT;
when(permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(any(DbSession.class), any(ComponentDto.class))).thenReturn(true);
when(permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(any(DbSession.class), eq(defaultOrganizationUuid), any(ComponentDto.class))).thenReturn(true);

Long result = underTest.createComponent(componentKey, componentName, qualifier);

@@ -118,7 +126,7 @@ public class DefaultRubyComponentServiceTest {
assertThat(project.name()).isEqualTo(componentName);
assertThat(project.qualifier()).isEqualTo(qualifier);
assertThat(project.getId()).isEqualTo(result);
verify(permissionTemplateService).applyDefaultPermissionTemplate(any(DbSession.class), eq(componentKey));
verify(permissionTemplateService).applyDefaultPermissionTemplate(any(DbSession.class), eq(defaultOrganizationUuid), eq(componentKey));
verify(favoriteUpdater).add(any(DbSession.class), eq(project));
}


+ 8
- 6
server/sonar-server/src/test/java/org/sonar/server/computation/queue/ReportSubmitterTest.java View File

@@ -73,6 +73,7 @@ public class ReportSubmitterTest {
public DbTester db = DbTester.create(System2.INSTANCE);

private String defaultOrganizationKey;
private String defaultOrganizationUuid;
private CeQueue queue = mock(CeQueueImpl.class);
private ComponentService componentService = mock(ComponentService.class);
private PermissionTemplateService permissionTemplateService = mock(PermissionTemplateService.class);
@@ -83,6 +84,7 @@ public class ReportSubmitterTest {
@Before
public void setUp() throws Exception {
defaultOrganizationKey = db.getDefaultOrganization().getKey();
defaultOrganizationUuid = db.getDefaultOrganization().getUuid();
}

@Test
@@ -137,14 +139,14 @@ public class ReportSubmitterTest {
mockSuccessfulPrepareSubmitCall();
ComponentDto createdProject = new ComponentDto().setId(23L).setUuid(PROJECT_UUID).setKey(PROJECT_KEY);
when(componentService.create(any(DbSession.class), any(NewComponent.class))).thenReturn(createdProject);
when(permissionTemplateService.wouldUserHavePermissionWithDefaultTemplate(any(DbSession.class), anyLong(), eq(SCAN_EXECUTION), anyString(), eq(PROJECT_KEY), eq(Qualifiers.PROJECT)))
when(permissionTemplateService.wouldUserHavePermissionWithDefaultTemplate(any(DbSession.class), eq(organization.getUuid()), anyLong(), eq(SCAN_EXECUTION), anyString(), eq(PROJECT_KEY), eq(Qualifiers.PROJECT)))
.thenReturn(true);
when(permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(any(DbSession.class), any(ComponentDto.class))).thenReturn(true);
when(permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(any(DbSession.class), eq(organization.getUuid()), any(ComponentDto.class))).thenReturn(true);

underTest.submit(organization.getKey(), PROJECT_KEY, null, PROJECT_NAME, IOUtils.toInputStream("{binary}"));

verifyReportIsPersisted(TASK_UUID);
verify(permissionTemplateService).applyDefault(any(DbSession.class), eq(createdProject), anyLong());
verify(permissionTemplateService).applyDefault(any(DbSession.class), eq(organization.getUuid()), eq(createdProject), anyLong());
verify(favoriteUpdater).add(any(DbSession.class), eq(createdProject));
verify(queue).submit(argThat(new TypeSafeMatcher<CeTaskSubmit>() {
@Override
@@ -167,9 +169,9 @@ public class ReportSubmitterTest {
mockSuccessfulPrepareSubmitCall();
ComponentDto createdProject = new ComponentDto().setId(23L).setUuid(PROJECT_UUID).setKey(PROJECT_KEY);
when(componentService.create(any(DbSession.class), any(NewComponent.class))).thenReturn(createdProject);
when(permissionTemplateService.wouldUserHavePermissionWithDefaultTemplate(any(DbSession.class), anyLong(), eq(SCAN_EXECUTION), anyString(), eq(PROJECT_KEY), eq(Qualifiers.PROJECT)))
when(permissionTemplateService.wouldUserHavePermissionWithDefaultTemplate(any(DbSession.class), eq(defaultOrganizationUuid), anyLong(), eq(SCAN_EXECUTION), anyString(), eq(PROJECT_KEY), eq(Qualifiers.PROJECT)))
.thenReturn(true);
when(permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(any(DbSession.class), any(ComponentDto.class))).thenReturn(false);
when(permissionTemplateService.hasDefaultTemplateWithPermissionOnProjectCreator(any(DbSession.class), eq(defaultOrganizationUuid), any(ComponentDto.class))).thenReturn(false);

underTest.submit(defaultOrganizationKey, PROJECT_KEY, null, PROJECT_NAME, IOUtils.toInputStream("{binary}"));

@@ -182,7 +184,7 @@ public class ReportSubmitterTest {

mockSuccessfulPrepareSubmitCall();
when(componentService.create(any(DbSession.class), any(NewComponent.class))).thenReturn(new ComponentDto().setId(23L).setUuid(PROJECT_UUID).setKey(PROJECT_KEY));
when(permissionTemplateService.wouldUserHavePermissionWithDefaultTemplate(any(DbSession.class), anyLong(), eq(SCAN_EXECUTION), anyString(), eq(PROJECT_KEY), eq(Qualifiers.PROJECT)))
when(permissionTemplateService.wouldUserHavePermissionWithDefaultTemplate(any(DbSession.class), eq(defaultOrganizationUuid), anyLong(), eq(SCAN_EXECUTION), anyString(), eq(PROJECT_KEY), eq(Qualifiers.PROJECT)))
.thenReturn(true);

underTest.submit(defaultOrganizationKey, PROJECT_KEY, null, PROJECT_NAME, IOUtils.toInputStream("{binary}"));

+ 15
- 32
server/sonar-server/src/test/java/org/sonar/server/permission/PermissionTemplateServiceTest.java View File

@@ -37,8 +37,6 @@ import org.sonar.db.permission.template.PermissionTemplateDbTester;
import org.sonar.db.permission.template.PermissionTemplateDto;
import org.sonar.db.user.GroupDto;
import org.sonar.db.user.UserDto;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
import org.sonar.server.permission.index.PermissionIndexer;
import org.sonar.server.tester.UserSessionRule;

@@ -46,14 +44,12 @@ import static java.util.Collections.singletonList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.sonar.core.permission.GlobalPermissions.PROVISIONING;
import static org.sonar.core.permission.GlobalPermissions.SCAN_EXECUTION;
import static org.sonar.db.component.ComponentTesting.newProjectDto;
import static org.sonar.db.user.GroupTesting.newGroupDto;

public class PermissionTemplateServiceTest {

private static final String DEFAULT_TEMPLATE = "default_20130101_010203";
private static final ComponentDto PROJECT = newProjectDto().setId(123L).setUuid("THE_PROJECT_UUID");
private static final long NOW = 123456789L;

@@ -70,9 +66,8 @@ public class PermissionTemplateServiceTest {
private DbSession session = dbTester.getSession();
private Settings settings = new MapSettings();
private PermissionIndexer permissionIndexer = mock(PermissionIndexer.class);
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(dbTester);
private PermissionTemplateService underTest = new PermissionTemplateService(dbTester.getDbClient(), settings,
permissionIndexer, userSession, defaultOrganizationProvider);
permissionIndexer, userSession);

@Before
public void setUp() {
@@ -109,18 +104,6 @@ public class PermissionTemplateServiceTest {
userId, project.getId());
}

@Test
public void applyDefaultPermissionTemplate_from_component_key() {
dbTester.prepareDbUnit(getClass(), "apply_default_permission_template_by_component_id.xml");
userSession.setGlobalPermissions(PROVISIONING);
settings.setProperty("sonar.permission.template.default", DEFAULT_TEMPLATE);

underTest.applyDefaultPermissionTemplate("org.struts:struts");
session.commit();

dbTester.assertDbUnitTable(getClass(), "apply_default_permission_template_by_component_id-result.xml", "user_roles", "user_id", "resource_id", "role");
}

@Test
public void would_user_have_permission_with_default_permission_template() {
UserDto user = dbTester.users().insertUser();
@@ -134,25 +117,25 @@ public class PermissionTemplateServiceTest {
templateDb.addGroupToTemplate(template.getId(), null, UserRole.ISSUE_ADMIN);

// authenticated user
checkWouldUserHavePermission(user.getId(), UserRole.ADMIN, false);
checkWouldUserHavePermission(user.getId(), SCAN_EXECUTION, true);
checkWouldUserHavePermission(user.getId(), UserRole.USER, true);
checkWouldUserHavePermission(user.getId(), UserRole.CODEVIEWER, true);
checkWouldUserHavePermission(user.getId(), UserRole.ISSUE_ADMIN, true);
checkWouldUserHavePermission(template.getOrganizationUuid(), user.getId(), UserRole.ADMIN, false);
checkWouldUserHavePermission(template.getOrganizationUuid(), user.getId(), SCAN_EXECUTION, true);
checkWouldUserHavePermission(template.getOrganizationUuid(), user.getId(), UserRole.USER, true);
checkWouldUserHavePermission(template.getOrganizationUuid(), user.getId(), UserRole.CODEVIEWER, true);
checkWouldUserHavePermission(template.getOrganizationUuid(), user.getId(), UserRole.ISSUE_ADMIN, true);

// anonymous user
checkWouldUserHavePermission(null, UserRole.ADMIN, false);
checkWouldUserHavePermission(null, SCAN_EXECUTION, false);
checkWouldUserHavePermission(null, UserRole.USER, false);
checkWouldUserHavePermission(null, UserRole.CODEVIEWER, false);
checkWouldUserHavePermission(null, UserRole.ISSUE_ADMIN, true);
checkWouldUserHavePermission(template.getOrganizationUuid(), null, UserRole.ADMIN, false);
checkWouldUserHavePermission(template.getOrganizationUuid(), null, SCAN_EXECUTION, false);
checkWouldUserHavePermission(template.getOrganizationUuid(), null, UserRole.USER, false);
checkWouldUserHavePermission(template.getOrganizationUuid(), null, UserRole.CODEVIEWER, false);
checkWouldUserHavePermission(template.getOrganizationUuid(), null, UserRole.ISSUE_ADMIN, true);
}

@Test
public void would_user_have_permission_with_unknown_default_permission_template() {
setDefaultTemplateUuid("UNKNOWN_TEMPLATE_UUID");

checkWouldUserHavePermission(null, UserRole.ADMIN, false);
checkWouldUserHavePermission(dbTester.getDefaultOrganization().getUuid(), null, UserRole.ADMIN, false);
}

@Test
@@ -160,11 +143,11 @@ public class PermissionTemplateServiceTest {
PermissionTemplateDto template = templateDb.insertTemplate();
setDefaultTemplateUuid(template.getUuid());

checkWouldUserHavePermission(null, UserRole.ADMIN, false);
checkWouldUserHavePermission(template.getOrganizationUuid(), null, UserRole.ADMIN, false);
}

private void checkWouldUserHavePermission(@Nullable Long userId, String permission, boolean expectedResult) {
assertThat(underTest.wouldUserHavePermissionWithDefaultTemplate(session, userId, permission, null, "PROJECT_KEY", Qualifiers.PROJECT)).isEqualTo(expectedResult);
private void checkWouldUserHavePermission(String organizationUuid, @Nullable Long userId, String permission, boolean expectedResult) {
assertThat(underTest.wouldUserHavePermissionWithDefaultTemplate(session, organizationUuid, userId, permission, null, "PROJECT_KEY", Qualifiers.PROJECT)).isEqualTo(expectedResult);
}

private void checkAuthorizationUpdatedAtIsUpdated() {

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

@@ -40,8 +40,6 @@ import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.issue.index.IssueIndexDefinition;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
import org.sonar.server.permission.PermissionTemplateService;
import org.sonar.server.permission.index.PermissionIndexer;
import org.sonar.server.permission.index.PermissionIndexerTester;
@@ -72,12 +70,11 @@ public class ApplyTemplateActionTest extends BasePermissionWsTest<ApplyTemplateA
private PermissionTemplateDto template2;
private PermissionIndexerTester authorizationIndexerTester = new PermissionIndexerTester(esTester);
private PermissionIndexer permissionIndexer = new PermissionIndexer(db.getDbClient(), esTester.client());
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);

@Override
protected ApplyTemplateAction buildWsAction() {
PermissionTemplateService permissionTemplateService = new PermissionTemplateService(db.getDbClient(),
new MapSettings(), permissionIndexer, userSession, defaultOrganizationProvider);
new MapSettings(), permissionIndexer, userSession);
return new ApplyTemplateAction(db.getDbClient(), userSession, permissionTemplateService, newPermissionWsSupport());
}


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

@@ -34,8 +34,6 @@ import org.sonar.db.user.UserDto;
import org.sonar.server.exceptions.BadRequestException;
import org.sonar.server.exceptions.NotFoundException;
import org.sonar.server.i18n.I18nRule;
import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.organization.TestDefaultOrganizationProvider;
import org.sonar.server.permission.PermissionTemplateService;
import org.sonar.server.permission.index.PermissionIndexer;
import org.sonar.server.permission.ws.BasePermissionWsTest;
@@ -58,12 +56,11 @@ public class BulkApplyTemplateActionTest extends BasePermissionWsTest<BulkApplyT
private PermissionTemplateDto template1;
private PermissionTemplateDto template2;
private PermissionIndexer issuePermissionIndexer = mock(PermissionIndexer.class);
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);

@Override
protected BulkApplyTemplateAction buildWsAction() {
PermissionTemplateService permissionTemplateService = new PermissionTemplateService(db.getDbClient(), new MapSettings(),
issuePermissionIndexer, userSession, defaultOrganizationProvider);
issuePermissionIndexer, userSession);
return new BulkApplyTemplateAction(db.getDbClient(), userSession, permissionTemplateService, newPermissionWsSupport(), new I18nRule(), newRootResourceTypes());
}


Loading…
Cancel
Save