]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8857 make api/qualityprofiles/de|activate_rules organization aware 1753/head
authorDaniel Schwarz <daniel.schwarz@sonarsource.com>
Thu, 23 Mar 2017 16:28:29 +0000 (17:28 +0100)
committerDaniel Schwarz <bartfastiel@users.noreply.github.com>
Thu, 23 Mar 2017 19:57:55 +0000 (20:57 +0100)
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ActivateRuleAction.java
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ActivateRulesAction.java
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/BulkChangeWsResponse.java
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/DeactivateRuleAction.java
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/DeactivateRulesAction.java
server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfileWsSupport.java
server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ActivateRulesActionTest.java
server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/DeactivateRulesActionTest.java
server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java

index 342421b64e8957f419870bc67c8b7848436b0ac3..0a284aae3e32514f1950f61b2b68a84f2e594154 100644 (file)
@@ -30,9 +30,6 @@ import org.sonar.api.utils.KeyValueFormat;
 import org.sonar.core.util.Uuids;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
-import org.sonar.db.organization.OrganizationDto;
-import org.sonar.db.permission.OrganizationPermission;
-import org.sonar.db.qualityprofile.QualityProfileDto;
 import org.sonar.server.qualityprofile.ActiveRuleChange;
 import org.sonar.server.qualityprofile.RuleActivation;
 import org.sonar.server.qualityprofile.RuleActivator;
