Merge "GetCheck: Backfill checkers"
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 24a0d25..67a3cce 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/CreateCheckIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/CreateCheckIT.java
@@ -31,6 +31,7 @@
 import com.google.gerrit.plugins.checks.api.CheckState;
 import com.google.gerrit.plugins.checks.api.CheckerStatus;
 import com.google.gerrit.reviewdb.client.PatchSet;
+import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.client.RevId;
 import com.google.gerrit.testing.TestTimeUtil;
 import com.google.inject.Inject;
@@ -141,6 +142,36 @@
   }
 
   @Test
+  public void canCreateCheckForCheckerThatDoesNotApplyToTheProject() throws Exception {
+    Project.NameKey otherProject = createProjectOverAPI("other", null, true, null);
+    CheckerUuid checkerUuid = checkerOperations.newChecker().repository(otherProject).create();
+
+    CheckInput input = new CheckInput();
+    input.checkerUuid = checkerUuid.toString();
+    input.state = CheckState.RUNNING;
+
+    checksApiFactory.revision(patchSetId).create(input);
+
+    CheckKey checkKey = CheckKey.create(project, patchSetId, checkerUuid);
+    assertThat(checkOperations.check(checkKey).exists()).isTrue();
+  }
+
+  @Test
+  public void canCreateCheckForCheckerThatDoesNotApplyToTheChange() throws Exception {
+    CheckerUuid checkerUuid =
+        checkerOperations.newChecker().repository(project).query("message:not-matching").create();
+
+    CheckInput input = new CheckInput();
+    input.checkerUuid = checkerUuid.toString();
+    input.state = CheckState.RUNNING;
+
+    checksApiFactory.revision(patchSetId).create(input);
+
+    CheckKey checkKey = CheckKey.create(project, patchSetId, checkerUuid);
+    assertThat(checkOperations.check(checkKey).exists()).isTrue();
+  }
+
+  @Test
   public void cannotCreateCheckWithoutAdministrateCheckers() throws Exception {
     requestScopeOperations.setApiUser(user.getId());
 
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 4ce0888..1ed9ca8 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/UpdateCheckIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/UpdateCheckIT.java
@@ -25,6 +25,7 @@
 import com.google.gerrit.plugins.checks.api.CheckInput;
 import com.google.gerrit.plugins.checks.api.CheckState;
 import com.google.gerrit.reviewdb.client.PatchSet;
+import com.google.gerrit.reviewdb.client.Project;
 import com.google.inject.Inject;
 import org.junit.Before;
 import org.junit.Test;
@@ -65,6 +66,33 @@
   }
 
   @Test
+  public void canUpdateCheckForCheckerThatDoesNotApplyToTheProject() throws Exception {
+    Project.NameKey otherProject = createProjectOverAPI("other", null, true, null);
+    checkerOperations.checker(checkKey.checkerUuid()).forUpdate().repository(otherProject).update();
+
+    CheckInput input = new CheckInput();
+    input.state = CheckState.SUCCESSFUL;
+
+    CheckInfo info = checksApiFactory.revision(patchSetId).id(checkKey.checkerUuid()).update(input);
+    assertThat(info.state).isEqualTo(CheckState.SUCCESSFUL);
+  }
+
+  @Test
+  public void canUpdateCheckForCheckerThatDoesNotApplyToTheChange() throws Exception {
+    checkerOperations
+        .checker(checkKey.checkerUuid())
+        .forUpdate()
+        .query("message:not-matching")
+        .update();
+
+    CheckInput input = new CheckInput();
+    input.state = CheckState.SUCCESSFUL;
+
+    CheckInfo info = checksApiFactory.revision(patchSetId).id(checkKey.checkerUuid()).update(input);
+    assertThat(info.state).isEqualTo(CheckState.SUCCESSFUL);
+  }
+
+  @Test
   public void cannotUpdateCheckWithoutAdministrateCheckers() throws Exception {
     requestScopeOperations.setApiUser(user.getId());