Merge "Add class with checker test data"
diff --git a/java/com/google/gerrit/plugins/checks/acceptance/testsuite/CheckerTestData.java b/java/com/google/gerrit/plugins/checks/acceptance/testsuite/CheckerTestData.java
new file mode 100644
index 0000000..44883e2
--- /dev/null
+++ b/java/com/google/gerrit/plugins/checks/acceptance/testsuite/CheckerTestData.java
@@ -0,0 +1,42 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.plugins.checks.acceptance.testsuite;
+
+public final class CheckerTestData {
+  /** An invalid checker UUID. */
+  public static final String INVALID_UUID = "notauuid";
+
+  /** An invalid checker URL that is not allowed to be set for a checker. */
+  public static final String INVALID_URL = "ftp://example.com/my-checker";
+
+  /**
+   * The unsupported operator that is used in {@link
+   * CheckerTestData#QUERY_WITH_UNSUPPORTED_OPERATOR}.
+   */
+  public static final String UNSUPPORTED_OPERATOR = "project";
+
+  /**
+   * Query that contains an operator that is not allowed to be used in checker queries.
+   *
+   * @see com.google.gerrit.plugins.checks.CheckerQuery#ALLOWED_OPERATORS
+   */
+  @SuppressWarnings("javadoc")
+  public static final String QUERY_WITH_UNSUPPORTED_OPERATOR = UNSUPPORTED_OPERATOR + ":foo";
+
+  /** Query that is not parsable. */
+  public static final String INVALID_QUERY = ":foo :bar";
+
+  private CheckerTestData() {}
+}
diff --git a/javatests/com/google/gerrit/plugins/checks/acceptance/api/CreateCheckIT.java b/javatests/com/google/gerrit/plugins/checks/acceptance/api/CreateCheckIT.java
index 649f1f4..fbb4f1d 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/CreateCheckIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/CreateCheckIT.java
@@ -25,6 +25,7 @@
 import com.google.gerrit.plugins.checks.CheckerUuid;
 import com.google.gerrit.plugins.checks.acceptance.AbstractCheckersTest;
 import com.google.gerrit.plugins.checks.acceptance.testsuite.CheckOperations.PerCheckOperations;
+import com.google.gerrit.plugins.checks.acceptance.testsuite.CheckerTestData;
 import com.google.gerrit.plugins.checks.api.CheckInfo;
 import com.google.gerrit.plugins.checks.api.CheckInput;
 import com.google.gerrit.plugins.checks.api.CheckState;
@@ -92,9 +93,9 @@
   }
 
   @Test
