Merge branch 'stable-3.4' into stable-3.5 * stable-3.4: Return 400 when deleting/creating an invalid project name Change-Id: I3804162174e60e4556e2d0c97acdddc7b35a04f3
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilter.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilter.java index 8c47801..20122a7 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilter.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/PullReplicationFilter.java
@@ -56,6 +56,7 @@ import java.io.EOFException; import java.io.IOException; import java.io.PrintWriter; +import java.nio.file.InvalidPathException; import java.util.Map; import java.util.NoSuchElementException; import java.util.Optional; @@ -158,7 +159,12 @@ RestApiServlet.replyError( httpRequest, httpResponse, SC_BAD_REQUEST, "Project name not present in the url", e); } catch (Exception e) { - throw new ServletException(e); + if (e instanceof InvalidPathException || e.getCause() instanceof InvalidPathException) { + RestApiServlet.replyError( + httpRequest, httpResponse, SC_BAD_REQUEST, "Invalid repository path in request", e); + } else { + throw new ServletException(e); + } } }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectDeletionActionIT.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectDeletionActionIT.java index 2953ed0..a46a721 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectDeletionActionIT.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectDeletionActionIT.java
@@ -23,6 +23,7 @@ import com.google.inject.Inject; import javax.servlet.http.HttpServletResponse; import org.apache.http.client.methods.HttpRequestBase; +import org.junit.Ignore; import org.junit.Test; public class ProjectDeletionActionIT extends ActionITBase { @@ -75,14 +76,15 @@ } @Test - public void shouldReturnInternalServerErrorIfProjectCannotBeDeleted() throws Exception { + @Ignore("Failing in RestApiServlet: to be enabled again once that is fixed in core") + public void shouldReturnBadRequestWhenDeletingAnInvalidProjectName() throws Exception { url = getURLWithAuthenticationPrefix(INVALID_TEST_PROJECT_NAME); httpClientFactory .create(source) .execute( withBasicAuthenticationAsAdmin(createDeleteRequest()), - assertHttpResponseCode(HttpServletResponse.SC_INTERNAL_SERVER_ERROR)); + assertHttpResponseCode(HttpServletResponse.SC_BAD_REQUEST)); } @Test @@ -131,7 +133,7 @@ @Test @GerritConfig(name = "container.replica", value = "true") - public void shouldReturnInternalServerErrorIfProjectCannotBeDeletedWhenNodeIsAReplica() + public void shouldReturnBadRequestWhenDeletingAnInvalidProjectNameWhenNodeIsAReplica() throws Exception { url = getURLWithAuthenticationPrefix(INVALID_TEST_PROJECT_NAME); @@ -139,7 +141,7 @@ .create(source) .execute( withBasicAuthenticationAsAdmin(createDeleteRequest()), - assertHttpResponseCode(HttpServletResponse.SC_INTERNAL_SERVER_ERROR)); + assertHttpResponseCode(HttpServletResponse.SC_BAD_REQUEST)); } @Test
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectInitializationActionIT.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectInitializationActionIT.java index 99b3336..77f05a1 100644 --- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectInitializationActionIT.java +++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ProjectInitializationActionIT.java
@@ -150,14 +150,14 @@ @Test @GerritConfig(name = "container.replica", value = "true") - public void shouldReturnInternalServerErrorIfProjectCannotBeCreatedWhenNodeIsAReplica() + public void shouldReturnBadRequestIfProjectNameIsInvalidAndCannotBeCreatedWhenNodeIsAReplica() throws Exception { url = getURLWithAuthenticationPrefix(INVALID_TEST_PROJECT_NAME); httpClientFactory .create(source) .execute( withBasicAuthenticationAsAdmin(createPutRequestWithHeaders()), - assertHttpResponseCode(HttpServletResponse.SC_INTERNAL_SERVER_ERROR)); + assertHttpResponseCode(HttpServletResponse.SC_BAD_REQUEST)); } @Test