diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2015-09-30 10:19:52 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2015-09-30 10:20:10 +0200 |
commit | 87c2f6036798372d0e965e4a456d774cce61df86 (patch) | |
tree | 24c7d5b2adfdace5890a7ccb93dad2d681b3aa6f /server | |
parent | a9a4c04df49c8ae0eb94898701fb151b8e722768 (diff) | |
download | sonarqube-87c2f6036798372d0e965e4a456d774cce61df86.tar.gz sonarqube-87c2f6036798372d0e965e4a456d774cce61df86.zip |
SONAR-6881 support HEAD HTTP method
Diffstat (limited to 'server')
2 files changed, 29 insertions, 13 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/SecurityServletFilter.java b/server/sonar-server/src/main/java/org/sonar/server/platform/SecurityServletFilter.java index 702a6baa2b2..98d0848e0d0 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/SecurityServletFilter.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/SecurityServletFilter.java @@ -37,7 +37,7 @@ import javax.servlet.http.HttpServletResponse; */ public class SecurityServletFilter implements Filter { - private static final Set<String> ALLOWED_HTTP_METHODS = ImmutableSet.of("DELETE", "GET", "POST", "PUT"); + private static final Set<String> ALLOWED_HTTP_METHODS = ImmutableSet.of("DELETE", "GET", "HEAD", "POST", "PUT"); @Override public void init(FilterConfig filterConfig) throws ServletException { @@ -50,7 +50,7 @@ public class SecurityServletFilter implements Filter { } private static void doHttpFilter(HttpServletRequest httpRequest, HttpServletResponse httpResponse, FilterChain chain) throws IOException, ServletException { - // SONAR-6881 Disable OPTIONS, HEAD and TRACE methods + // SONAR-6881 Disable OPTIONS and TRACE methods if (!ALLOWED_HTTP_METHODS.contains(httpRequest.getMethod())) { httpResponse.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); return; diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/SecurityServletFilterTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/SecurityServletFilterTest.java index 0f3adb127b1..256a8064429 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/SecurityServletFilterTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/SecurityServletFilterTest.java @@ -42,28 +42,44 @@ public class SecurityServletFilterTest { FilterChain chain = mock(FilterChain.class); @Test - public void accept_GET_method() throws IOException, ServletException { - HttpServletRequest request = newRequest("GET"); - underTest.doFilter(request, response, chain); - verify(response, never()).setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); - verify(chain).doFilter(request, response); + public void allow_GET_method() throws IOException, ServletException { + assertThatMethodIsAllowed("GET"); } @Test - public void deny_HEAD_method() throws IOException, ServletException { - underTest.doFilter(newRequest("HEAD"), response, chain); - verify(response).setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); + public void allow_HEAD_method() throws IOException, ServletException { + assertThatMethodIsAllowed("HEAD"); + } + + @Test + public void allow_PUT_method() throws IOException, ServletException { + assertThatMethodIsAllowed("PUT"); + } + + @Test + public void allow_POST_method() throws IOException, ServletException { + assertThatMethodIsAllowed("POST"); + } + + private void assertThatMethodIsAllowed(String httpMethod) throws IOException, ServletException { + HttpServletRequest request = newRequest(httpMethod); + underTest.doFilter(request, response, chain); + verify(response, never()).setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); + verify(chain).doFilter(request, response); } @Test public void deny_OPTIONS_method() throws IOException, ServletException { - underTest.doFilter(newRequest("OPTIONS"), response, chain); - verify(response).setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); + assertThatMethodIsDenied("OPTIONS"); } @Test public void deny_TRACE_method() throws IOException, ServletException { - underTest.doFilter(newRequest("TRACE"), response, chain); + assertThatMethodIsDenied("TRACE"); + } + + private void assertThatMethodIsDenied(String httpMethod) throws IOException, ServletException { + underTest.doFilter(newRequest(httpMethod), response, chain); verify(response).setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); } |