--- /dev/null
+/*
+ * 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.rule.Severity;
+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 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";
+
+ private final QProfileService profileService;
+ private final RuleQueryFactory ruleQueryFactory;
+
+ public ActivateRulesAction(QProfileService profileService, RuleQueryFactory ruleQueryFactory) {
+ this.profileService = profileService;
+ this.ruleQueryFactory = ruleQueryFactory;
+ }
+
+ 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);
+
+ defineRuleSearchParameters(activate);
+
+ 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);
+ }
+
+ @Override
+ public void handle(Request request, Response response) throws Exception {
+ BulkChangeResult result = profileService.bulkActivate(
+ ruleQueryFactory.createRuleQuery(request),
+ request.mandatoryParam(PROFILE_KEY),
+ request.param(SEVERITY));
+ 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<String> errorMessages) {
+ if (errorMessages.isEmpty()) {
+ return;
+ }
+ json.name("errors").beginArray();
+ errorMessages.forEach(message -> {
+ json.beginObject();
+ json.prop("msg", message);
+ json.endObject();
+ });
+ json.endArray();
+ }
+}
+++ /dev/null
-/*
- * 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.rule.Severity;
-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 BulkRuleActivationActions {
-
- 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) {
- this.profileService = profileService;
- this.ruleQueryFactory = ruleQueryFactory;
- }
-
- void define(WebService.NewController controller) {
- defineActivateAction(controller);
- defineDeactivateAction(controller);
- }
-
- private void defineActivateAction(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);
-
- 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)
- .setDescription("Quality Profile Key. To retrieve a profile key for a given language please see the api/qprofiles documentation")
- .setRequired(true)
- .setExampleValue("java:MyProfile");
- }
-
- private void bulkActivate(Request request, Response response) {
- BulkChangeResult result = profileService.bulkActivate(
- ruleQueryFactory.createRuleQuery(request),
- request.mandatoryParam(PROFILE_KEY),
- request.param(SEVERITY));
- 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());
- json.prop("failed", result.countFailed());
- writeErrors(json, result.getErrors());
- json.endObject().close();
- }
-
- private static void writeErrors(JsonWriter json, List<String> errorMessages) {
- if (errorMessages.isEmpty()) {
- return;
- }
- json.name("errors").beginArray();
- errorMessages.forEach(message -> {
- json.beginObject();
- json.prop("msg", message);
- json.endObject();
- });
- json.endArray();
- }
-}
--- /dev/null
+/*
+ * 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<String> errorMessages) {
+ if (errorMessages.isEmpty()) {
+ return;
+ }
+ json.name("errors").beginArray();
+ errorMessages.forEach(message -> {
+ json.beginObject();
+ json.prop("msg", message);
+ json.endObject();
+ });
+ json.endArray();
+ }
+}
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;
}
.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();
}
QProfileWsSupport.class,
AddProjectAction.class,
BackupAction.class,
- BulkRuleActivationActions.class,
+ ActivateRulesAction.class,
+ DeactivateRulesAction.class,
CompareAction.class,
CopyAction.class,
ChangelogAction.class,
--- /dev/null
+/*
+ * 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
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;
@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();
@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();
}
--- /dev/null
+/*
+ * 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
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");
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");
import org.sonar.server.ws.WsTester;
import org.sonar.server.ws.WsTester.TestRequest;
-import static org.mockito.Mockito.mock;
-
public class ProjectsActionTest {
@Rule
private ComponentDto project4;
private WsTester wsTester = new WsTester(new QProfilesWs(
- mock(BulkRuleActivationActions.class),
new ProjectsAction(dbClient, userSessionRule)));
@Before
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();
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();
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();
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");
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");
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();
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();
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();
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");
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);
}
}
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
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),
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");
dbClient,
userSessionRule);
tester = new WsTester(new QProfilesWs(
- mock(BulkRuleActivationActions.class),
underTest));
organization = db.organizations().insert();