]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7734 Clarify message when one of several parameters is required
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Thu, 12 Oct 2017 11:38:17 +0000 (13:38 +0200)
committerTeryk Bellahsene <teryk@users.noreply.github.com>
Mon, 16 Oct 2017 07:27:14 +0000 (09:27 +0200)
24 files changed:
server/sonar-server/src/main/java/org/sonar/server/ce/ws/ComponentAction.java
server/sonar-server/src/main/java/org/sonar/server/component/ComponentFinder.java
server/sonar-server/src/main/java/org/sonar/server/measure/custom/ws/CreateAction.java
server/sonar-server/src/main/java/org/sonar/server/permission/ws/ProjectWsRef.java
server/sonar-server/src/main/java/org/sonar/server/project/ws/BulkUpdateKeyAction.java
server/sonar-server/src/main/java/org/sonar/server/project/ws/UpdateKeyAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ProjectStatusAction.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/ws/ShowAction.java
server/sonar-server/src/main/java/org/sonar/server/setting/ws/SetAction.java
server/sonar-server/src/main/java/org/sonar/server/test/ws/ListAction.java
server/sonar-server/src/main/java/org/sonar/server/webhook/ws/WebhookDeliveriesAction.java
server/sonar-server/src/test/java/org/sonar/server/component/ComponentFinderTest.java
server/sonar-server/src/test/java/org/sonar/server/component/ws/AppActionTest.java
server/sonar-server/src/test/java/org/sonar/server/component/ws/TreeActionTest.java
server/sonar-server/src/test/java/org/sonar/server/duplication/ws/ShowActionTest.java
server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/CreateActionTest.java
server/sonar-server/src/test/java/org/sonar/server/measure/custom/ws/SearchActionTest.java
server/sonar-server/src/test/java/org/sonar/server/qualitygate/ws/ProjectStatusActionTest.java
server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/ExportActionTest.java
server/sonar-server/src/test/java/org/sonar/server/setting/ws/SetActionTest.java
server/sonar-server/src/test/java/org/sonar/server/source/ws/LinesActionTest.java
server/sonar-server/src/test/java/org/sonar/server/test/ws/ListActionTest.java
server/sonar-server/src/test/java/org/sonar/server/webhook/ws/WebhookDeliveriesActionTest.java
tests/src/test/java/org/sonarqube/tests/duplication/DuplicationsTest.java

index 0f109ec370aea729c2e07e900e0a0888c6b20473..289b0cd480eac839092cc9172bd1d81f650f97a6 100644 (file)
@@ -40,7 +40,6 @@ import org.sonarqube.ws.WsCe.ProjectResponse;
 import static org.sonar.db.Pagination.forPage;
 import static org.sonar.server.component.ComponentFinder.ParamNames.COMPONENT_ID_AND_COMPONENT;
 import static org.sonar.server.ws.WsUtils.writeProtobuf;
-import static org.sonarqube.ws.client.ce.CeWsParameters.DEPRECATED_PARAM_COMPONENT_KEY;
 import static org.sonarqube.ws.client.ce.CeWsParameters.PARAM_COMPONENT;
 import static org.sonarqube.ws.client.ce.CeWsParameters.PARAM_COMPONENT_ID;
 