@@ -108,7 +105,7 @@ public class ActivateRuleAction implements QProfileWsAction {
     String profileKey = request.mandatoryParam(PARAM_PROFILE_KEY);
     userSession.checkLoggedIn();
     try (DbSession dbSession = dbClient.openSession(false)) {
-      checkPermission(dbSession, profileKey);
+      wsSupport.checkPermission(dbSession, profileKey);
       List<ActiveRuleChange> changes = ruleActivator.activate(dbSession, activation, profileKey);
       dbSession.commit();
       activeRuleIndexer.index(changes);
@@ -118,10 +115,4 @@ public class ActivateRuleAction implements QProfileWsAction {
   private static RuleKey readRuleKey(Request request) {
     return RuleKey.parse(request.mandatoryParam(PARAM_RULE_KEY));
   }
-
-  private void checkPermission(DbSession dbSession, String qualityProfileKey) {
-    QualityProfileDto qualityProfile = dbClient.qualityProfileDao().selectByKey(dbSession, qualityProfileKey);
-    OrganizationDto organization = wsSupport.getOrganization(dbSession, qualityProfile);
-    userSession.checkPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, organization);
-  }
 }
index 28f2f0a1982df0403dc03179c6c54deafad3e6b6..c24ca57836d18ef0a9260a9a71f7ec3055a123db 100644 (file)
@@ -24,13 +24,13 @@ import org.sonar.api.server.ServerSide;
 import org.sonar.api.server.ws.Request;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
-import org.sonar.server.organization.DefaultOrganizationProvider;
+import org.sonar.db.DbClient;
+import org.sonar.db.DbSession;
 import org.sonar.server.qualityprofile.BulkChangeResult;
 import org.sonar.server.qualityprofile.RuleActivator;
 import org.sonar.server.rule.ws.RuleQueryFactory;
 import org.sonar.server.user.UserSession;
 
-import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES;
 import static org.sonar.server.rule.ws.SearchAction.defineRuleSearchParameters;
 
 @ServerSide
@@ -39,24 +39,25 @@ public class ActivateRulesAction implements QProfileWsAction {
   public static final String PROFILE_KEY = "profile_key";
   public static final String SEVERITY = "activation_severity";
 
-  public static final String BULK_ACTIVATE_ACTION = "activate_rules";
+  public static final String ACTIVATE_RULES_ACTION = "activate_rules";
 
   private final RuleQueryFactory ruleQueryFactory;
   private final UserSession userSession;
-  private final DefaultOrganizationProvider defaultOrganizationProvider;
   private final RuleActivator ruleActivator;
+  private final DbClient dbClient;
+  private final QProfileWsSupport wsSupport;
 
-  public ActivateRulesAction(RuleQueryFactory ruleQueryFactory, UserSession userSession, DefaultOrganizationProvider defaultOrganizationProvider,
-    RuleActivator ruleActivator) {
+  public ActivateRulesAction(RuleQueryFactory ruleQueryFactory, UserSession userSession, RuleActivator ruleActivator, QProfileWsSupport wsSupport, DbClient dbClient) {
     this.ruleQueryFactory = ruleQueryFactory;
     this.userSession = userSession;
-    this.defaultOrganizationProvider = defaultOrganizationProvider;
     this.ruleActivator = ruleActivator;
+    this.dbClient = dbClient;
+    this.wsSupport = wsSupport;
   }
 
   public void define(WebService.NewController controller) {
     WebService.NewAction activate = controller
-      .createAction(BULK_ACTIVATE_ACTION)
+      .createAction(ACTIVATE_RULES_ACTION)
       .setDescription("Bulk-activate rules on one or several Quality profiles")
       .setPost(true)
       .setSince("4.4")
@@ -76,15 +77,12 @@ public class ActivateRulesAction implements QProfileWsAction {
 
   @Override
   public void handle(Request request, Response response) throws Exception {
-    verifyAdminPermission();
-    BulkChangeResult result = ruleActivator.bulkActivate(ruleQueryFactory.createRuleQuery(request), request.mandatoryParam(PROFILE_KEY), request.param(SEVERITY));
+    String qualityProfileKey = request.mandatoryParam(PROFILE_KEY);
+    userSession.checkLoggedIn();
+    try (DbSession dbSession = dbClient.openSession(false)) {
+      wsSupport.checkPermission(dbSession, qualityProfileKey);
+    }
+    BulkChangeResult result = ruleActivator.bulkActivate(ruleQueryFactory.createRuleQuery(request), qualityProfileKey, request.param(SEVERITY));
     BulkChangeWsResponse.writeResponse(result, response);
   }
-
-  private void verifyAdminPermission() {
-    // FIXME check for the permission of the appropriate organization, not the default one
-    userSession
-      .checkLoggedIn()
-      .checkPermission(ADMINISTER_QUALITY_PROFILES, defaultOrganizationProvider.get().getUuid());
-  }
 }
index 6f970d988cb97582d5e1a3f9a5c2e5d71f261f37..6cae8d618645d5da0ed26f5a42a93fab4cb2d89b 100644 (file)
@@ -26,6 +26,10 @@ import org.sonar.server.qualityprofile.BulkChangeResult;
 
 class BulkChangeWsResponse {
 
+  private BulkChangeWsResponse() {
+    // use static methods
+  }
+
   static void writeResponse(BulkChangeResult result, Response response) {
     JsonWriter json = response.newJsonWriter().beginObject();
     json.prop("succeeded", result.countSucceeded());
index 33331dc2dfae506b93b8a6e4e256897cc85760e5..228b4124527b81a6eda91dd0906233913540c5fa 100644 (file)
@@ -27,10 +27,7 @@ import org.sonar.api.server.ws.WebService;
 import org.sonar.core.util.Uuids;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
-import org.sonar.db.organization.OrganizationDto;
-import org.sonar.db.permission.OrganizationPermission;
 import org.sonar.db.qualityprofile.ActiveRuleKey;
-import org.sonar.db.qualityprofile.QualityProfileDto;
 import org.sonar.server.qualityprofile.RuleActivator;
 import org.sonar.server.user.UserSession;
 
@@ -78,15 +75,9 @@ public class DeactivateRuleAction implements QProfileWsAction {
     String qualityProfileKey = request.mandatoryParam(PARAM_PROFILE_KEY);
     userSession.checkLoggedIn();
     try (DbSession dbSession = dbClient.openSession(false)) {
-      checkPermission(dbSession, qualityProfileKey);
+      wsSupport.checkPermission(dbSession, qualityProfileKey);
       ActiveRuleKey activeRuleKey = ActiveRuleKey.of(qualityProfileKey, ruleKey);
       ruleActivator.deactivateAndUpdateIndex(dbSession, activeRuleKey);
     }
   }
-
-  private void checkPermission(DbSession dbSession, String qualityProfileKey) {
-    QualityProfileDto qualityProfile = dbClient.qualityProfileDao().selectByKey(dbSession, qualityProfileKey);
-    OrganizationDto organization = wsSupport.getOrganization(dbSession, qualityProfile);
-    userSession.checkPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, organization);
-  }
 }
index be93acf8306e04dd7f5290c0b619dd58275843ff..58897ff8714ff6dc0f9c294d6fb421ccf0d87683 100644 (file)
@@ -23,13 +23,13 @@ import org.sonar.api.server.ServerSide;
 import org.sonar.api.server.ws.Request;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
-import org.sonar.server.organization.DefaultOrganizationProvider;
+import org.sonar.db.DbClient;
+import org.sonar.db.DbSession;
 import org.sonar.server.qualityprofile.BulkChangeResult;
 import org.sonar.server.qualityprofile.RuleActivator;
 import org.sonar.server.rule.ws.RuleQueryFactory;
 import org.sonar.server.user.UserSession;
 
-import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES;
 import static org.sonar.server.rule.ws.SearchAction.defineRuleSearchParameters;
 
 @ServerSide
@@ -38,24 +38,25 @@ public class DeactivateRulesAction implements QProfileWsAction {
   public static final String PROFILE_KEY = "profile_key";
   public static final String SEVERITY = "activation_severity";
 
-  public static final String BULK_DEACTIVATE_ACTION = "deactivate_rules";
+  public static final String DEACTIVATE_RULES_ACTION = "deactivate_rules";
 
   private final RuleQueryFactory ruleQueryFactory;
   private final UserSession userSession;
-  private final DefaultOrganizationProvider defaultOrganizationProvider;
   private final RuleActivator ruleActivator;
+  private final QProfileWsSupport wsSupport;
+  private final DbClient dbClient;
 
-  public DeactivateRulesAction(RuleQueryFactory ruleQueryFactory, UserSession userSession, DefaultOrganizationProvider defaultOrganizationProvider,
-    RuleActivator ruleActivator) {
+  public DeactivateRulesAction(RuleQueryFactory ruleQueryFactory, UserSession userSession, RuleActivator ruleActivator, QProfileWsSupport wsSupport, DbClient dbClient) {
     this.ruleQueryFactory = ruleQueryFactory;
     this.userSession = userSession;
-    this.defaultOrganizationProvider = defaultOrganizationProvider;
     this.ruleActivator = ruleActivator;
+    this.wsSupport = wsSupport;
+    this.dbClient = dbClient;
   }
 
   public void define(WebService.NewController controller) {
     WebService.NewAction deactivate = controller
-      .createAction(BULK_DEACTIVATE_ACTION)
+      .createAction(DEACTIVATE_RULES_ACTION)
       .setDescription("Bulk deactivate rules on Quality profiles")
       .setPost(true)
       .setSince("4.4")
@@ -71,15 +72,12 @@ public class DeactivateRulesAction implements QProfileWsAction {
 
   @Override
   public void handle(Request request, Response response) throws Exception {
-    verifyAdminPermission();
-    BulkChangeResult result = ruleActivator.bulkDeactivate(ruleQueryFactory.createRuleQuery(request), request.mandatoryParam(PROFILE_KEY));
+    String qualityProfileKey = request.mandatoryParam(PROFILE_KEY);
+    userSession.checkLoggedIn();
+    try (DbSession dbSession = dbClient.openSession(false)) {
+      wsSupport.checkPermission(dbSession, qualityProfileKey);
+    }
+    BulkChangeResult result = ruleActivator.bulkDeactivate(ruleQueryFactory.createRuleQuery(request), qualityProfileKey);
     BulkChangeWsResponse.writeResponse(result, response);
   }
-
-  private void verifyAdminPermission() {
-    // FIXME check for the permission of the appropriate organization, not the default one
-    userSession
-      .checkLoggedIn()
-      .checkPermission(ADMINISTER_QUALITY_PROFILES, defaultOrganizationProvider.get().getUuid());
-  }
 }
index 2047a20a3a71029b113bfb8be252b80333f05332..0264267a53a33754b4b32e1331bd20d8aa18a537 100644 (file)
@@ -27,6 +27,7 @@ import org.sonar.api.server.ws.WebService.NewParam;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 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;
@@ -119,4 +120,10 @@ public class QProfileWsSupport {
     }
     return profile;
   }
+
+  public void checkPermission(DbSession dbSession, String qualityProfileKey) {
+    QualityProfileDto qualityProfile = dbClient.qualityProfileDao().selectByKey(dbSession, qualityProfileKey);
+    OrganizationDto organization = getOrganization(dbSession, qualityProfile);
+    userSession.checkPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, organization);
+  }
 }
index f9ef186ac91ba988fe3df279e0c11b94cdc70d56..ca7a7b1269ec2e1df13fd152566e2114d951b4a3 100644 (file)
  */
 package org.sonar.server.qualityprofile.ws;
 
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbTester;
+import org.sonar.db.organization.OrganizationDto;
+import org.sonar.db.permission.OrganizationPermission;
+import org.sonar.db.qualityprofile.QualityProfileDto;
+import org.sonar.server.exceptions.ForbiddenException;
+import org.sonar.server.exceptions.UnauthorizedException;
 import org.sonar.server.organization.TestDefaultOrganizationProvider;
 import org.sonar.server.qualityprofile.RuleActivator;
+import org.sonar.server.rule.ws.RuleQueryFactory;
 import org.sonar.server.tester.UserSessionRule;
+import org.sonar.server.ws.TestRequest;
 import org.sonar.server.ws.WsActionTester;
 
+import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
+import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.UUID_SIZE;
 
 public class ActivateRulesActionTest {
 
@@ -44,8 +54,18 @@ public class ActivateRulesActionTest {
 
   private DbClient dbClient = dbTester.getDbClient();
   private RuleActivator ruleActivator = mock(RuleActivator.class);
-  private ActivateRulesAction underTest = new ActivateRulesAction(null, null, TestDefaultOrganizationProvider.from(dbTester), ruleActivator);
+  private QProfileWsSupport wsSupport = new QProfileWsSupport(dbClient, userSession, TestDefaultOrganizationProvider.from(dbTester));
+  private RuleQueryFactory ruleQueryFactory = mock(RuleQueryFactory.class);
+  private ActivateRulesAction underTest = new ActivateRulesAction(ruleQueryFactory, userSession, ruleActivator, wsSupport, dbClient);
   private WsActionTester wsActionTester = new WsActionTester(underTest);
+  private OrganizationDto defaultOrganization;
+  private OrganizationDto organization;
+
+  @Before
+  public void before() {
+    defaultOrganization = dbTester.getDefaultOrganization();
+    organization = dbTester.organizations().insert();
+  }
 
   @Test
   public void define_bulk_activate_rule_action() {
@@ -74,4 +94,26 @@ public class ActivateRulesActionTest {
       "severities"
     );
   }
-}
\ No newline at end of file
+
+  @Test
+  public void should_fail_if_not_logged_in() {
+    TestRequest request = wsActionTester.newRequest()
+      .setMethod("POST")
+      .setParam("profile_key", randomAlphanumeric(UUID_SIZE));
+
+    thrown.expect(UnauthorizedException.class);
+    request.execute();
+  }
+
+  @Test
+  public void should_fail_if_not_organization_quality_profile_administrator() {
+    userSession.logIn().addPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, defaultOrganization);
+    QualityProfileDto qualityProfile = dbTester.qualityProfiles().insert(organization);
+    TestRequest request = wsActionTester.newRequest()
+      .setMethod("POST")
+      .setParam("profile_key", qualityProfile.getKey());
+
+    thrown.expect(ForbiddenException.class);
+    request.execute();
+  }
+}
index 777a71ba454ce903640386c5090d0f7d0c1d0581..97e0dead80fd1410345ea5b83d380e5aceb0b51e 100644 (file)
  */
 package org.sonar.server.qualityprofile.ws;
 
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbTester;
+import org.sonar.db.organization.OrganizationDto;
+import org.sonar.db.permission.OrganizationPermission;
+import org.sonar.db.qualityprofile.QualityProfileDto;
+import org.sonar.server.exceptions.ForbiddenException;
+import org.sonar.server.exceptions.UnauthorizedException;
 import org.sonar.server.organization.TestDefaultOrganizationProvider;
 import org.sonar.server.qualityprofile.RuleActivator;
+import org.sonar.server.rule.ws.RuleQueryFactory;
 import org.sonar.server.tester.UserSessionRule;
+import org.sonar.server.ws.TestRequest;
 import org.sonar.server.ws.WsActionTester;
 
+import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
+import static org.sonar.server.platform.db.migration.def.VarcharColumnDef.UUID_SIZE;
 
 public class DeactivateRulesActionTest {
 
@@ -44,8 +54,18 @@ public class DeactivateRulesActionTest {
 
   private DbClient dbClient = dbTester.getDbClient();
   private RuleActivator ruleActivator = mock(RuleActivator.class);
-  private DeactivateRulesAction underTest = new DeactivateRulesAction(null, null, TestDefaultOrganizationProvider.from(dbTester), ruleActivator);
+  private QProfileWsSupport wsSupport = new QProfileWsSupport(dbClient, userSession, TestDefaultOrganizationProvider.from(dbTester));
+  private RuleQueryFactory ruleQueryFactory = mock(RuleQueryFactory.class);
+  private DeactivateRulesAction underTest = new DeactivateRulesAction(ruleQueryFactory, userSession, ruleActivator, wsSupport, dbClient);
   private WsActionTester wsActionTester = new WsActionTester(underTest);
+  private OrganizationDto defaultOrganization;
+  private OrganizationDto organization;
+
+  @Before
+  public void before() {
+    defaultOrganization = dbTester.getDefaultOrganization();
+    organization = dbTester.organizations().insert();
+  }
 
   @Test
   public void define_bulk_deactivate_rule_action() {
@@ -73,4 +93,26 @@ public class DeactivateRulesActionTest {
       "severities"
     );
   }
-}
\ No newline at end of file
+
+  @Test
+  public void should_fail_if_not_logged_in() {
+    TestRequest request = wsActionTester.newRequest()
+      .setMethod("POST")
+      .setParam("profile_key", randomAlphanumeric(UUID_SIZE));
+
+    thrown.expect(UnauthorizedException.class);
+    request.execute();
+  }
+
+  @Test
+  public void should_fail_if_not_organization_quality_profile_administrator() {
+    userSession.logIn().addPermission(OrganizationPermission.ADMINISTER_QUALITY_PROFILES, defaultOrganization);
+    QualityProfileDto qualityProfile = dbTester.qualityProfiles().insert(organization);
+    TestRequest request = wsActionTester.newRequest()
+      .setMethod("POST")
+      .setParam("profile_key", qualityProfile.getKey());
+
+    thrown.expect(ForbiddenException.class);
+    request.execute();
+  }
+}
index 65454f16701fd361a1b28f5543a3daa70b3f8cc5..ce8ba2eaa379cf16a8bef4a108c7a4287550ac84 100644 (file)
@@ -139,7 +139,7 @@ public class QProfilesWsMediumTest {
     assertThat(db.activeRuleDao().selectByProfileKey(session, profile.getKey())).hasSize(4);
 
     // 1. Deactivate Rule
-    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, DeactivateRulesAction.BULK_DEACTIVATE_ACTION);
+    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, DeactivateRulesAction.DEACTIVATE_RULES_ACTION);
     request.setParam(PARAM_PROFILE_KEY, profile.getKey());
     WsTester.Result result = request.execute();
     session.clearCache();
@@ -166,7 +166,7 @@ public class QProfilesWsMediumTest {
     assertThat(db.activeRuleDao().selectByProfileKey(session, profile.getKey())).hasSize(2);
 
     // 1. Deactivate Rule
-    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, DeactivateRulesAction.BULK_DEACTIVATE_ACTION);
+    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, DeactivateRulesAction.DEACTIVATE_RULES_ACTION);
     request.setParam(PARAM_PROFILE_KEY, profile.getKey());
     WsTester.Result result = request.execute();
     session.clearCache();
@@ -191,7 +191,7 @@ public class QProfilesWsMediumTest {
     assertThat(db.activeRuleDao().selectByProfileKey(session, profile.getKey())).hasSize(2);
 
     // 1. Deactivate Rule
-    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, DeactivateRulesAction.BULK_DEACTIVATE_ACTION);
+    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, DeactivateRulesAction.DEACTIVATE_RULES_ACTION);
     request.setParam(PARAM_PROFILE_KEY, profile.getKey());
     request.setParam(WebService.Param.TEXT_QUERY, "hello");
     WsTester.Result result = request.execute();
