Add tests for JSON view of refs
Change-Id: I920e640e830abe3250fe424d38aa52306fa94e61
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
index 67d5edc..9f551df 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
@@ -225,8 +225,8 @@
}
}
- private static class RefJsonData {
- public RefJsonData(Ref ref) {
+ static class RefJsonData {
+ RefJsonData(Ref ref) {
value = ref.getObjectId().getName();
if(ref.getPeeledObjectId() != null) {
peeled = ref.getPeeledObjectId().getName();
@@ -236,8 +236,8 @@
}
}
- public String value;
- public String peeled;
- public String target;
+ String value;
+ String peeled;
+ String target;
}
}
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java
index 6f50185..fcd91f3 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/RefServletTest.java
@@ -15,8 +15,15 @@
package com.google.gitiles;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import com.google.common.collect.ImmutableList;
+import com.google.common.net.HttpHeaders;
+import com.google.gitiles.RefServlet.RefJsonData;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
import org.eclipse.jgit.internal.storage.dfs.DfsRepository;
import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription;
import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
@@ -29,6 +36,8 @@
import org.junit.Test;
import java.io.IOException;
+import java.util.List;
+import java.util.Map;
/** Tests for {@link Linkifier}. */
public class RefServletTest {
@@ -185,4 +194,77 @@
+ peeled("refs/tags/atag") + " refs/tags/atag^{}\n",
res.getActualBodyString());
}
+
+ @Test
+ public void getRefsJsonAll() throws Exception {
+ Map<String, RefJsonData> result = buildJson("/test/+refs");
+ List<String> keys = ImmutableList.copyOf(result.keySet());
+ assertEquals(ImmutableList.of(
+ "HEAD",
+ "refs/heads/branch",
+ "refs/heads/master",
+ "refs/tags/atag",
+ "refs/tags/ctag"),
+ keys);
+
+ RefJsonData head = result.get(keys.get(0));
+ assertEquals(id("HEAD"), head.value);
+ assertNull(head.peeled);
+ assertEquals("refs/heads/master", head.target);
+
+ RefJsonData branch = result.get(keys.get(1));
+ assertEquals(id("refs/heads/branch"), branch.value);
+ assertNull(branch.peeled);
+ assertNull(branch.target);
+
+ RefJsonData master = result.get(keys.get(2));
+ assertEquals(id("refs/heads/master"), master.value);
+ assertNull(master.peeled);
+ assertNull(master.target);
+
+ RefJsonData atag = result.get(keys.get(3));
+ assertEquals(id("refs/tags/atag"), atag.value);
+ assertEquals(peeled("refs/tags/atag"), atag.peeled);
+ assertNull(atag.target);
+
+ RefJsonData ctag = result.get(keys.get(4));
+ assertEquals(id("refs/tags/ctag"), ctag.value);
+ assertNull(ctag.peeled);
+ assertNull(ctag.target);
+ }
+
+ @Test
+ public void getRefsHeadsJson() throws Exception {
+ Map<String, RefJsonData> result = buildJson("/test/+refs/heads");
+ List<String> keys = ImmutableList.copyOf(result.keySet());
+ assertEquals(ImmutableList.of(
+ "branch",
+ "master"),
+ keys);
+
+ RefJsonData branch = result.get(keys.get(0));
+ assertEquals(id("refs/heads/branch"), branch.value);
+ assertNull(branch.peeled);
+ assertNull(branch.target);
+
+ RefJsonData master = result.get(keys.get(1));
+ assertEquals(id("refs/heads/master"), master.value);
+ assertNull(master.peeled);
+ assertNull(master.target);
+ }
+
+ private Map<String, RefJsonData> buildJson(String path) throws Exception {
+ FakeHttpServletRequest req = FakeHttpServletRequest.newRequest();
+ req.setPathInfo(path);
+ req.setQueryString("format=JSON");
+ FakeHttpServletResponse res = new FakeHttpServletResponse();
+ servlet.service(req, res);
+
+ assertEquals(200, res.getStatus());
+ assertEquals("application/json", res.getHeader(HttpHeaders.CONTENT_TYPE));
+ String body = res.getActualBodyString();
+ String magic = ")]}'\n";
+ assertEquals(magic, body.substring(0, magic.length()));
+ return new Gson().fromJson(body.substring(magic.length()), new TypeToken<Map<String, RefJsonData>>() {}.getType());
+ }
}