import org.sonar.db.organization.OrganizationDto;
import org.sonar.db.permission.OrganizationPermission;
import org.sonar.db.qualityprofile.QualityProfileDto;
-import org.sonar.server.organization.DefaultOrganizationProvider;
import org.sonar.server.user.UserSession;
import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_ORGANIZATION;
private final DbClient dbClient;
private final UserSession userSession;
private final RuleWsSupport wsSupport;
- private final DefaultOrganizationProvider defaultOrganizationProvider;
- public AppAction(Languages languages, DbClient dbClient, UserSession userSession, RuleWsSupport wsSupport,
- DefaultOrganizationProvider defaultOrganizationProvider) {
+ public AppAction(Languages languages, DbClient dbClient, UserSession userSession, RuleWsSupport wsSupport) {
this.languages = languages;
this.dbClient = dbClient;
this.userSession = userSession;
this.wsSupport = wsSupport;
- this.defaultOrganizationProvider = defaultOrganizationProvider;
}
@Override
}
private void addPermissions(OrganizationDto organization, JsonWriter json) {
- boolean isAdminister = userSession.hasPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, organization);
- json.prop("canWrite", isAdminister);
- json.prop("canCustomizeRule", isAdminister && organization.getUuid().equals(defaultOrganizationProvider.get().getUuid()));
+ boolean canWrite = userSession.hasPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, organization);
+ json.prop("canWrite", canWrite);
}
private void addProfiles(DbSession dbSession, OrganizationDto organization, JsonWriter json) {
private Languages languages = new Languages(LANG1, LANG2);
private DefaultOrganizationProvider defaultOrganizationProvider = TestDefaultOrganizationProvider.from(db);
private RuleWsSupport wsSupport = new RuleWsSupport(db.getDbClient(), userSession, defaultOrganizationProvider);
- private AppAction underTest = new AppAction(languages, db.getDbClient(), userSession, wsSupport, defaultOrganizationProvider);
+ private AppAction underTest = new AppAction(languages, db.getDbClient(), userSession, wsSupport);
private WsActionTester tester = new WsActionTester(underTest);
@Test
assertJson(json).isSimilarTo("{ \"canWrite\": false }");
}
- @Test
- public void canCustomizeRule_is_true_if_user_is_profile_administrator_of_default_organization_and_no_organization_is_specified() {
- userSession.addPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, db.getDefaultOrganization());
-
- String json = tester.newRequest().execute().getInput();
-
- assertJson(json).isSimilarTo("{ \"canCustomizeRule\": true }");
- }
-
- @Test
- public void canCustomizeRule_is_true_if_user_is_profile_administrator_of_specified_default_organization() {
- userSession.addPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, db.getDefaultOrganization());
-
- String json = tester.newRequest()
- .setParam("organization", db.getDefaultOrganization().getKey())
- .execute().getInput();
-
- assertJson(json).isSimilarTo("{ \"canCustomizeRule\": true }");
- }
-
- @Test
- public void canCustomizeRule_is_false_if_user_is_profile_administrator_of_specified_non_default_organization() {
- OrganizationDto organization = db.organizations().insert();
- userSession.addPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, organization);
-
- String json = tester.newRequest()
- .setParam("organization", organization.getKey())
- .execute().getInput();
-
- assertJson(json).isSimilarTo("{ \"canCustomizeRule\": false }");
- }
-
- @Test
- public void canCustomizeRule_is_false_if_user_is_not_profile_administrator_of_specified_non_default_organization() {
- OrganizationDto organization1 = db.organizations().insert();
- OrganizationDto organization2 = db.organizations().insert();
- userSession.addPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, organization1);
-
- String json = tester.newRequest()
- .setParam("organization", organization2.getKey())
- .execute().getInput();
-
- assertJson(json).isSimilarTo("{ \"canCustomizeRule\": false }");
- }
-
private void insertRules() {
RuleRepositoryDto repo1 = new RuleRepositoryDto("xoo", "xoo", "SonarQube");
RuleRepositoryDto repo2 = new RuleRepositoryDto("squid", "ws", "SonarQube");