private HttpServletRequest adaptFromForwardedHeaders(HttpServletRequest request) throws Exception { MockFilterChain chain = new MockFilterChain(); new ForwardedHeaderFilter().doFilter(request, new MockHttpServletResponse(), chain); return (HttpServletRequest) chain.getRequest(); }
private HttpServletRequest filterAndGetWrappedRequest() throws ServletException, IOException { MockHttpServletResponse response = new MockHttpServletResponse(); this.filter.doFilterInternal(this.request, response, this.filterChain); return (HttpServletRequest) this.filterChain.getRequest(); }
@Test public void forwardedRequestInRemoveOnlyMode() throws Exception { this.request.setRequestURI("/mvc-showcase"); this.request.addHeader(X_FORWARDED_PROTO, "https"); this.request.addHeader(X_FORWARDED_HOST, "84.198.58.199"); this.request.addHeader(X_FORWARDED_PORT, "443"); this.request.addHeader(X_FORWARDED_SSL, "on"); this.request.addHeader("foo", "bar"); this.filter.setRemoveOnly(true); this.filter.doFilter(this.request, new MockHttpServletResponse(), this.filterChain); HttpServletRequest actual = (HttpServletRequest) this.filterChain.getRequest(); assertEquals("http://localhost/mvc-showcase", actual.getRequestURL().toString()); assertEquals("http", actual.getScheme()); assertEquals("localhost", actual.getServerName()); assertEquals(80, actual.getServerPort()); assertFalse(actual.isSecure()); assertNull(actual.getHeader(X_FORWARDED_PROTO)); assertNull(actual.getHeader(X_FORWARDED_HOST)); assertNull(actual.getHeader(X_FORWARDED_PORT)); assertNull(actual.getHeader(X_FORWARDED_SSL)); assertEquals("bar", actual.getHeader("foo")); }
@Test public void forwardedRequest() throws Exception { this.request.setRequestURI("/mvc-showcase"); this.request.addHeader(X_FORWARDED_PROTO, "https"); this.request.addHeader(X_FORWARDED_HOST, "84.198.58.199"); this.request.addHeader(X_FORWARDED_PORT, "443"); this.request.addHeader("foo", "bar"); this.filter.doFilter(this.request, new MockHttpServletResponse(), this.filterChain); HttpServletRequest actual = (HttpServletRequest) this.filterChain.getRequest(); assertEquals("https://84.198.58.199/mvc-showcase", actual.getRequestURL().toString()); assertEquals("https", actual.getScheme()); assertEquals("84.198.58.199", actual.getServerName()); assertEquals(443, actual.getServerPort()); assertTrue(actual.isSecure()); assertNull(actual.getHeader(X_FORWARDED_PROTO)); assertNull(actual.getHeader(X_FORWARDED_HOST)); assertNull(actual.getHeader(X_FORWARDED_PORT)); assertEquals("bar", actual.getHeader("foo")); }
@Test public void sendRedirectWhenRequestOnlyAndNoXForwardedThenUsesRelativeRedirects() throws Exception { this.filter.setRelativeRedirects(true); String location = sendRedirect("/a"); assertEquals("/a", location); }
private void testShouldFilter(String headerName) { MockHttpServletRequest request = new MockHttpServletRequest(); request.addHeader(headerName, "1"); assertFalse(this.filter.shouldNotFilter(request)); }
@Test public void forwardedRequestWithSsl() throws Exception { this.request.setRequestURI("/mvc-showcase"); this.request.addHeader(X_FORWARDED_SSL, "on"); this.request.addHeader(X_FORWARDED_HOST, "84.198.58.199"); this.request.addHeader(X_FORWARDED_PORT, "443"); this.request.addHeader("foo", "bar"); this.filter.doFilter(this.request, new MockHttpServletResponse(), this.filterChain); HttpServletRequest actual = (HttpServletRequest) this.filterChain.getRequest(); assertEquals("https://84.198.58.199/mvc-showcase", actual.getRequestURL().toString()); assertEquals("https", actual.getScheme()); assertEquals("84.198.58.199", actual.getServerName()); assertEquals(443, actual.getServerPort()); assertTrue(actual.isSecure()); assertNull(actual.getHeader(X_FORWARDED_SSL)); assertNull(actual.getHeader(X_FORWARDED_HOST)); assertNull(actual.getHeader(X_FORWARDED_PORT)); assertEquals("bar", actual.getHeader("foo")); }
@Test public void sendRedirectWhenRequestOnlyAndXForwardedThenUsesRelativeRedirects() throws Exception { this.request.addHeader(X_FORWARDED_PROTO, "https"); this.request.addHeader(X_FORWARDED_HOST, "example.com"); this.request.addHeader(X_FORWARDED_PORT, "443"); this.filter.setRelativeRedirects(true); String location = sendRedirect("/a"); assertEquals("/a", location); }
@Test public void shouldNotFilter() { assertTrue(this.filter.shouldNotFilter(new MockHttpServletRequest())); }
private HttpServletRequest adaptFromForwardedHeaders(HttpServletRequest request) throws Exception { MockFilterChain chain = new MockFilterChain(); new ForwardedHeaderFilter().doFilter(request, new MockHttpServletResponse(), chain); return (HttpServletRequest) chain.getRequest(); }
@Test // SPR-16983 public void forwardedRequestWithServletForward() throws Exception { this.request.setRequestURI("/foo"); this.request.addHeader(X_FORWARDED_PROTO, "https"); this.request.addHeader(X_FORWARDED_HOST, "www.mycompany.com"); this.request.addHeader(X_FORWARDED_PORT, "443"); this.filter.doFilter(this.request, new MockHttpServletResponse(), this.filterChain); HttpServletRequest wrappedRequest = (HttpServletRequest) this.filterChain.getRequest(); this.request.setDispatcherType(DispatcherType.FORWARD); this.request.setRequestURI("/bar"); this.filterChain.reset(); this.filter.doFilter(wrappedRequest, new MockHttpServletResponse(), this.filterChain); HttpServletRequest actual = (HttpServletRequest) this.filterChain.getRequest(); assertNotNull(actual); assertEquals("/bar", actual.getRequestURI()); assertEquals("https://www.mycompany.com/bar", actual.getRequestURL().toString()); }
private void adaptRequestFromForwardedHeaders() throws Exception { MockFilterChain chain = new MockFilterChain(); new ForwardedHeaderFilter().doFilter(this.request, new MockHttpServletResponse(), chain); HttpServletRequest adaptedRequest = (HttpServletRequest) chain.getRequest(); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(adaptedRequest)); }