-  public void cannotCreateCheckForMalformedCheckerUuid() throws Exception {
+  public void cannotCreateCheckForInvalidCheckerUuid() throws Exception {
     CheckInput input = new CheckInput();
-    input.checkerUuid = "malformed::checker*UUID";
+    input.checkerUuid = CheckerTestData.INVALID_UUID;
     input.state = CheckState.RUNNING;
 
     exception.expect(BadRequestException.class);
@@ -175,7 +176,11 @@
   @Test
   public void canCreateCheckForCheckerWithUnsupportedOperatorInQuery() throws Exception {
     CheckerUuid checkerUuid =
-        checkerOperations.newChecker().repository(project).query("project:foo").create();
+        checkerOperations
+            .newChecker()
+            .repository(project)
+            .query(CheckerTestData.QUERY_WITH_UNSUPPORTED_OPERATOR)
+            .create();
 
     CheckInput input = new CheckInput();
     input.checkerUuid = checkerUuid.toString();
@@ -190,7 +195,11 @@
   @Test
   public void canCreateCheckForCheckerWithInvalidQuery() throws Exception {
     CheckerUuid checkerUuid =
-        checkerOperations.newChecker().repository(project).query(":foo :bar").create();
+        checkerOperations
+            .newChecker()
+            .repository(project)
+            .query(CheckerTestData.INVALID_QUERY)
+            .create();
 
     CheckInput input = new CheckInput();
     input.checkerUuid = checkerUuid.toString();
diff --git a/javatests/com/google/gerrit/plugins/checks/acceptance/api/CreateCheckerIT.java b/javatests/com/google/gerrit/plugins/checks/acceptance/api/CreateCheckerIT.java
index caee0a5..5474101 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/CreateCheckerIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/CreateCheckerIT.java
@@ -28,6 +28,7 @@
 import com.google.gerrit.plugins.checks.CheckerUuid;
 import com.google.gerrit.plugins.checks.acceptance.AbstractCheckersTest;
 import com.google.gerrit.plugins.checks.acceptance.testsuite.CheckerOperations.PerCheckerOperations;
+import com.google.gerrit.plugins.checks.acceptance.testsuite.CheckerTestData;
 import com.google.gerrit.plugins.checks.api.BlockingCondition;
 import com.google.gerrit.plugins.checks.api.CheckerInfo;
 import com.google.gerrit.plugins.checks.api.CheckerInput;
@@ -209,9 +210,9 @@
     CheckerUuid checkerUuid = checkerOperations.newChecker().name("my-checker").create();
 
     CheckerInput input = new CheckerInput();
-    input.url = "ftp://example.com/my-checker";
+    input.url = CheckerTestData.INVALID_URL;
     exception.expect(BadRequestException.class);
-    exception.expectMessage("only http/https URLs supported: ftp://example.com/my-checker");
+    exception.expectMessage("only http/https URLs supported: " + input.url);
     checkersApi.id(checkerUuid).update(input);
   }
 
@@ -278,11 +279,11 @@
   @Test
   public void createCheckerWithInvalidUuidFails() throws Exception {
     CheckerInput input = new CheckerInput();
-    input.uuid = "notauuid";
+    input.uuid = CheckerTestData.INVALID_UUID;
     input.repository = allProjects.get();
 
     exception.expect(BadRequestException.class);
-    exception.expectMessage("invalid uuid: notauuid");
+    exception.expectMessage("invalid uuid: " + input.uuid);
     checkersApi.create(input);
   }
 
@@ -389,13 +390,15 @@
     CheckerInput input = new CheckerInput();
     input.uuid = "test:my-checker";
     input.repository = allProjects.get();
-    input.query = "project:foo";
+    input.query = CheckerTestData.QUERY_WITH_UNSUPPORTED_OPERATOR;
 
     try {
       checkersApi.create(input).get();
       assert_().fail("expected BadRequestException");
     } catch (BadRequestException e) {
-      assertThat(e).hasMessageThat().isEqualTo("Unsupported operator: project");
+      assertThat(e)
+          .hasMessageThat()
+          .isEqualTo("Unsupported operator: " + CheckerTestData.UNSUPPORTED_OPERATOR);
     }
   }
 
@@ -404,7 +407,7 @@
     CheckerInput input = new CheckerInput();
     input.uuid = "test:my-checker";
     input.repository = allProjects.get();
-    input.query = ":foo :bar";
+    input.query = CheckerTestData.INVALID_QUERY;
 
     try {
       checkersApi.create(input).get();
diff --git a/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java b/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java
index 974a5bf..97abf39 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java
@@ -28,6 +28,7 @@
 import com.google.gerrit.plugins.checks.CheckerUuid;
 import com.google.gerrit.plugins.checks.ListChecksOption;
 import com.google.gerrit.plugins.checks.acceptance.AbstractCheckersTest;
+import com.google.gerrit.plugins.checks.acceptance.testsuite.CheckerTestData;
 import com.google.gerrit.plugins.checks.api.BlockingCondition;
 import com.google.gerrit.plugins.checks.api.CheckInfo;
 import com.google.gerrit.plugins.checks.api.CheckState;
@@ -125,7 +126,11 @@
   @Test
   public void getCheckForCheckerWithUnsupportedOperatorInQuery() throws Exception {
     CheckerUuid checkerUuid =
-        checkerOperations.newChecker().repository(project).query("project:foo").create();
+        checkerOperations
+            .newChecker()
+            .repository(project)
+            .query(CheckerTestData.QUERY_WITH_UNSUPPORTED_OPERATOR)
+            .create();
 
     CheckKey checkKey = CheckKey.create(project, patchSetId, checkerUuid);
     checkOperations.newCheck(checkKey).setState(CheckState.RUNNING).upsert();
@@ -137,7 +142,11 @@
   @Test
   public void getCheckForCheckerWithInvalidQuery() throws Exception {
     CheckerUuid checkerUuid =
-        checkerOperations.newChecker().repository(project).query(":foo :bar").create();
+        checkerOperations
+            .newChecker()
+            .repository(project)
+            .query(CheckerTestData.INVALID_QUERY)
+            .create();
 
     CheckKey checkKey = CheckKey.create(project, patchSetId, checkerUuid);
     checkOperations.newCheck(checkKey).setState(CheckState.RUNNING).upsert();
@@ -231,8 +240,8 @@
   @Test
   public void getCheckForInvalidCheckerUuid() throws Exception {
     exception.expect(BadRequestException.class);
-    exception.expectMessage("invalid checker UUID: malformed::checker*UUID");
-    checksApiFactory.revision(patchSetId).id("malformed::checker*UUID");
+    exception.expectMessage("invalid checker UUID: " + CheckerTestData.INVALID_UUID);
+    checksApiFactory.revision(patchSetId).id(CheckerTestData.INVALID_UUID);
   }
 
   @Test
diff --git a/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckerIT.java b/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckerIT.java
index ee257bd..8c7d7b4 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckerIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckerIT.java
@@ -22,6 +22,7 @@
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.plugins.checks.CheckerUuid;
 import com.google.gerrit.plugins.checks.acceptance.AbstractCheckersTest;
+import com.google.gerrit.plugins.checks.acceptance.testsuite.CheckerTestData;
 import com.google.gerrit.plugins.checks.api.BlockingCondition;
 import com.google.gerrit.plugins.checks.api.CheckerInfo;
 import com.google.gerrit.plugins.checks.api.CheckerStatus;
@@ -66,7 +67,7 @@
 
   @Test
   public void getCheckerWithUrl() throws Exception {
-    String url = "http://foo.bar";
+    String url = "http://example.com/my-checker";
     CheckerUuid checkerUuid = checkerOperations.newChecker().url(url).create();
 
     CheckerInfo info = checkersApi.id(checkerUuid).get();
@@ -75,11 +76,11 @@
 
   @Test
   public void getCheckerWithInvalidUrl() throws Exception {
-    String url = "ftp://example.com/my-checker";
-    CheckerUuid checkerUuid = checkerOperations.newChecker().url(url).create();
+    CheckerUuid checkerUuid =
+        checkerOperations.newChecker().url(CheckerTestData.INVALID_URL).create();
 
     CheckerInfo info = checkersApi.id(checkerUuid).get();
-    assertThat(info.url).isEqualTo(url);
+    assertThat(info.url).isEqualTo(CheckerTestData.INVALID_URL);
   }
 
   @Test
@@ -114,20 +115,23 @@
 
   @Test
   public void getCheckerWithUnsupportedOperatorInQuery() throws Exception {
-    String query = "project:foo";
-    CheckerUuid checkerUuid = checkerOperations.newChecker().query(query).create();
+    CheckerUuid checkerUuid =
+        checkerOperations
+            .newChecker()
+            .query(CheckerTestData.QUERY_WITH_UNSUPPORTED_OPERATOR)
+            .create();
 
     CheckerInfo info = checkersApi.id(checkerUuid).get();
-    assertThat(info.query).isEqualTo(query);
+    assertThat(info.query).isEqualTo(CheckerTestData.QUERY_WITH_UNSUPPORTED_OPERATOR);
   }
 
   @Test
   public void getCheckerWithInvalidQuery() throws Exception {
-    String query = ":foo :bar";
-    CheckerUuid checkerUuid = checkerOperations.newChecker().query(query).create();
+    CheckerUuid checkerUuid =
+        checkerOperations.newChecker().query(CheckerTestData.INVALID_QUERY).create();
 
     CheckerInfo info = checkersApi.id(checkerUuid).get();
-    assertThat(info.query).isEqualTo(query);
+    assertThat(info.query).isEqualTo(CheckerTestData.INVALID_QUERY);
   }
 
   @Test
diff --git a/javatests/com/google/gerrit/plugins/checks/acceptance/api/ListPendingChecksIT.java b/javatests/com/google/gerrit/plugins/checks/acceptance/api/ListPendingChecksIT.java
index 5c7d2d4..18b7fe3 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/ListPendingChecksIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/ListPendingChecksIT.java
@@ -29,6 +29,7 @@
 import com.google.gerrit.plugins.checks.CheckKey;
 import com.google.gerrit.plugins.checks.CheckerUuid;
 import com.google.gerrit.plugins.checks.acceptance.AbstractCheckersTest;
+import com.google.gerrit.plugins.checks.acceptance.testsuite.CheckerTestData;
 import com.google.gerrit.plugins.checks.api.CheckState;
 import com.google.gerrit.plugins.checks.api.PendingCheckInfo;
 import com.google.gerrit.plugins.checks.api.PendingChecksInfo;
@@ -73,10 +74,10 @@
   }
 
   @Test
-  public void cannotListPendingChecksForMalformedCheckerUuid() throws Exception {
+  public void cannotListPendingChecksForInvalidCheckerUuid() throws Exception {
     exception.expect(BadRequestException.class);
-    exception.expectMessage("invalid checker UUID: malformed::checker*UUID");
-    pendingChecksApi.list("malformed::checker*UUID");
+    exception.expectMessage("invalid checker UUID: " + CheckerTestData.INVALID_UUID);
+    pendingChecksApi.list(CheckerTestData.INVALID_UUID);
   }
 
   @Test
diff --git a/javatests/com/google/gerrit/plugins/checks/acceptance/api/UpdateCheckIT.java b/javatests/com/google/gerrit/plugins/checks/acceptance/api/UpdateCheckIT.java
index ff4b381..7ae4fac 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/UpdateCheckIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/UpdateCheckIT.java
@@ -21,6 +21,7 @@
 import com.google.gerrit.plugins.checks.CheckKey;
 import com.google.gerrit.plugins.checks.CheckerUuid;
 import com.google.gerrit.plugins.checks.acceptance.AbstractCheckersTest;
+import com.google.gerrit.plugins.checks.acceptance.testsuite.CheckerTestData;
 import com.google.gerrit.plugins.checks.api.CheckInfo;
 import com.google.gerrit.plugins.checks.api.CheckInput;
 import com.google.gerrit.plugins.checks.api.CheckState;
@@ -79,7 +80,11 @@
 
   @Test
   public void canUpdateCheckForCheckerWithUnsupportedOperatorInQuery() throws Exception {
-    checkerOperations.checker(checkKey.checkerUuid()).forUpdate().query("project:foo").update();
+    checkerOperations
+        .checker(checkKey.checkerUuid())
+        .forUpdate()
+        .query(CheckerTestData.QUERY_WITH_UNSUPPORTED_OPERATOR)
+        .update();
 
     CheckInput input = new CheckInput();
     input.state = CheckState.SUCCESSFUL;
@@ -90,7 +95,11 @@
 
   @Test
   public void canUpdateCheckForCheckerWithInvalidQuery() throws Exception {
-    checkerOperations.checker(checkKey.checkerUuid()).forUpdate().query(":foo :bar").update();
+    checkerOperations
+        .checker(checkKey.checkerUuid())
+        .forUpdate()
+        .query(CheckerTestData.INVALID_QUERY)
+        .update();
 
     CheckInput input = new CheckInput();
     input.state = CheckState.SUCCESSFUL;
diff --git a/javatests/com/google/gerrit/plugins/checks/acceptance/api/UpdateCheckerIT.java b/javatests/com/google/gerrit/plugins/checks/acceptance/api/UpdateCheckerIT.java
index 8c4af46..39cd9ad 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/UpdateCheckerIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/UpdateCheckerIT.java
@@ -30,6 +30,7 @@
 import com.google.gerrit.plugins.checks.CheckerUuid;
 import com.google.gerrit.plugins.checks.acceptance.AbstractCheckersTest;
 import com.google.gerrit.plugins.checks.acceptance.testsuite.CheckerOperations.PerCheckerOperations;
+import com.google.gerrit.plugins.checks.acceptance.testsuite.CheckerTestData;
 import com.google.gerrit.plugins.checks.api.BlockingCondition;
 import com.google.gerrit.plugins.checks.api.CheckerInfo;
 import com.google.gerrit.plugins.checks.api.CheckerInput;
@@ -412,7 +413,7 @@
     CheckerUuid checkerUuid = checkerOperations.newChecker().name("my-checker").create();
 
     CheckerInput input = new CheckerInput();
-    input.url = "ftp://example.com/my-checker";
+    input.url = CheckerTestData.INVALID_URL;
     exception.expect(BadRequestException.class);
     exception.expectMessage("only http/https URLs supported: ftp://example.com/my-checker");
     checkersApi.id(checkerUuid).update(input);
@@ -538,12 +539,14 @@
     Optional<String> oldQuery = checkerOperations.checker(checkerUuid).get().getQuery();
 
     CheckerInput input = new CheckerInput();
-    input.query = "project:foo";
+    input.query = CheckerTestData.QUERY_WITH_UNSUPPORTED_OPERATOR;
     try {
       checkersApi.id(checkerUuid).update(input);
       assert_().fail("expected BadRequestException");
     } catch (BadRequestException e) {
-      assertThat(e).hasMessageThat().isEqualTo("Unsupported operator: project");
+      assertThat(e)
+          .hasMessageThat()
+          .isEqualTo("Unsupported operator: " + CheckerTestData.UNSUPPORTED_OPERATOR);
     }
 
     assertThat(checkerOperations.checker(checkerUuid).get().getQuery()).isEqualTo(oldQuery);
@@ -556,7 +559,7 @@
     Optional<String> oldQuery = checkerOperations.checker(checkerUuid).get().getQuery();
 
     CheckerInput input = new CheckerInput();
-    input.query = ":foo :bar";
+    input.query = CheckerTestData.INVALID_QUERY;
     try {
       checkersApi.id(checkerUuid).update(input);
       assert_().fail("expected BadRequestException");
diff --git a/javatests/com/google/gerrit/plugins/checks/acceptance/testsuite/CheckerTestDataTest.java b/javatests/com/google/gerrit/plugins/checks/acceptance/testsuite/CheckerTestDataTest.java
new file mode 100644
index 0000000..6042dd0
--- /dev/null
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/testsuite/CheckerTestDataTest.java
@@ -0,0 +1,66 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.plugins.checks.acceptance.testsuite;
+
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assert_;
+
+import com.google.gerrit.extensions.restapi.BadRequestException;
+import com.google.gerrit.plugins.checks.CheckerQuery;
+import com.google.gerrit.plugins.checks.CheckerUrl;
+import com.google.gerrit.plugins.checks.CheckerUuid;
+import com.google.gerrit.plugins.checks.acceptance.AbstractCheckersTest;
+import org.junit.Test;
+
+public class CheckerTestDataTest extends AbstractCheckersTest {
+  @Test
+  public void verifyTestUuids() throws Exception {
+    assertThat(CheckerUuid.isUuid(CheckerTestData.INVALID_UUID)).isFalse();
+  }
+
+  @Test
+  public void verifyTestUrls() throws Exception {
+    try {
+      CheckerUrl.clean(CheckerTestData.INVALID_URL);
+      assert_().fail("expected BadRequestException");
+    } catch (BadRequestException e) {
+      assertMessage(e, "only http/https URLs supported", CheckerTestData.INVALID_URL);
+    }
+  }
+
+  @Test
+  public void verifyTestQueries() throws Exception {
+    assertInvalidQuery(
+        CheckerTestData.QUERY_WITH_UNSUPPORTED_OPERATOR,
+        "unsupported operator",
+        CheckerTestData.UNSUPPORTED_OPERATOR);
+    assertInvalidQuery(CheckerTestData.INVALID_QUERY, "invalid", CheckerTestData.INVALID_QUERY);
+  }
+
+  private static void assertInvalidQuery(String query, String... expectedMessageParts) {
+    try {
+      CheckerQuery.clean(query);
+      assert_().fail("expected BadRequestException");
+    } catch (BadRequestException e) {
+      assertMessage(e, expectedMessageParts);
+    }
+  }
+
+  private static void assertMessage(Exception e, String... expectedMessageParts) {
+    for (String expectedMessagePart : expectedMessageParts) {
+      assertThat(e).hasMessageThat().ignoringCase().contains(expectedMessagePart);
+    }
+  }
+}