@@ -284,7 +284,7 @@ public class QProfilesWsMediumTest {
     assertThat(db.activeRuleDao().selectByProfileKey(session, profile.getKey())).isEmpty();
 
     // 1. Activate Rule
-    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_ACTION);
+    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.ACTIVATE_RULES_ACTION);
     request.setParam(PARAM_PROFILE_KEY, profile.getKey());
     request.setParam(PARAM_LANGUAGES, "java");
     request.execute().assertJson(getClass(), "bulk_activate_rule.json");
@@ -309,7 +309,7 @@ public class QProfilesWsMediumTest {
     assertThat(db.activeRuleDao().selectByProfileKey(session, php.getKey())).isEmpty();
 
     // 1. Activate Rule
-    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_ACTION);
+    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.ACTIVATE_RULES_ACTION);
     request.setParam(PARAM_PROFILE_KEY, php.getKey());
     request.setParam(PARAM_LANGUAGES, "php");
     request.execute().assertJson(getClass(), "bulk_activate_rule_not_all.json");
@@ -333,7 +333,7 @@ public class QProfilesWsMediumTest {
     assertThat(db.activeRuleDao().selectByProfileKey(session, profile.getKey())).isEmpty();
 
     // 1. Activate Rule with query returning 0 hits
-    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_ACTION);
+    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.ACTIVATE_RULES_ACTION);
     request.setParam(PARAM_PROFILE_KEY, profile.getKey());
     request.setParam(WebService.Param.TEXT_QUERY, "php");
     request.execute();
