From 9d4ad2c87127add5669a3515d0cc6211f3b5787b Mon Sep 17 00:00:00 2001 From: Daniel Schwarz Date: Thu, 23 Mar 2017 16:21:29 +0100 Subject: [PATCH] SONAR-8857 split BulkRuleActivationActions --- ...nActions.java => ActivateRulesAction.java} | 49 +++------- .../ws/DeactivateRulesAction.java | 94 +++++++++++++++++++ .../server/qualityprofile/ws/QProfilesWs.java | 12 +-- .../qualityprofile/ws/QProfilesWsModule.java | 3 +- .../ws/ActivateRulesActionTest.java | 80 ++++++++++++++++ .../ws/ChangeParentActionTest.java | 3 +- .../ws/ChangelogActionMockTest.java | 2 +- .../ws/DeactivateRulesActionTest.java | 79 ++++++++++++++++ .../ws/ExportersActionTest.java | 3 - .../ws/ImportersActionTest.java | 3 - .../qualityprofile/ws/ProjectsActionTest.java | 3 - .../ws/QProfilesWsMediumTest.java | 22 ++--- .../ws/QProfilesWsModuleTest.java | 2 +- .../qualityprofile/ws/QProfilesWsTest.java | 10 -- .../qualityprofile/ws/RenameActionTest.java | 1 - 15 files changed, 284 insertions(+), 82 deletions(-) rename server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/{BulkRuleActivationActions.java => ActivateRulesAction.java} (70%) create mode 100644 server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/DeactivateRulesAction.java create mode 100644 server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ActivateRulesActionTest.java create mode 100644 server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/DeactivateRulesActionTest.java diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/BulkRuleActivationActions.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ActivateRulesAction.java similarity index 70% rename from server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/BulkRuleActivationActions.java rename to server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ActivateRulesAction.java index 2ee4f0d9dff..fc1b59f19e9 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/BulkRuleActivationActions.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/ActivateRulesAction.java @@ -33,63 +33,43 @@ import org.sonar.server.rule.ws.RuleQueryFactory; import static org.sonar.server.rule.ws.SearchAction.defineRuleSearchParameters; @ServerSide -public class BulkRuleActivationActions { +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 BULK_DEACTIVATE_ACTION = "deactivate_rules"; private final QProfileService profileService; private final RuleQueryFactory ruleQueryFactory; - public BulkRuleActivationActions(QProfileService profileService, RuleQueryFactory ruleQueryFactory) { + public ActivateRulesAction(QProfileService profileService, RuleQueryFactory ruleQueryFactory) { this.profileService = profileService; this.ruleQueryFactory = ruleQueryFactory; } - void define(WebService.NewController controller) { - defineActivateAction(controller); - defineDeactivateAction(controller); - } - - private void defineActivateAction(WebService.NewController controller) { + public void define(WebService.NewController controller) { WebService.NewAction activate = controller .createAction(BULK_ACTIVATE_ACTION) .setDescription("Bulk-activate rules on one or several Quality profiles") .setPost(true) .setSince("4.4") - .setHandler(this::bulkActivate); + .setHandler(this); defineRuleSearchParameters(activate); - defineProfileKeyParameter(activate); - - activate.createParam(SEVERITY) - .setDescription("Optional severity of rules activated in bulk") - .setPossibleValues(Severity.ALL); - } - - private void defineDeactivateAction(WebService.NewController controller) { - WebService.NewAction deactivate = controller - .createAction(BULK_DEACTIVATE_ACTION) - .setDescription("Bulk deactivate rules on Quality profiles") - .setPost(true) - .setSince("4.4") - .setHandler(this::bulkDeactivate); - defineRuleSearchParameters(deactivate); - defineProfileKeyParameter(deactivate); - } - - private static void defineProfileKeyParameter(WebService.NewAction action) { - action.createParam(PROFILE_KEY) + activate.createParam(PROFILE_KEY) .setDescription("Quality Profile Key. To retrieve a profile key for a given language please see the api/qprofiles documentation") .setRequired(true) .setExampleValue("java:MyProfile"); + + activate.createParam(SEVERITY) + .setDescription("Optional severity of rules activated in bulk") + .setPossibleValues(Severity.ALL); } - private void bulkActivate(Request request, Response response) { + @Override + public void handle(Request request, Response response) throws Exception { BulkChangeResult result = profileService.bulkActivate( ruleQueryFactory.createRuleQuery(request), request.mandatoryParam(PROFILE_KEY), @@ -97,13 +77,6 @@ public class BulkRuleActivationActions { writeResponse(result, response); } - private void bulkDeactivate(Request request, Response response) { - BulkChangeResult result = profileService.bulkDeactivate( - ruleQueryFactory.createRuleQuery(request), - request.mandatoryParam(PROFILE_KEY)); - writeResponse(result, response); - } - private static void writeResponse(BulkChangeResult result, Response response) { JsonWriter json = response.newJsonWriter().beginObject(); json.prop("succeeded", result.countSucceeded()); diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/DeactivateRulesAction.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/DeactivateRulesAction.java new file mode 100644 index 00000000000..36d89923f11 --- /dev/null +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/DeactivateRulesAction.java @@ -0,0 +1,94 @@ +/* + * SonarQube + * Copyright (C) 2009-2017 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.server.qualityprofile.ws; + +import java.util.List; +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.api.utils.text.JsonWriter; +import org.sonar.server.qualityprofile.BulkChangeResult; +import org.sonar.server.qualityprofile.QProfileService; +import org.sonar.server.rule.ws.RuleQueryFactory; + +import static org.sonar.server.rule.ws.SearchAction.defineRuleSearchParameters; + +@ServerSide +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"; + + private final QProfileService profileService; + private final RuleQueryFactory ruleQueryFactory; + + public DeactivateRulesAction(QProfileService profileService, RuleQueryFactory ruleQueryFactory) { + this.profileService = profileService; + this.ruleQueryFactory = ruleQueryFactory; + } + + public void define(WebService.NewController controller) { + WebService.NewAction deactivate = controller + .createAction(BULK_DEACTIVATE_ACTION) + .setDescription("Bulk deactivate rules on Quality profiles") + .setPost(true) + .setSince("4.4") + .setHandler(this); + + defineRuleSearchParameters(deactivate); + + deactivate.createParam(PROFILE_KEY) + .setDescription("Quality Profile Key. To retrieve a profile key for a given language please see the api/qprofiles documentation") + .setRequired(true) + .setExampleValue("java:MyProfile"); + } + + @Override + public void handle(Request request, Response response) throws Exception { + BulkChangeResult result = profileService.bulkDeactivate( + ruleQueryFactory.createRuleQuery(request), + request.mandatoryParam(PROFILE_KEY)); + writeResponse(result, response); + } + + private static void writeResponse(BulkChangeResult result, Response response) { + JsonWriter json = response.newJsonWriter().beginObject(); + json.prop("succeeded", result.countSucceeded()); + json.prop("failed", result.countFailed()); + writeErrors(json, result.getErrors()); + json.endObject().close(); + } + + private static void writeErrors(JsonWriter json, List errorMessages) { + if (errorMessages.isEmpty()) { + return; + } + json.name("errors").beginArray(); + errorMessages.forEach(message -> { + json.beginObject(); + json.prop("msg", message); + json.endObject(); + }); + json.endArray(); + } +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWs.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWs.java index f004df52703..a7e6b453887 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWs.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWs.java @@ -21,18 +21,16 @@ package org.sonar.server.qualityprofile.ws; import org.sonar.api.server.ws.WebService; +import static java.util.Arrays.stream; import static org.sonarqube.ws.client.qualityprofile.QualityProfileWsParameters.CONTROLLER_QUALITY_PROFILES; public class QProfilesWs implements WebService { public static final String API_ENDPOINT = CONTROLLER_QUALITY_PROFILES; - private final BulkRuleActivationActions bulkRuleActivationActions; private final QProfileWsAction[] actions; - public QProfilesWs(BulkRuleActivationActions bulkRuleActivationActions, - QProfileWsAction... actions) { - this.bulkRuleActivationActions = bulkRuleActivationActions; + public QProfilesWs(QProfileWsAction... actions) { this.actions = actions; } @@ -42,10 +40,8 @@ public class QProfilesWs implements WebService { .setDescription("Manage quality profiles.") .setSince("4.4"); - bulkRuleActivationActions.define(controller); - for (QProfileWsAction action : actions) { - action.define(controller); - } + stream(actions) + .forEach(action -> action.define(controller)); controller.done(); } diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWsModule.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWsModule.java index 66f3d51cc1a..3708ce600ea 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWsModule.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/ws/QProfilesWsModule.java @@ -28,7 +28,8 @@ public class QProfilesWsModule extends Module { QProfileWsSupport.class, AddProjectAction.class, BackupAction.class, - BulkRuleActivationActions.class, + ActivateRulesAction.class, + DeactivateRulesAction.class, CompareAction.class, CopyAction.class, ChangelogAction.class, diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ActivateRulesActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ActivateRulesActionTest.java new file mode 100644 index 00000000000..ac513921087 --- /dev/null +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ActivateRulesActionTest.java @@ -0,0 +1,80 @@ +/* + * SonarQube + * Copyright (C) 2009-2017 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.server.qualityprofile.ws; + +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.server.organization.TestDefaultOrganizationProvider; +import org.sonar.server.qualityprofile.RuleActivator; +import org.sonar.server.qualityprofile.index.ActiveRuleIndexer; +import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.ws.WsActionTester; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +public class ActivateRulesActionTest { + + @Rule + public DbTester dbTester = DbTester.create(); + @Rule + public UserSessionRule userSession = UserSessionRule.standalone(); + @Rule + public ExpectedException thrown = ExpectedException.none(); + + private DbClient dbClient = dbTester.getDbClient(); + private RuleActivator ruleActivator = mock(RuleActivator.class); + private QProfileWsSupport wsSupport = new QProfileWsSupport(dbClient, userSession, TestDefaultOrganizationProvider.from(dbTester)); + private ActiveRuleIndexer activeRuleIndexer = mock(ActiveRuleIndexer.class); + private ActivateRulesAction underTest = new ActivateRulesAction(null, null); + private WsActionTester wsActionTester = new WsActionTester(underTest); + + @Test + public void define_bulk_activate_rule_action() { + WebService.Action definition = wsActionTester.getDef(); + assertThat(definition).isNotNull(); + assertThat(definition.isPost()).isTrue(); + assertThat(definition.params()).extracting(WebService.Param::key).containsExactlyInAnyOrder( + "types", + "template_key", + "languages", + "is_template", + "inheritance", + "qprofile", + "activation_severity", + "tags", + "asc", + "q", + "active_severities", + "s", + "repositories", + "profile_key", + "statuses", + "rule_key", + "available_since", + "activation", + "severities" + ); + } +} \ No newline at end of file diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ChangeParentActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ChangeParentActionTest.java index fb591c24523..17656eece90 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ChangeParentActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ChangeParentActionTest.java @@ -64,7 +64,6 @@ import org.sonarqube.ws.client.qualityprofile.QualityProfileWsParameters; 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.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES; import static org.sonarqube.ws.client.component.ComponentsWsParameters.PARAM_ORGANIZATION; import static org.sonarqube.ws.client.qualityprofile.QualityProfileWsParameters.PARAM_LANGUAGE; @@ -143,7 +142,7 @@ public class ChangeParentActionTest { @Test public void define_change_parent_action() { - WebService.Action changeParent = new WsTester(new QProfilesWs(mock(BulkRuleActivationActions.class), underTest)) + WebService.Action changeParent = new WsTester(new QProfilesWs(underTest)) .action(QualityProfileWsParameters.CONTROLLER_QUALITY_PROFILES, "change_parent"); assertThat(changeParent).isNotNull(); assertThat(changeParent.isPost()).isTrue(); diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ChangelogActionMockTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ChangelogActionMockTest.java index 1de08f42cce..5e35b824375 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ChangelogActionMockTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ChangelogActionMockTest.java @@ -63,7 +63,7 @@ public class ChangelogActionMockTest { @Before public void before() { - wsTester = new WsTester(new QProfilesWs(mock(BulkRuleActivationActions.class), + wsTester = new WsTester(new QProfilesWs(mock(ActivateRulesAction.class), new ChangelogAction(changelogLoader, wsSupport, new Languages(), dbTester.getDbClient()))); organization = dbTester.organizations().insert(); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/DeactivateRulesActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/DeactivateRulesActionTest.java new file mode 100644 index 00000000000..c7196df1ab1 --- /dev/null +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/DeactivateRulesActionTest.java @@ -0,0 +1,79 @@ +/* + * SonarQube + * Copyright (C) 2009-2017 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.server.qualityprofile.ws; + +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.server.organization.TestDefaultOrganizationProvider; +import org.sonar.server.qualityprofile.RuleActivator; +import org.sonar.server.qualityprofile.index.ActiveRuleIndexer; +import org.sonar.server.tester.UserSessionRule; +import org.sonar.server.ws.WsActionTester; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +public class DeactivateRulesActionTest { + + @Rule + public DbTester dbTester = DbTester.create(); + @Rule + public UserSessionRule userSession = UserSessionRule.standalone(); + @Rule + public ExpectedException thrown = ExpectedException.none(); + + private DbClient dbClient = dbTester.getDbClient(); + private RuleActivator ruleActivator = mock(RuleActivator.class); + private QProfileWsSupport wsSupport = new QProfileWsSupport(dbClient, userSession, TestDefaultOrganizationProvider.from(dbTester)); + private ActiveRuleIndexer activeRuleIndexer = mock(ActiveRuleIndexer.class); + private DeactivateRulesAction underTest = new DeactivateRulesAction(null, null); + private WsActionTester wsActionTester = new WsActionTester(underTest); + + @Test + public void define_bulk_deactivate_rule_action() { + WebService.Action definition = wsActionTester.getDef(); + assertThat(definition).isNotNull(); + assertThat(definition.isPost()).isTrue(); + assertThat(definition.params()).extracting(WebService.Param::key).containsExactlyInAnyOrder( + "types", + "template_key", + "languages", + "is_template", + "inheritance", + "qprofile", + "tags", + "asc", + "q", + "active_severities", + "s", + "repositories", + "profile_key", + "statuses", + "rule_key", + "available_since", + "activation", + "severities" + ); + } +} \ No newline at end of file diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ExportersActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ExportersActionTest.java index 7b953ea5322..90a07eb5137 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ExportersActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ExportersActionTest.java @@ -25,14 +25,11 @@ import org.sonar.api.profiles.ProfileExporter; import org.sonar.api.profiles.RulesProfile; import org.sonar.server.ws.WsTester; -import static org.mockito.Mockito.mock; - public class ExportersActionTest { @Test public void importers_nominal() throws Exception { WsTester wsTester = new WsTester(new QProfilesWs( - mock(BulkRuleActivationActions.class), new ExportersAction(createExporters()))); wsTester.newGetRequest("api/qualityprofiles", "exporters").execute().assertJson(getClass(), "exporters.json"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ImportersActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ImportersActionTest.java index feb7ee2b596..3a481534a71 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ImportersActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ImportersActionTest.java @@ -26,14 +26,11 @@ import org.sonar.api.profiles.RulesProfile; import org.sonar.api.utils.ValidationMessages; import org.sonar.server.ws.WsTester; -import static org.mockito.Mockito.mock; - public class ImportersActionTest { @Test public void importers_nominal() throws Exception { WsTester wsTester = new WsTester(new QProfilesWs( - mock(BulkRuleActivationActions.class), new ImportersAction(createImporters()))); wsTester.newGetRequest("api/qualityprofiles", "importers").execute().assertJson(getClass(), "importers.json"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProjectsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProjectsActionTest.java index f19b3b6846f..0a49c1c85e5 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProjectsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ProjectsActionTest.java @@ -39,8 +39,6 @@ import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.WsTester; import org.sonar.server.ws.WsTester.TestRequest; -import static org.mockito.Mockito.mock; - public class ProjectsActionTest { @Rule @@ -61,7 +59,6 @@ public class ProjectsActionTest { private ComponentDto project4; private WsTester wsTester = new WsTester(new QProfilesWs( - mock(BulkRuleActivationActions.class), new ProjectsAction(dbClient, userSessionRule))); @Before diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java index 75d37b07279..65454f16701 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java @@ -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, BulkRuleActivationActions.BULK_DEACTIVATE_ACTION); + WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, DeactivateRulesAction.BULK_DEACTIVATE_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, BulkRuleActivationActions.BULK_DEACTIVATE_ACTION); + WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, DeactivateRulesAction.BULK_DEACTIVATE_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, BulkRuleActivationActions.BULK_DEACTIVATE_ACTION); + WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, DeactivateRulesAction.BULK_DEACTIVATE_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, BulkRuleActivationActions.BULK_ACTIVATE_ACTION); + WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_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, BulkRuleActivationActions.BULK_ACTIVATE_ACTION); + WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_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, BulkRuleActivationActions.BULK_ACTIVATE_ACTION); + WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_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, BulkRuleActivationActions.BULK_ACTIVATE_ACTION); + request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_ACTION); request.setParam(PARAM_PROFILE_KEY, profile.getKey()); request.setParam(WebService.Param.TEXT_QUERY, "world"); request.execute(); @@ -370,9 +370,9 @@ public class QProfilesWsMediumTest { new SearchOptions()).getIds()).hasSize(2); // 1. Activate Rule with query returning 2 hits - WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, BulkRuleActivationActions.BULK_ACTIVATE_ACTION); - request.setParam(BulkRuleActivationActions.PROFILE_KEY, profile.getKey()); - request.setParam(BulkRuleActivationActions.SEVERITY, "MINOR"); + WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_ACTION); + request.setParam(ActivateRulesAction.PROFILE_KEY, profile.getKey()); + request.setParam(ActivateRulesAction.SEVERITY, "MINOR"); request.execute(); session.commit(); @@ -397,7 +397,7 @@ public class QProfilesWsMediumTest { ruIndexer.index(); // 1. Activate Rule - WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, BulkRuleActivationActions.BULK_ACTIVATE_ACTION); + WsTester.TestRequest request = wsTester.newPostRequest(QProfilesWs.API_ENDPOINT, ActivateRulesAction.BULK_ACTIVATE_ACTION); request.setParam(PARAM_PROFILE_KEY, javaProfile.getKey()); request.setParam(PARAM_QPROFILE, javaProfile.getKey()); request.setParam("activation", "false"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsModuleTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsModuleTest.java index d4a17603fd8..60f84b6d05c 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsModuleTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsModuleTest.java @@ -29,6 +29,6 @@ public class QProfilesWsModuleTest { public void verify_count_of_added_components() { ComponentContainer container = new ComponentContainer(); new QProfilesWsModule().configure(container); - assertThat(container.size()).isEqualTo(25 + 2); + assertThat(container.size()).isEqualTo(26 + 2); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java index 78caac67c0a..3dd78f48c1a 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsTest.java @@ -39,7 +39,6 @@ import org.sonar.server.ws.WsTester; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; -import static org.sonarqube.ws.client.qualityprofile.QualityProfileWsParameters.ACTION_ACTIVATE_RULE; public class QProfilesWsTest { @Rule @@ -61,7 +60,6 @@ public class QProfilesWsTest { ProfileImporter[] importers = createImporters(languages); controller = new WsTester(new QProfilesWs( - new BulkRuleActivationActions(profileService, null), new CreateAction(null, null, null, languages, wsSupport, userSessionRule, null, importers), new ImportersAction(importers), new SearchAction(null, languages, dbClient, wsSupport), @@ -131,14 +129,6 @@ public class QProfilesWsTest { assertThat(projects.responseExampleAsString()).isNotEmpty(); } - @Test - public void define_bulk_deactivate_rule_action() { - WebService.Action restoreProfiles = controller.action(BulkRuleActivationActions.BULK_DEACTIVATE_ACTION); - assertThat(restoreProfiles).isNotNull(); - assertThat(restoreProfiles.isPost()).isTrue(); - assertThat(restoreProfiles.params()).hasSize(18); - } - @Test public void define_create_action() { WebService.Action create = controller.action("create"); diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RenameActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RenameActionTest.java index 3bcbb08a955..3b0c6e8f4a4 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RenameActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/RenameActionTest.java @@ -68,7 +68,6 @@ public class RenameActionTest { dbClient, userSessionRule); tester = new WsTester(new QProfilesWs( - mock(BulkRuleActivationActions.class), underTest)); organization = db.organizations().insert(); -- 2.39.5