Test -o and -O for List Checks and Get Check REST endpoints

Testing the REST endpoint with options via the API only covered -o.

Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: Ib10b54634a7e7b46ac61f21bd7a058f980c1f2af
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 980aece..cb0da5e 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/GetCheckIT.java
@@ -20,7 +20,9 @@
 import static com.google.gerrit.extensions.client.ListChangesOption.CURRENT_REVISION;
 import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
 
+import com.google.common.collect.ImmutableSortedSet;
 import com.google.gerrit.acceptance.PushOneCommit;
+import com.google.gerrit.acceptance.RestResponse;
 import com.google.gerrit.acceptance.rest.util.RestApiCallHelper;
 import com.google.gerrit.acceptance.rest.util.RestCall;
 import com.google.gerrit.acceptance.rest.util.RestCall.Method;
@@ -41,6 +43,7 @@
 import com.google.gerrit.reviewdb.client.PatchSet;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.testing.TestTimeUtil;
+import com.google.gson.reflect.TypeToken;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import java.sql.Timestamp;
@@ -78,11 +81,65 @@
     CheckKey checkKey = CheckKey.create(project, patchSetId, checkerUuid);
     checkOperations.newCheck(checkKey).setState(CheckState.RUNNING).upsert();
 
-    assertThat(checksApiFactory.revision(patchSetId).id(checkerUuid).get())
+    assertThat(getCheckInfo(patchSetId, checkerUuid))
         .isEqualTo(checkOperations.check(checkKey).asInfo());
   }
 
   @Test
+  public void getCheckWithOptions() 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();
+
+    CheckInfo expectedCheckInfo = checkOperations.check(checkKey).asInfo();
+    expectedCheckInfo.repository = project.get();
+    expectedCheckInfo.checkerName = "My Checker";
+    expectedCheckInfo.checkerStatus = CheckerStatus.ENABLED;
+    expectedCheckInfo.blocking = ImmutableSortedSet.of();
+
+    assertThat(getCheckInfo(patchSetId, checkerUuid, ListChecksOption.CHECKER))
+        .isEqualTo(expectedCheckInfo);
+  }
+
+  @Test
+  public void getCheckWithOptionsViaRest() 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();
+
+    CheckInfo expectedCheckInfo = checkOperations.check(checkKey).asInfo();
+    expectedCheckInfo.repository = project.get();
+    expectedCheckInfo.checkerName = "My Checker";
+    expectedCheckInfo.checkerStatus = CheckerStatus.ENABLED;
+    expectedCheckInfo.blocking = ImmutableSortedSet.of();
+
+    RestResponse r =
+        adminRestSession.get(
+            String.format(
+                "/changes/%s/revisions/%s/checks~checks/%s?o=CHECKER",
+                patchSetId.getParentKey().get(), patchSetId.get(), checkerUuid.get()));
+    r.assertOK();
+    CheckInfo checkInfo =
+        newGson().fromJson(r.getReader(), new TypeToken<CheckInfo>() {}.getType());
+    r.consume();
+    assertThat(checkInfo).isEqualTo(expectedCheckInfo);
+
+    r =
+        adminRestSession.get(
+            String.format(
+                "/changes/%s/revisions/%s/checks~checks/%s?O=1",
+                patchSetId.getParentKey().get(), patchSetId.get(), checkerUuid.get()));
+    r.assertOK();
+    checkInfo = newGson().fromJson(r.getReader(), new TypeToken<CheckInfo>() {}.getType());
+    r.consume();
+    assertThat(checkInfo).isEqualTo(expectedCheckInfo);
+  }
+
+  @Test
   public void getCheckReturnsRepository() throws Exception {
     CheckerUuid checkerUuid = checkerOperations.newChecker().repository(project).create();
 
diff --git a/javatests/com/google/gerrit/plugins/checks/acceptance/api/ListChecksIT.java b/javatests/com/google/gerrit/plugins/checks/acceptance/api/ListChecksIT.java
index 8530208..807a499 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/ListChecksIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/ListChecksIT.java
@@ -21,6 +21,7 @@
 
 import com.google.common.collect.ImmutableSet;
 import com.google.gerrit.acceptance.PushOneCommit;
+import com.google.gerrit.acceptance.RestResponse;
 import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.plugins.checks.CheckKey;
@@ -33,9 +34,9 @@
 import com.google.gerrit.reviewdb.client.Change;
 import com.google.gerrit.reviewdb.client.PatchSet;
 import com.google.gerrit.reviewdb.client.Project;
+import com.google.gson.reflect.TypeToken;
 import com.google.inject.Inject;
 import java.sql.Timestamp;
-import java.util.Collection;
 import java.util.List;
 import java.util.Optional;
 import org.junit.Before;
@@ -65,27 +66,9 @@
     CheckKey checkKey2 = CheckKey.create(project, patchSetId, checkerUuid2);
     checkOperations.newCheck(checkKey2).setState(CheckState.FAILED).upsert();
 
-    Collection<CheckInfo> checks = checksApiFactory.revision(patchSetId).list();
-
-    CheckInfo expected1 = new CheckInfo();
-    expected1.repository = project.get();
-    expected1.changeNumber = patchSetId.getParentKey().get();
-    expected1.patchSetId = patchSetId.get();
-    expected1.checkerUuid = checkerUuid1.get();
-    expected1.state = CheckState.RUNNING;
-    expected1.created = checkOperations.check(checkKey1).get().created();
-    expected1.updated = expected1.created;
-
-    CheckInfo expected2 = new CheckInfo();
-    expected2.repository = project.get();
-    expected2.changeNumber = patchSetId.getParentKey().get();
-    expected2.patchSetId = patchSetId.get();
-    expected2.checkerUuid = checkerUuid2.get();
-    expected2.state = CheckState.FAILED;
-    expected2.created = checkOperations.check(checkKey2).get().created();
-    expected2.updated = expected2.created;
-
-    assertThat(checks).containsExactly(expected1, expected2);
+    assertThat(checksApiFactory.revision(patchSetId).list())
+        .containsExactly(
+            checkOperations.check(checkKey1).asInfo(), checkOperations.check(checkKey2).asInfo());
   }
 
   @Test