@@ -343,7 +343,7 @@ public class QProfilesWsMediumTest {
     assertThat(db.activeRuleDao().selectByProfileKey(session, profile.getKey())).hasSize(0);
 
     // 1. Activate Rule with query returning 1 hits
-    request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_ACTION);
+    request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.ACTIVATE_RULES_ACTION);
     request.setParam(PARAM_PROFILE_KEY, profile.getKey());
     request.setParam(WebService.Param.TEXT_QUERY, "world");
     request.execute();
@@ -370,7 +370,7 @@ public class QProfilesWsMediumTest {
       new SearchOptions()).getIds()).hasSize(2);
 
     // 1. Activate Rule with query returning 2 hits
-    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_ACTION);
+    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.ACTIVATE_RULES_ACTION);
     request.setParam(ActivateRulesAction.PROFILE_KEY, profile.getKey());
     request.setParam(ActivateRulesAction.SEVERITY, "MINOR");
     request.execute();
@@ -397,7 +397,7 @@ public class QProfilesWsMediumTest {
     ruIndexer.index();
 
     // 1. Activate Rule
-    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_ACTION);
+    WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.ACTIVATE_RULES_ACTION);
     request.setParam(PARAM_PROFILE_KEY, javaProfile.getKey());
     request.setParam(PARAM_QPROFILE, javaProfile.getKey());
     request.setParam("activation", "false");