From 099ae301cc257e62c8bf9db2f2d34ef9f44e8e49 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Thu, 23 Mar 2017 16:36:01 +0100 Subject: [PATCH] SONAR-8864 add canCreateCustomRule to response of api/rules/app --- .../org/sonar/server/rule/ws/AppAction.java | 1 + .../sonar/server/rule/ws/AppActionTest.java | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+) 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"); -- 2.39.5