blob: 9edfc262f14b7a9e4677c2eafe16636d986b7943 [file] [log] [blame]
Shawn Pearcec709c4c2015-08-28 15:30:42 -07001// Copyright (C) 2015 Google Inc. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package com.google.gitiles;
16
Dave Borowitzfde41fd2015-09-16 15:14:38 -040017import static com.google.common.truth.Truth.assertThat;
Shawn Pearcec709c4c2015-08-28 15:30:42 -070018import static com.google.gitiles.TestGitilesUrls.URLS;
19import static java.nio.charset.StandardCharsets.UTF_8;
Shawn Pearcec709c4c2015-08-28 15:30:42 -070020
21import com.google.gson.reflect.TypeToken;
22import com.google.template.soy.data.SoyListData;
23import com.google.template.soy.data.SoyMapData;
24import com.google.template.soy.data.restricted.NullData;
25
26import org.eclipse.jgit.internal.storage.dfs.DfsRepository;
27import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription;
28import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
29import org.eclipse.jgit.junit.TestRepository;
30import org.junit.Before;
31import org.junit.Test;
Shawn Pearce9be60222015-08-31 11:41:19 -070032import org.junit.runner.RunWith;
33import org.junit.runners.JUnit4;
Shawn Pearcec709c4c2015-08-28 15:30:42 -070034
35import java.util.Map;
36
37/** Tests for {@link HostIndexServlet}. */
Shawn Pearce9be60222015-08-31 11:41:19 -070038@RunWith(JUnit4.class)
Shawn Pearcec709c4c2015-08-28 15:30:42 -070039public class HostIndexServletTest extends ServletTest {
40 private static final String NAME = "foo/bar/repo";
Dave Borowitz8e290352015-10-26 11:33:30 -040041 private static final TypeToken<Map<String, RepositoryDescription>> REPOS =
42 new TypeToken<Map<String, RepositoryDescription>>() {};
Shawn Pearcec709c4c2015-08-28 15:30:42 -070043
44 @Override
45 @Before
46 public void setUp() throws Exception {
47 repo = new TestRepository<DfsRepository>(
48 new InMemoryRepository(new DfsRepositoryDescription(NAME)));
49 servlet = TestGitilesServlet.create(repo);
50 }
51
52 @Test
53 public void rootHtml() throws Exception {
54 Map<String, ?> data = buildData("/");
Dave Borowitzfde41fd2015-09-16 15:14:38 -040055 assertThat(data).containsEntry("hostName", URLS.getHostName(null));
56 assertThat(data).containsEntry("breadcrumbs", NullData.INSTANCE);
57 assertThat(data).containsEntry("prefix", "");
Shawn Pearcec709c4c2015-08-28 15:30:42 -070058
59 SoyListData repos = (SoyListData) data.get("repositories");
Dave Borowitzfde41fd2015-09-16 15:14:38 -040060 assertThat(repos).hasSize(1);
Shawn Pearcec709c4c2015-08-28 15:30:42 -070061
62 SoyMapData ent = (SoyMapData) repos.get(0);
Dave Borowitzfde41fd2015-09-16 15:14:38 -040063 assertThat(ent.get("name").toString()).isEqualTo(NAME);
64 assertThat(ent.get("url").toString()).isEqualTo("/b/" + NAME + "/");
Shawn Pearcec709c4c2015-08-28 15:30:42 -070065 }
66
67 @Test
68 public void fooSubdirHtml() throws Exception {
69 Map<String, ?> data = buildData("/foo/");
Dave Borowitzfde41fd2015-09-16 15:14:38 -040070 assertThat(data).containsEntry("hostName", URLS.getHostName(null) + "/foo");
71 assertThat(data).containsEntry("prefix", "foo/");
Shawn Pearcec709c4c2015-08-28 15:30:42 -070072
73 SoyListData breadcrumbs = (SoyListData) data.get("breadcrumbs");
Dave Borowitzfde41fd2015-09-16 15:14:38 -040074 assertThat(breadcrumbs.length()).isEqualTo(2);
Shawn Pearcec709c4c2015-08-28 15:30:42 -070075
76 SoyListData repos = (SoyListData) data.get("repositories");
Dave Borowitzfde41fd2015-09-16 15:14:38 -040077 assertThat(repos.length()).isEqualTo(1);
Shawn Pearcec709c4c2015-08-28 15:30:42 -070078
79 SoyMapData ent = (SoyMapData) repos.get(0);
Dave Borowitzfde41fd2015-09-16 15:14:38 -040080 assertThat(ent.get("name").toString()).isEqualTo("bar/repo");
81 assertThat(ent.get("url").toString()).isEqualTo("/b/" + NAME + "/");
Shawn Pearcec709c4c2015-08-28 15:30:42 -070082 }
83
84 @Test
85 public void fooBarSubdirHtml() throws Exception {
86 Map<String, ?> data = buildData("/foo/bar/");
Dave Borowitzfde41fd2015-09-16 15:14:38 -040087 assertThat(data).containsEntry("hostName", URLS.getHostName(null) + "/foo/bar");
88 assertThat(data).containsEntry("prefix", "foo/bar/");
Shawn Pearcec709c4c2015-08-28 15:30:42 -070089
90 SoyListData breadcrumbs = (SoyListData) data.get("breadcrumbs");
Dave Borowitzfde41fd2015-09-16 15:14:38 -040091 assertThat(breadcrumbs.length()).isEqualTo(3);
Shawn Pearcec709c4c2015-08-28 15:30:42 -070092
93 SoyListData repos = (SoyListData) data.get("repositories");
Dave Borowitzfde41fd2015-09-16 15:14:38 -040094 assertThat(repos.length()).isEqualTo(1);
Shawn Pearcec709c4c2015-08-28 15:30:42 -070095
96 SoyMapData ent = (SoyMapData) repos.get(0);
Dave Borowitzfde41fd2015-09-16 15:14:38 -040097 assertThat(ent.get("name").toString()).isEqualTo("repo");
98 assertThat(ent.get("url").toString()).isEqualTo("/b/" + NAME + "/");
Shawn Pearcec709c4c2015-08-28 15:30:42 -070099 }
100
101 @Test
102 public void rootText() throws Exception {
103 String name = repo.getRepository().getDescription().getRepositoryName();
104 FakeHttpServletResponse res = buildText("/");
Dave Borowitzfde41fd2015-09-16 15:14:38 -0400105 assertThat(new String(res.getActualBody(), UTF_8)).isEqualTo(name + "\n");
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700106 }
107
108 @Test
109 public void fooSubdirText() throws Exception {
110 FakeHttpServletResponse res = buildText("/foo/");
Dave Borowitzfde41fd2015-09-16 15:14:38 -0400111 assertThat(new String(res.getActualBody(), UTF_8)).isEqualTo("bar/repo\n");
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700112 }
113
114 @Test
115 public void fooBarSubdirText() throws Exception {
116 FakeHttpServletResponse res = buildText("/foo/bar/");
Dave Borowitzfde41fd2015-09-16 15:14:38 -0400117 assertThat(new String(res.getActualBody(), UTF_8)).isEqualTo("repo\n");
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700118 }
119
120 @Test
121 public void rootJson() throws Exception {
122 String name = repo.getRepository().getDescription().getRepositoryName();
Dave Borowitz8e290352015-10-26 11:33:30 -0400123 Map<String, RepositoryDescription> res = buildJson("/", REPOS);
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700124
Dave Borowitzfde41fd2015-09-16 15:14:38 -0400125 assertThat(res).hasSize(1);
126 assertThat(res).containsKey(name);
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700127 RepositoryDescription d = res.get(name);
Dave Borowitzfde41fd2015-09-16 15:14:38 -0400128 assertThat(d.name).isEqualTo(name);
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700129 }
130
131 @Test
132 public void fooSubdirJson() throws Exception {
Dave Borowitz8e290352015-10-26 11:33:30 -0400133 Map<String, RepositoryDescription> res = buildJson("/foo/", REPOS);
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700134
Dave Borowitzfde41fd2015-09-16 15:14:38 -0400135 assertThat(res).hasSize(1);
136 assertThat(res).containsKey("bar/repo");
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700137 RepositoryDescription d = res.get("bar/repo");
Dave Borowitzfde41fd2015-09-16 15:14:38 -0400138 assertThat(d.name).isEqualTo(repo.getRepository().getDescription().getRepositoryName());
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700139 }
140
141 @Test
142 public void fooBarSubdirJson() throws Exception {
Dave Borowitz8e290352015-10-26 11:33:30 -0400143 Map<String, RepositoryDescription> res = buildJson("/foo/bar/", REPOS);
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700144
Dave Borowitzfde41fd2015-09-16 15:14:38 -0400145 assertThat(res).hasSize(1);
146 assertThat(res).containsKey("repo");
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700147 RepositoryDescription d = res.get("repo");
Dave Borowitzfde41fd2015-09-16 15:14:38 -0400148 assertThat(d.name).isEqualTo(repo.getRepository().getDescription().getRepositoryName());
Shawn Pearcec709c4c2015-08-28 15:30:42 -0700149 }
150
151 @Test
152 public void emptySubdirectoryList() throws Exception {
153 assertNotFound("/no.repos/", null);
154 }
155}