Merge branch 'stable-3.0' * stable-3.0: Bump Bazel version to 2.2.0 Re-add support for projects with anonymous HTTP access Adapt to project cache returning Optional in latest master. Switch to snapshot API so this builds again. Change-Id: I86e5acd26de085a6e82c59d3560d1ad9cc6793b8
diff --git a/.gitignore b/.gitignore index f3a0d53..a832ec3 100644 --- a/.gitignore +++ b/.gitignore
@@ -3,3 +3,4 @@ /.settings /bazel-* /eclipse-out +/.apt_generated/
diff --git a/WORKSPACE b/WORKSPACE index 48c34ee..4faf63f 100644 --- a/WORKSPACE +++ b/WORKSPACE
@@ -3,24 +3,24 @@ load("//:bazlets.bzl", "load_bazlets") load_bazlets( - commit = "96f691ebbf4ef1c46b798e871ed5acd9d844651c", + commit = "f30a992da9fc855dce819875afb59f9dd6f860cd", #local_path = "/home/<user>/projects/bazlets", ) # Snapshot Plugin API -#load( -# "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl", -# "gerrit_api_maven_local", -#) - -# Load snapshot Plugin API -#gerrit_api_maven_local() - -# Release Plugin API load( - "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl", - "gerrit_api", + "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl", + "gerrit_api_maven_local", ) +# Load snapshot Plugin API +gerrit_api_maven_local() + +# Release Plugin API +#load( +# "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl", +# "gerrit_api", +#) + # Load release Plugin API -gerrit_api() +#gerrit_api()
diff --git a/src/main/java/com/ericsson/gerrit/plugins/goimport/GoImportFilter.java b/src/main/java/com/ericsson/gerrit/plugins/goimport/GoImportFilter.java index d321774..93e4ba2 100644 --- a/src/main/java/com/ericsson/gerrit/plugins/goimport/GoImportFilter.java +++ b/src/main/java/com/ericsson/gerrit/plugins/goimport/GoImportFilter.java
@@ -16,11 +16,11 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Strings; +import com.google.gerrit.entities.BranchNameKey; +import com.google.gerrit.entities.Project; +import com.google.gerrit.entities.RefNames; import com.google.gerrit.httpd.AllRequestFilter; import com.google.gerrit.httpd.HtmlDomUtil; -import com.google.gerrit.reviewdb.client.Branch; -import com.google.gerrit.reviewdb.client.Project; -import com.google.gerrit.reviewdb.client.RefNames; import com.google.gerrit.server.AnonymousUser; import com.google.gerrit.server.config.CanonicalWebUrl; import com.google.gerrit.server.permissions.PermissionBackend; @@ -29,14 +29,15 @@ import com.google.gerrit.server.project.ProjectState; import com.google.gerrit.util.http.CacheHeaders; import com.google.inject.Inject; -import com.google.inject.Singleton; import com.google.inject.Provider; +import com.google.inject.Singleton; import java.io.IOException; import java.io.OutputStream; import java.net.URI; import java.net.URISyntaxException; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Optional; import java.util.regex.Pattern; import javax.servlet.FilterChain; import javax.servlet.ServletException; @@ -174,7 +175,7 @@ + (authenticated ? "a/" : "") + projectName + " git " - + getRepoRoot(projectName, authenticated); + + getRepoRoot(projectName, authenticated); } private String getRepoRoot(String projectName, boolean authenticated) { @@ -186,14 +187,13 @@ private boolean allowsAnonymousAccess(String projectName) { AnonymousUser anonymous = anonProvider.get(); - Branch.NameKey heads = - new Branch.NameKey(new Project.NameKey(projectName), RefNames.REFS_HEADS); + BranchNameKey heads = BranchNameKey.create(Project.nameKey(projectName), RefNames.REFS_HEADS); return permissions.user(anonymous).ref(heads).testOrFalse(RefPermission.READ); } private boolean projectExists(String projectName) { - ProjectState p = projectCache.get(new Project.NameKey(projectName)); + Optional<ProjectState> p = projectCache.get(Project.nameKey(projectName)); return p != null; } }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/goimport/GoImportFilterTest.java b/src/test/java/com/ericsson/gerrit/plugins/goimport/GoImportFilterTest.java index 0939935..39f01df 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/goimport/GoImportFilterTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/goimport/GoImportFilterTest.java
@@ -17,14 +17,14 @@ import static com.ericsson.gerrit.plugins.goimport.GoImportFilter.CONTENT_PLH; import static com.ericsson.gerrit.plugins.goimport.GoImportFilter.PAGE_200; import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.fail; +import static com.google.gerrit.testing.GerritJUnit.assertThrows; import static org.mockito.Mockito.any; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import com.google.gerrit.reviewdb.client.Project; +import com.google.gerrit.entities.Project; import com.google.gerrit.server.AnonymousUser; import com.google.gerrit.server.permissions.PermissionBackend; import com.google.gerrit.server.permissions.RefPermission; @@ -33,6 +33,7 @@ import com.google.inject.Provider; import java.io.IOException; import java.net.URISyntaxException; +import java.util.Optional; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; @@ -140,7 +141,8 @@ public void testDoFilterWithExistingProject() throws Exception { when(mockRequest.getServletPath()).thenReturn("/" + PROJECT_NAME); when(mockRequest.getParameter("go-get")).thenReturn("1"); - when(mockProjectCache.get(new Project.NameKey(PROJECT_NAME))).thenReturn(mockProjectState); + when(mockProjectCache.get(Project.nameKey(PROJECT_NAME))) + .thenReturn(Optional.of(mockProjectState)); when(mockPermsForRef.testOrFalse(RefPermission.READ)).thenReturn(false); unitUnderTest.doFilter(mockRequest, mockResponse, mockChain); verify(mockOutputStream, times(1)).write(response200(false, false)); @@ -154,7 +156,8 @@ public void testDoFilterAuthenticatedWithExistingProject() throws Exception { when(mockRequest.getServletPath()).thenReturn("/a/" + PROJECT_NAME); when(mockRequest.getParameter("go-get")).thenReturn("1"); - when(mockProjectCache.get(new Project.NameKey(PROJECT_NAME))).thenReturn(mockProjectState); + when(mockProjectCache.get(Project.nameKey(PROJECT_NAME))) + .thenReturn(Optional.of(mockProjectState)); when(mockPermsForRef.testOrFalse(RefPermission.READ)).thenReturn(false); unitUnderTest.doFilter(mockRequest, mockResponse, mockChain); verify(mockOutputStream, times(1)).write(response200(false, true)); @@ -168,7 +171,6 @@ public void testDoFilterWithExistingProjectAndPackage() throws Exception { when(mockRequest.getServletPath()).thenReturn("/" + PROJECT_NAME + "/my/package"); when(mockRequest.getParameter("go-get")).thenReturn("1"); - when(mockProjectCache.get(new Project.NameKey(PROJECT_NAME))).thenReturn(mockProjectState); when(mockPermsForRef.testOrFalse(RefPermission.READ)).thenReturn(false); unitUnderTest.doFilter(mockRequest, mockResponse, mockChain); verify(mockOutputStream, times(1)).write(response200(false, false)); @@ -181,7 +183,8 @@ public void testDoFilterWithAnonymousAccessibleProject() throws Exception { when(mockRequest.getServletPath()).thenReturn("/projectName"); when(mockRequest.getParameter("go-get")).thenReturn("1"); - when(mockProjectCache.get(new Project.NameKey("projectName"))).thenReturn(mockProjectState); + when(mockProjectCache.get(Project.nameKey("projectName"))) + .thenReturn(Optional.of(mockProjectState)); when(mockPermsForRef.testOrFalse(RefPermission.READ)).thenReturn(true); unitUnderTest.doFilter(mockRequest, mockResponse, mockChain); verify(mockOutputStream, times(1)).write(response200(true, false)); @@ -209,26 +212,22 @@ when(mockRequest.getServletPath()).thenReturn("/" + PROJECT_NAME); when(mockRequest.getParameter("go-get")).thenReturn("1"); doThrow(new IOException(msg)).when(mockOutputStream).write(any(byte[].class)); - when(mockProjectCache.get(any(Project.NameKey.class))).thenReturn(mockProjectState); - try { - unitUnderTest.doFilter(mockRequest, mockResponse, mockChain); - fail("IOException should occur!"); - } catch (IOException e) { - assertThat(msg).isEqualTo(e.getMessage()); - verify(mockOutputStream, times(1)).write(any(byte[].class)); - } + when(mockProjectCache.get(any(Project.NameKey.class))) + .thenReturn(Optional.of(mockProjectState)); + IOException thrown = + assertThrows( + IOException.class, () -> unitUnderTest.doFilter(mockRequest, mockResponse, mockChain)); + assertThat(thrown).hasMessageThat().isEqualTo(msg); + verify(mockOutputStream, times(1)).write(any(byte[].class)); } @Test public void testDoFilterWithServletException() throws Exception { String msg = "test-serv-error"; doThrow(new ServletException(msg)).when(mockChain).doFilter(null, null); - try { - unitUnderTest.doFilter(null, null, mockChain); - fail("ServletException should occur!"); - } catch (ServletException e) { - assertThat(msg).isEqualTo(e.getMessage()); - verify(mockChain, times(1)).doFilter(null, null); - } + ServletException thrown = + assertThrows(ServletException.class, () -> unitUnderTest.doFilter(null, null, mockChain)); + assertThat(thrown).hasMessageThat().isEqualTo(msg); + verify(mockChain, times(1)).doFilter(null, null); } }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/goimport/HttpModuleTest.java b/src/test/java/com/ericsson/gerrit/plugins/goimport/HttpModuleTest.java index a0a107d..021c154 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/goimport/HttpModuleTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/goimport/HttpModuleTest.java
@@ -51,7 +51,7 @@ GoImportFilter filter1 = injector.getInstance(GoImportFilter.class); assertThat(filter1).isNotNull(); GoImportFilter filter2 = injector.getInstance(GoImportFilter.class); - assertThat(filter1).isSameAs(filter2); + assertThat(filter1).isSameInstanceAs(filter2); } public class TestModule extends AbstractModule {