From: Sébastien Lesaint Date: Thu, 23 Mar 2017 15:36:01 +0000 (+0100) Subject: SONAR-8864 add canCreateCustomRule to response of api/rules/app X-Git-Tag: 6.4-RC1~552 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F1852%2Fhead;p=sonarqube.git SONAR-8864 add canCreateCustomRule to response of api/rules/app --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/AppAction.java b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/AppAction.java index c757ed20a07..1a16c72a21e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/rule/ws/AppAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/rule/ws/AppAction.java @@ -88,6 +88,7 @@ public class AppAction implements RulesWsAction { boolean isAdminister = userSession.hasPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, organization); json.prop("canWrite", isAdminister); json.prop("canCustomizeRule", isAdminister && organization.getUuid().equals(defaultOrganizationProvider.get().getUuid())); + json.prop("canCreateCustomRule", isAdminister && organization.getUuid().equals(defaultOrganizationProvider.get().getUuid())); } private void addProfiles(DbSession dbSession, OrganizationDto organization, JsonWriter json) { diff --git a/server/sonar-server/src/test/java/org/sonar/server/rule/ws/AppActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/rule/ws/AppActionTest.java index 9c4e519c70d..da6ec1937a7 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/rule/ws/AppActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/rule/ws/AppActionTest.java @@ -254,6 +254,51 @@ public class AppActionTest { assertJson(json).isSimilarTo("{ \"canCustomizeRule\": false }"); } + @Test + public void canCreateCustomRule_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("{ \"canCreateCustomRule\": true }"); + } + + @Test + public void canCreateCustomRule_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("{ \"canCreateCustomRule\": true }"); + } + + @Test + public void canCreateCustomRule_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("{ \"canCreateCustomRule\": false }"); + } + + @Test + public void canCreateCustomRule_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("{ \"canCreateCustomRule\": false }"); + } + private void insertRules() { RuleRepositoryDto repo1 = new RuleRepositoryDto("xoo", "xoo", "SonarQube"); RuleRepositoryDto repo2 = new RuleRepositoryDto("squid", "ws", "SonarQube");