Test that getting a check with options works if checker is invalid

When the ListChecksOption.CHECKER option is used for getting a check
additional fields in CheckInfo are populated ('checkerName', 'blocking'
and 'checkerStatus'). Populating these fields is only possible when the
checker has a valid configuration. If the checker configuration is
invalid we expect that getting the check still works and that the
additional fields are not populated.

Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: Ib9fafbb105361377eecbd6889deac8eaa94e393a
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 e795cdd..072691c 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java
@@ -216,6 +216,33 @@
   }
 
   @Test
+  public void getCheckWithCheckerOptionReturnsCheckEvenIfCheckerIsInvalid() throws Exception {
+    CheckerUuid checkerUuid =
+        checkerOperations.newChecker().repository(project).name("My Checker").create();
+
+    CheckKey checkKey = CheckKey.create(project, patchSetId, checkerUuid);
+    checkOperations.newCheck(checkKey).setState(CheckState.RUNNING).upsert();
+
+    checkerOperations.checker(checkerUuid).forUpdate().forceInvalidConfig().update();
+
+    CheckInfo check = getCheckInfo(patchSetId, checkerUuid, ListChecksOption.CHECKER);
+    assertThat(check).isNotNull();
+
+    // Checker fields are not set.
+    assertThat(check.checkerName).isNull();
+    assertThat(check.blocking).isNull();
+    assertThat(check.checkerStatus).isNull();
+
+    // Check that at least some non-checker fields are set to ensure that we didn't get a completely
+    // empty CheckInfo.
+    assertThat(check.repository).isEqualTo(project.get());
+    assertThat(check.checkerUuid).isEqualTo(checkerUuid.get());
+    assertThat(check.changeNumber).isEqualTo(patchSetId.getParentKey().get());
+    assertThat(check.patchSetId).isEqualTo(patchSetId.get());
+    assertThat(check.state).isEqualTo(CheckState.RUNNING);
+  }
+
+  @Test
   public void getCheckForCheckerThatDoesNotApplyToTheProject() throws Exception {
     Project.NameKey otherProject = createProjectOverAPI("other", null, true, null);
     CheckerUuid checkerUuid = checkerOperations.newChecker().repository(otherProject).create();