@@ -63,8 +62,8 @@ public class ComponentAction implements CeWsAction {
     WebService.NewAction action = controller.createAction("component")
       .setDescription("Get the pending tasks, in-progress tasks and the last executed task of a given component (usually a project).<br>" +
         "Requires the following permission: 'Browse' on the specified component.<br>" +
-        "Either '%s' or '%s' must be provided, not both.",
-        PARAM_COMPONENT_ID, DEPRECATED_PARAM_COMPONENT_KEY)
+        "Either '%s' or '%s' must be provided.",
+        PARAM_COMPONENT_ID, PARAM_COMPONENT)
       .setSince("5.2")
       .setResponseExample(getClass().getResource("component-example.json"))
       .setChangelog(
index cb191f6528736f364cbd8bd2848ddae95968fb07..384aa88a2e8cdbcb1d4245451a0d5e1d8c0a56e3 100644 (file)
@@ -40,7 +40,7 @@ import static org.sonar.server.ws.WsUtils.checkFoundWithOptional;
 import static org.sonar.server.ws.WsUtils.checkRequest;
 
 public class ComponentFinder {
-  private static final String MSG_COMPONENT_ID_OR_KEY_TEMPLATE = "Either '%s' or '%s' must be provided, not both";
+  private static final String MSG_COMPONENT_ID_OR_KEY_TEMPLATE = "Either '%s' or '%s' must be provided";
   private static final String MSG_PARAMETER_MUST_NOT_BE_EMPTY = "The '%s' parameter must not be empty";
   private static final String LABEL_PROJECT = "Project";
   private static final String LABEL_COMPONENT = "Component";
index 568b92490afe7e7781bd0d8f12057f243fc6cf25..0453dfcc850f53c73f9ccc13e89a712607c3e51e 100644 (file)
@@ -147,7 +147,7 @@ public class CreateAction implements CustomMeasuresWsAction {
   private MetricDto searchMetric(DbSession dbSession, Request request) {
     Integer metricId = request.paramAsInt(PARAM_METRIC_ID);
     String metricKey = request.param(PARAM_METRIC_KEY);
-    checkArgument(metricId != null ^ metricKey != null, "The metric id or the metric key must be provided, not both.");
+    checkArgument(metricId != null ^ metricKey != null, "Either the metric id or the metric key must be provided");
 
     if (metricId != null) {
       return dbClient.metricDao().selectOrFailById(dbSession, metricId);
index 02bcb3d3025199f46325036c588c8c7512c270d8..5a3cad31e6a6cc0c332749fcf5b2932ba8d76cce 100644 (file)
@@ -51,7 +51,6 @@ public class ProjectWsRef {
   }
 
   public static ProjectWsRef newWsProjectRef(@Nullable String uuid, @Nullable String key) {
-    checkRequest(uuid == null ^ key == null, MSG_ID_OR_KEY_MUST_BE_PROVIDED);
     return new ProjectWsRef(uuid, key);
   }
 
index 106a9db3a6cdb8d3068aa2b288b3e119f4d7a61f..017a6ec373bcc93f40cc68a5f84ed9f6a5fbb411 100644 (file)
@@ -80,7 +80,7 @@ public class BulkUpdateKeyAction implements ProjectsWsAction {
         "  <li>%s: my_</li>" +
         "  <li>%s: my_new_</li>" +
         "</ul>" +
-        "Either '%s' or '%s' must be provided, not both.<br> " +
+        "Either '%s' or '%s' must be provided.<br> " +
         "Requires one of the following permissions: " +
         "<ul>" +
         "<li>'Administer System'</li>" +
index 4364f3c1cac561bdc318f0eb58c0a385e1fddee1..4f14b4793e8bdc4ae2b9d8570ab2d75fb6bd15df 100644 (file)
@@ -57,7 +57,7 @@ public class UpdateKeyAction implements ProjectsWsAction {
   public WebService.NewAction doDefine(WebService.NewController context) {
     WebService.NewAction action = context.createAction(ACTION_UPDATE_KEY)
       .setDescription("Update a project or module key and all its sub-components keys.<br>" +
-        "Either '%s' or '%s' must be provided, not both.<br> " +
+        "Either '%s' or '%s' must be provided.<br> " +
         "Requires one of the following permissions: " +
         "<ul>" +
         "<li>'Administer System'</li>" +
index 37b98e830a62d6898af2d7322ce4fc7617cc0684..e8838d5769aeab58f25cf3886dbfac1148228f38 100644 (file)
@@ -60,8 +60,7 @@ public class ProjectStatusAction implements QualityGatesWsAction {
   private static final String QG_STATUSES_ONE_LINE = Arrays.stream(ProjectStatusWsResponse.Status.values())
     .map(Enum::toString)
     .collect(Collectors.joining(", "));
-  private static final String MSG_ONE_PARAMETER_ONLY = String.format("One (and only one) of the following parameters must be provided '%s', '%s', '%s'",
-    PARAM_ANALYSIS_ID, PARAM_PROJECT_ID, PARAM_PROJECT_KEY);
+  private static final String MSG_ONE_PARAMETER_ONLY = String.format("Either '%s', '%s' or '%s' must be provided", PARAM_ANALYSIS_ID, PARAM_PROJECT_ID, PARAM_PROJECT_KEY);
 
   private final DbClient dbClient;
   private final ComponentFinder componentFinder;
index 20b4e52d1bc57db64ecf45284d7c8427787bb1b8..185941ae266cb3687fcde170935def6e6b31e39d 100644 (file)
@@ -28,9 +28,11 @@ import org.sonar.api.server.ws.WebService;
 import org.sonar.api.utils.text.JsonWriter;
 import org.sonar.db.qualitygate.QualityGateConditionDto;
 import org.sonar.db.qualitygate.QualityGateDto;
-import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.qualitygate.QualityGates;
-import org.sonarqube.ws.client.qualitygate.QualityGatesWsParameters;
+
+import static org.sonar.server.ws.WsUtils.checkRequest;
+import static org.sonarqube.ws.client.qualitygate.QualityGatesWsParameters.PARAM_ID;
+import static org.sonarqube.ws.client.qualitygate.QualityGatesWsParameters.PARAM_NAME;
 
 public class ShowAction implements QualityGatesWsAction {
 
@@ -48,19 +50,19 @@ public class ShowAction implements QualityGatesWsAction {
       .setResponseExample(Resources.getResource(this.getClass(), "example-show.json"))
       .setHandler(this);
 
-    action.createParam(QualityGatesWsParameters.PARAM_ID)
+    action.createParam(PARAM_ID)
       .setDescription("ID of the quality gate. Either id or name must be set")
       .setExampleValue("1");
 
-    action.createParam(QualityGatesWsParameters.PARAM_NAME)
+    action.createParam(PARAM_NAME)
       .setDescription("Name of the quality gate. Either id or name must be set")
       .setExampleValue("My Quality Gate");
   }
 
   @Override
   public void handle(Request request, Response response) {
-    Long qGateId = request.paramAsLong(QualityGatesWsParameters.PARAM_ID);
-    String qGateName = request.param(QualityGatesWsParameters.PARAM_NAME);
+    Long qGateId = request.paramAsLong(PARAM_ID);
+    String qGateName = request.param(PARAM_NAME);
     checkOneOfIdOrNamePresent(qGateId, qGateName);
 
     QualityGateDto qGate = qGateId == null ? qualityGates.get(qGateName) : qualityGates.get(qGateId);
@@ -68,8 +70,8 @@ public class ShowAction implements QualityGatesWsAction {
 
     try (JsonWriter writer = response.newJsonWriter()) {
       writer.beginObject()
-        .prop(QualityGatesWsParameters.PARAM_ID, qGate.getId())
-        .prop(QualityGatesWsParameters.PARAM_NAME, qGate.getName());
+        .prop(PARAM_ID, qGate.getId())
+        .prop(PARAM_NAME, qGate.getName());
       Collection<QualityGateConditionDto> conditions = qualityGates.listConditions(qGateId);
       if (!conditions.isEmpty()) {
         writer.name("conditions").beginArray();
@@ -83,11 +85,6 @@ public class ShowAction implements QualityGatesWsAction {
   }
 
   private static void checkOneOfIdOrNamePresent(@Nullable Long qGateId, @Nullable String qGateName) {
-    if (qGateId == null && qGateName == null) {
-      throw BadRequestException.create("Either one of 'id' or 'name' is required.");
-    } else if (qGateId != null && qGateName != null) {
-      throw BadRequestException.create("Only one of 'id' or 'name' must be provided.");
-    }
+    checkRequest(qGateId == null ^ qGateName == null, "Either '%s' or '%s' must be provided", PARAM_ID, PARAM_NAME);
   }
-
 }
index f4386026588b8e261572cfd922f4c591ee9657c3..b255d1ecafeca3efe784e7e8ce66538c7dc8d78f 100644 (file)
@@ -97,7 +97,7 @@ public class SetAction implements SettingsWsAction {
   public void define(WebService.NewController context) {
     WebService.NewAction action = context.createAction(ACTION_SET)
       .setDescription("Update a setting value.<br>" +
-        "Either '%s' or '%s' must be provided, not both.<br> " +
+        "Either '%s' or '%s' must be provided.<br> " +
         "Requires one of the following permissions: " +
         "<ul>" +
         "<li>'Administer System'</li>" +
@@ -251,7 +251,7 @@ public class SetAction implements SettingsWsAction {
       request.getValue() != null
         ^ !request.getValues().isEmpty()
         ^ !request.getFieldValues().isEmpty(),
-      "One and only one of '%s', '%s', '%s' must be provided", PARAM_VALUE, PARAM_VALUES, PARAM_FIELD_VALUES);
+      "Either '%s', '%s' or '%s' must be provided", PARAM_VALUE, PARAM_VALUES, PARAM_FIELD_VALUES);
     checkRequest(request.getValues().stream().allMatch(StringUtils::isNotBlank), MSG_NO_EMPTY_VALUE);
     checkRequest(request.getValue() == null || StringUtils.isNotBlank(request.getValue()), MSG_NO_EMPTY_VALUE);
   }
index 41d40efd5dceb9cc1934e516531b78ac7fb90951..57afa5ad572550e8c60ad21dc4b7477fc2aa4654 100644 (file)
@@ -83,7 +83,7 @@ public class ListAction implements TestsWsAction {
       .createAction("list")
       .setDescription(String.format(
         "Get the list of tests either in a test file or that test a given line of source code.<br /> " +
-          "Require Browse permission on the file's project.<br /> " +
+          "Requires 'Browse' permission on the file's project.<br /> " +
           "One (and only one) of the following combination of parameters must be provided: " +
           "<ul>" +
           "<li>%s - get a specific test</li>" +
index 08562c8f600f2745cd82e7e0f87094b06abbd211..372f1011c7aa0bd5b0ab39fdd6abf220ef3702d0 100644 (file)
@@ -43,8 +43,8 @@ import static org.sonar.server.ws.WsUtils.writeProtobuf;
 
 public class WebhookDeliveriesAction implements WebhooksWsAction {
 
-  private static final String COMPONENT_PARAM = "componentKey";
-  private static final String TASK_PARAM = "ceTaskId";
+  private static final String PARAM_COMPONENT = "componentKey";
+  private static final String PARAM_TASK = "ceTaskId";
 
   private final DbClient dbClient;
   private final UserSession userSession;
@@ -66,11 +66,11 @@ public class WebhookDeliveriesAction implements WebhooksWsAction {
       .setResponseExample(Resources.getResource(this.getClass(), "example-deliveries.json"))
       .setHandler(this);
 
-    action.createParam(COMPONENT_PARAM)
+    action.createParam(PARAM_COMPONENT)
       .setDescription("Key of the project")
       .setExampleValue("my-project");
 
-    action.createParam(TASK_PARAM)
+    action.createParam(PARAM_TASK)
       .setDescription("Id of the Compute Engine task")
       .setExampleValue(Uuids.UUID_EXAMPLE_01);
   }
@@ -80,9 +80,9 @@ public class WebhookDeliveriesAction implements WebhooksWsAction {
     // fail-fast if not logged in
     userSession.checkLoggedIn();
 
-    String ceTaskId = request.param(TASK_PARAM);
-    String componentKey = request.param(COMPONENT_PARAM);
-    checkArgument(ceTaskId != null ^ componentKey != null, "Either parameter '%s' or '%s' must be defined", TASK_PARAM, COMPONENT_PARAM);
+    String ceTaskId = request.param(PARAM_TASK);
+    String componentKey = request.param(PARAM_COMPONENT);
+    checkArgument(ceTaskId != null ^ componentKey != null, "Either '%s' or '%s' must be provided", PARAM_TASK, PARAM_COMPONENT);
 
     Data data = loadFromDatabase(ceTaskId, componentKey);
     data.ensureAdminPermission(userSession);
index ea314a825d862a9f48bb2940e52c3f36aeb827fb..0082df50de584d309f8e06695c4c33a64ef287a6 100644 (file)
@@ -49,7 +49,7 @@ public class ComponentFinderTest {
   @Test
   public void fail_when_the_uuid_and_key_are_null() {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'id' or 'key' must be provided, not both");
+    expectedException.expectMessage("Either 'id' or 'key' must be provided");
 
     underTest.getByUuidOrKey(dbSession, null, null, ID_AND_KEY);
   }
@@ -57,7 +57,7 @@ public class ComponentFinderTest {
   @Test
   public void fail_when_the_uuid_and_key_are_provided() {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'id' or 'key' must be provided, not both");
+    expectedException.expectMessage("Either 'id' or 'key' must be provided");
 
     underTest.getByUuidOrKey(dbSession, "project-uuid", "project-key", ID_AND_KEY);
   }
index 8eaf43d42c3bed90e6bf7b44247e87e54d59db5a..7eb2c50a074fa325c8ae993c1da3683a57f2a13d 100644 (file)
@@ -291,7 +291,7 @@ public class AppActionTest {
   @Test
   public void fail_if_no_parameter_provided() {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'componentId' or 'component' must be provided, not both");
+    expectedException.expectMessage("Either 'componentId' or 'component' must be provided");
 
     ws.newRequest().execute();
   }
index 2e74d63376a0db4795458f077c739729a1c57956..dc8ffbf335deb1343e326b76b0033d89b273b2f8 100644 (file)
@@ -460,7 +460,7 @@ public class TreeActionTest {
   @Test
   public void fail_when_no_base_component_parameter() {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'componentId' or 'component' must be provided, not both");
+    expectedException.expectMessage("Either 'componentId' or 'component' must be provided");
 
     ws.newRequest().execute();
   }
index 79dac8f08d1cce712c0cfc70f8afc8e65135ec15..c00e6f7f18bae4f3c228944d3480a79118a0b612 100644 (file)
@@ -181,7 +181,7 @@ public class ShowActionTest {
   @Test
   public void fail_if_no_parameter_provided() {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'uuid' or 'key' must be provided, not both");
+    expectedException.expectMessage("Either 'uuid' or 'key' must be provided");
 
     newBaseRequest().execute();
   }
index 9ac22c0300f6a01cc9203ae796da46aefa5b492b..a88e7b02db76c7908c58debdf904764d84f71ce7 100644 (file)
@@ -315,7 +315,7 @@ public class CreateActionTest {
   @Test
   public void fail_when_project_id_nor_project_key_provided() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'projectId' or 'projectKey' must be provided, not both");
+    expectedException.expectMessage("Either 'projectId' or 'projectKey' must be provided");
     MetricDto metric = insertMetric(STRING);
 
     newRequest()
@@ -327,7 +327,7 @@ public class CreateActionTest {
   @Test
   public void fail_when_project_id_and_project_key_are_provided() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'projectId' or 'projectKey' must be provided, not both");
+    expectedException.expectMessage("Either 'projectId' or 'projectKey' must be provided");
     MetricDto metric = insertMetric(STRING);
 
     newRequest()
@@ -367,7 +367,7 @@ public class CreateActionTest {
   @Test
   public void fail_when_metric_id_nor_metric_key_is_provided() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("The metric id or the metric key must be provided, not both.");
+    expectedException.expectMessage("Either the metric id or the metric key must be provided");
     insertMetric(STRING);
 
     newRequest()
@@ -379,7 +379,7 @@ public class CreateActionTest {
   @Test
   public void fail_when_metric_id_and_metric_key_are_provided() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("The metric id or the metric key must be provided, not both.");
+    expectedException.expectMessage("Either the metric id or the metric key must be provided");
     MetricDto metric = insertMetric(STRING);
 
     newRequest()
index ff61bf57a169c8de0afaa2bc484069d5366f33ce..5188cbffe8fd5208371c13faaab7f9139952ad1f 100644 (file)
@@ -220,7 +220,7 @@ public class SearchActionTest {
   @Test
   public void fail_when_project_id_and_project_key_provided() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'projectId' or 'projectKey' must be provided, not both");
+    expectedException.expectMessage("Either 'projectId' or 'projectKey' must be provided");
 
     newRequest()
       .setParam(SearchAction.PARAM_PROJECT_ID, DEFAULT_PROJECT_UUID)
@@ -231,7 +231,7 @@ public class SearchActionTest {
   @Test
   public void fail_when_project_id_nor_project_key_provided() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'projectId' or 'projectKey' must be provided, not both");
+    expectedException.expectMessage("Either 'projectId' or 'projectKey' must be provided");
     newRequest().execute();
   }
 
index 8e96d3fd2d5806d1970bb21d813abea4274d1cee..05b5ad04eba2b41234f0b183cd3bdd9173377251 100644 (file)
@@ -230,7 +230,7 @@ public class ProjectStatusActionTest {
     logInAsSystemAdministrator();
 
     expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("One (and only one) of the following parameters must be provided 'analysisId', 'projectId', 'projectKey'");
+    expectedException.expectMessage("Either 'analysisId', 'projectId' or 'projectKey' must be provided");
 
     ws.newRequest()
       .setParam(PARAM_ANALYSIS_ID, "analysis-id")
@@ -243,7 +243,7 @@ public class ProjectStatusActionTest {
     logInAsSystemAdministrator();
 
     expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("One (and only one) of the following parameters must be provided 'analysisId', 'projectId', 'projectKey'");
+    expectedException.expectMessage("Either 'analysisId', 'projectId' or 'projectKey' must be provided");
 
     ws.newRequest().execute().getInput();
   }
index 04774a842f27dca9e82d5e1616eaf72dbad542a4..55f46efe64ead3fdccb5b287390301e220091063 100644 (file)
@@ -130,7 +130,7 @@ public class ExportActionTest {
     QProfileDto profile = createProfile(db.getDefaultOrganization(), false);
 
     expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("Either 'key' or 'language' must be provided.");
+    expectedException.expectMessage("Either 'key' or 'language' must be provided");
 
     WsActionTester ws = newWsActionTester(newExporter("polop"), newExporter("palap"));
     ws.newRequest()
index 1b18dce0a2bf2bbbf1e11c62960fc0e9aeaa23a3..38922d51ff7d3a4c321dde16a58cc8bc6679c338 100644 (file)
@@ -441,7 +441,7 @@ public class SetActionTest {
   @Test
   public void fail_when_no_value() {
     expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("One and only one of 'value', 'values', 'fieldValues' must be provided");
+    expectedException.expectMessage("Either 'value', 'values' or 'fieldValues' must be provided");
 
     callForGlobalSetting("my.key", null);
   }
@@ -682,7 +682,7 @@ public class SetActionTest {
   @Test
   public void fail_when_single_and_multi_value_provided() {
     expectedException.expect(BadRequestException.class);
-    expectedException.expectMessage("One and only one of 'value', 'values', 'fieldValues' must be provided");
+    expectedException.expectMessage("Either 'value', 'values' or 'fieldValues' must be provided");
 
     call("my.key", "My Value", newArrayList("Another Value"), null, null);
   }
index 9cebc9d452a6061421cf45d2da3514d72a49c458..f79b6cc1095fee474a644617b83edca53bf33abc 100644 (file)
@@ -144,7 +144,7 @@ public class LinesActionTest {
   @Test
   public void fail_when_no_uuid_or_key_param() throws Exception {
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either 'uuid' or 'key' must be provided, not both");
+    expectedException.expectMessage("Either 'uuid' or 'key' must be provided");
 
     WsTester.TestRequest request = wsTester.newGetRequest("api/sources", "lines");
     request.execute();
index 48ff6b83a5784c9d3873f9be0a06ad4fc6e45816..53b07b273f5a507737fde740f65e3b24db57076c 100644 (file)
@@ -100,7 +100,7 @@ public class ListActionTest {
     assertThat(action.responseExampleAsString()).isNotEmpty();
     assertThat(action.params()).hasSize(9);
     assertThat(action.description()).isEqualTo("Get the list of tests either in a test file or that test a given line of source code.<br /> " +
-      "Require Browse permission on the file's project.<br /> " +
+      "Requires 'Browse' permission on the file's project.<br /> " +
       "One (and only one) of the following combination of parameters must be provided: " +
       "<ul>" +
       "<li>testId - get a specific test</li>" +
index 750a7ca966505f5a8c83873842a0b8a6edae8a53..d213a8423691ebbe4d6d0ac77f1f3c34ac023c52 100644 (file)
@@ -182,7 +182,7 @@ public class WebhookDeliveriesActionTest {
     userSession.logIn();
 
     expectedException.expect(IllegalArgumentException.class);
-    expectedException.expectMessage("Either parameter 'ceTaskId' or 'componentKey' must be defined");
+    expectedException.expectMessage("Either 'ceTaskId' or 'componentKey' must be provided");
 
     ws.newRequest()
       .setParam("componentKey", project.getDbKey())
index 710fd8de0d5d64272d9b635b7dba7bab9c26bb4b..a81249726362020eaf68caa54afaf3ba2ce43b3d 100644 (file)
@@ -183,7 +183,7 @@ public class DuplicationsTest {
     WsResponse result = adminWsClient.wsConnector().call(new GetRequest("api/duplications/show"));
 
     assertThat(result.code()).isEqualTo(HTTP_BAD_REQUEST);
-    assertThat(result.content()).contains("Either 'uuid' or 'key' must be provided, not both");
+    assertThat(result.content()).contains("Either 'uuid' or 'key' must be provided");
   }
 
 }