@@ -101,33 +84,65 @@
     CheckKey checkKey2 = CheckKey.create(project, patchSetId, checkerUuid2);
     checkOperations.newCheck(checkKey2).setState(CheckState.FAILED).upsert();
 
-    Collection<CheckInfo> checks =
-        checksApiFactory.revision(patchSetId).list(ListChecksOption.CHECKER);
+    CheckInfo expectedCheckInfo1 = checkOperations.check(checkKey1).asInfo();
+    expectedCheckInfo1.repository = project.get();
+    expectedCheckInfo1.checkerName = checkerName1;
+    expectedCheckInfo1.blocking = ImmutableSet.of();
+    expectedCheckInfo1.checkerStatus = CheckerStatus.ENABLED;
 
-    CheckInfo expected1 = new CheckInfo();
-    expected1.repository = project.get();
-    expected1.changeNumber = patchSetId.getParentKey().get();
-    expected1.patchSetId = patchSetId.get();
-    expected1.checkerUuid = checkerUuid1.get();
-    expected1.state = CheckState.RUNNING;
-    expected1.created = checkOperations.check(checkKey1).get().created();
-    expected1.updated = expected1.created;
-    expected1.checkerName = checkerName1;
-    expected1.blocking = ImmutableSet.of();
-    expected1.checkerStatus = CheckerStatus.ENABLED;
+    CheckInfo expectedCheckInfo2 = checkOperations.check(checkKey2).asInfo();
+    expectedCheckInfo2.repository = project.get();
+    expectedCheckInfo2.blocking = ImmutableSet.of();
+    expectedCheckInfo2.checkerStatus = CheckerStatus.ENABLED;
 
-    CheckInfo expected2 = new CheckInfo();
-    expected2.repository = project.get();
-    expected2.changeNumber = patchSetId.getParentKey().get();
-    expected2.patchSetId = patchSetId.get();
-    expected2.checkerUuid = checkerUuid2.get();
-    expected2.state = CheckState.FAILED;
-    expected2.created = checkOperations.check(checkKey2).get().created();
-    expected2.updated = expected2.created;
-    expected2.blocking = ImmutableSet.of();
-    expected2.checkerStatus = CheckerStatus.ENABLED;
+    assertThat(checksApiFactory.revision(patchSetId).list(ListChecksOption.CHECKER))
+        .containsExactly(expectedCheckInfo1, expectedCheckInfo2);
+  }
 
-    assertThat(checks).containsExactly(expected1, expected2);
+  @Test
+  public void listAllWithOptionsViaRest() throws Exception {
+    String checkerName1 = "Checker One";
+    CheckerUuid checkerUuid1 =
+        checkerOperations.newChecker().name(checkerName1).repository(project).create();
+    CheckerUuid checkerUuid2 = checkerOperations.newChecker().repository(project).create();
+
+    CheckKey checkKey1 = CheckKey.create(project, patchSetId, checkerUuid1);
+    checkOperations.newCheck(checkKey1).setState(CheckState.RUNNING).upsert();
+
+    CheckKey checkKey2 = CheckKey.create(project, patchSetId, checkerUuid2);
+    checkOperations.newCheck(checkKey2).setState(CheckState.FAILED).upsert();
+
+    CheckInfo expectedCheckInfo1 = checkOperations.check(checkKey1).asInfo();
+    expectedCheckInfo1.repository = project.get();
+    expectedCheckInfo1.checkerName = checkerName1;
+    expectedCheckInfo1.blocking = ImmutableSet.of();
+    expectedCheckInfo1.checkerStatus = CheckerStatus.ENABLED;
+
+    CheckInfo expectedCheckInfo2 = checkOperations.check(checkKey2).asInfo();
+    expectedCheckInfo2.repository = project.get();
+    expectedCheckInfo2.blocking = ImmutableSet.of();
+    expectedCheckInfo2.checkerStatus = CheckerStatus.ENABLED;
+
+    RestResponse r =
+        adminRestSession.get(
+            String.format(
+                "/changes/%s/revisions/%s/checks~checks/?o=CHECKER",
+                patchSetId.getParentKey().get(), patchSetId.get()));
+    r.assertOK();
+    List<CheckInfo> checkInfos =
+        newGson().fromJson(r.getReader(), new TypeToken<List<CheckInfo>>() {}.getType());
+    r.consume();
+    assertThat(checkInfos).containsExactly(expectedCheckInfo1, expectedCheckInfo2);
+
+    r =
+        adminRestSession.get(
+            String.format(
+                "/changes/%s/revisions/%s/checks~checks/?O=1",
+                patchSetId.getParentKey().get(), patchSetId.get()));
+    r.assertOK();
+    checkInfos = newGson().fromJson(r.getReader(), new TypeToken<List<CheckInfo>>() {}.getType());
+    r.consume();
+    assertThat(checkInfos).containsExactly(expectedCheckInfo1, expectedCheckInfo2);
   }
 
   @Test