Example usage for org.springframework.mock.web MockFilterChain getRequest

List of usage examples for org.springframework.mock.web MockFilterChain getRequest

Introduction

In this page you can find the example usage for org.springframework.mock.web MockFilterChain getRequest.

Prototype

@Nullable
public ServletRequest getRequest() 

Source Link

Document

Return the request that #doFilter has been called with.

Usage

From source file:fr.xebia.servlet.filter.XForwardedFilterTest.java

@Test
public void testInvokeAllProxiesAreTrustedAndRemoteAddrMatchRegexp() throws Exception {

    // PREPARE/*from ww  w.j av a  2 s.co  m*/
    XForwardedFilter xforwardedFilter = new XForwardedFilter();
    MockFilterConfig filterConfig = new MockFilterConfig();
    filterConfig.addInitParameter(XForwardedFilter.INTERNAL_PROXIES_PARAMETER,
            "127\\.0\\.0\\.1, 192\\.168\\..*, another-internal-proxy");
    filterConfig.addInitParameter(XForwardedFilter.TRUSTED_PROXIES_PARAMETER, "proxy1, proxy2, proxy3");
    filterConfig.addInitParameter(XForwardedFilter.REMOTE_IP_HEADER_PARAMETER, "x-forwarded-for");
    filterConfig.addInitParameter(XForwardedFilter.PROXIES_HEADER_PARAMETER, "x-forwarded-by");

    xforwardedFilter.init(filterConfig);
    MockFilterChain filterChain = new MockFilterChain();
    MockHttpServletRequest request = new MockHttpServletRequest();

    request.setRemoteAddr("192.168.0.10");
    request.setRemoteHost("remote-host-original-value");
    request.addHeader("x-forwarded-for", "140.211.11.130, proxy1, proxy2");

    // TEST
    xforwardedFilter.doFilter(request, new MockHttpServletResponse(), filterChain);

    // VERIFY
    String actualXForwardedFor = ((HttpServletRequest) filterChain.getRequest()).getHeader("x-forwarded-for");
    assertNull("all proxies are trusted, x-forwarded-for must be null", actualXForwardedFor);

    String actualXForwardedBy = ((HttpServletRequest) filterChain.getRequest()).getHeader("x-forwarded-by");
    assertEquals("all proxies are trusted, they must appear in x-forwarded-by", "proxy1, proxy2",
            actualXForwardedBy);

    String actualRemoteAddr = ((HttpServletRequest) filterChain.getRequest()).getRemoteAddr();
    assertEquals("remoteAddr", "140.211.11.130", actualRemoteAddr);

    String actualRemoteHost = ((HttpServletRequest) filterChain.getRequest()).getRemoteHost();
    assertEquals("remoteHost", "140.211.11.130", actualRemoteHost);
}

From source file:fr.xebia.servlet.filter.XForwardedFilterTest.java

@Test
public void testInvokeAllProxiesAreInternal() throws Exception {

    // PREPARE/*  w w w.ja va  2  s  .  com*/
    XForwardedFilter xforwardedFilter = new XForwardedFilter();
    MockFilterConfig filterConfig = new MockFilterConfig();
    filterConfig.addInitParameter(XForwardedFilter.INTERNAL_PROXIES_PARAMETER,
            "192\\.168\\.0\\.10, 192\\.168\\.0\\.11");
    filterConfig.addInitParameter(XForwardedFilter.TRUSTED_PROXIES_PARAMETER, "proxy1, proxy2, proxy3");
    filterConfig.addInitParameter(XForwardedFilter.REMOTE_IP_HEADER_PARAMETER, "x-forwarded-for");
    filterConfig.addInitParameter(XForwardedFilter.PROXIES_HEADER_PARAMETER, "x-forwarded-by");

    xforwardedFilter.init(filterConfig);
    MockFilterChain filterChain = new MockFilterChain();
    MockHttpServletRequest request = new MockHttpServletRequest();

    request.setRemoteAddr("192.168.0.10");
    request.setRemoteHost("remote-host-original-value");
    request.addHeader("x-forwarded-for", "140.211.11.130, 192.168.0.10, 192.168.0.11");

    // TEST
    xforwardedFilter.doFilter(request, new MockHttpServletResponse(), filterChain);

    // VERIFY
    String actualXForwardedFor = ((HttpServletRequest) filterChain.getRequest()).getHeader("x-forwarded-for");
    assertNull("all proxies are internal, x-forwarded-for must be null", actualXForwardedFor);

    String actualXForwardedBy = ((HttpServletRequest) filterChain.getRequest()).getHeader("x-forwarded-by");
    assertNull("all proxies are internal, x-forwarded-by must be null", actualXForwardedBy);

    String actualRemoteAddr = ((HttpServletRequest) filterChain.getRequest()).getRemoteAddr();
    assertEquals("remoteAddr", "140.211.11.130", actualRemoteAddr);

    String actualRemoteHost = ((HttpServletRequest) filterChain.getRequest()).getRemoteHost();
    assertEquals("remoteHost", "140.211.11.130", actualRemoteHost);
}

From source file:fr.xebia.servlet.filter.XForwardedFilterTest.java

@Test
public void testInvokeUntrustedProxyInTheChain() throws Exception {
    // PREPARE// w  ww. j a va2 s  .c  o  m
    XForwardedFilter xforwardedFilter = new XForwardedFilter();
    MockFilterConfig filterConfig = new MockFilterConfig();
    filterConfig.addInitParameter(XForwardedFilter.INTERNAL_PROXIES_PARAMETER,
            "192\\.168\\.0\\.10, 192\\.168\\.0\\.11");
    filterConfig.addInitParameter(XForwardedFilter.TRUSTED_PROXIES_PARAMETER, "proxy1, proxy2, proxy3");
    filterConfig.addInitParameter(XForwardedFilter.REMOTE_IP_HEADER_PARAMETER, "x-forwarded-for");
    filterConfig.addInitParameter(XForwardedFilter.PROXIES_HEADER_PARAMETER, "x-forwarded-by");

    xforwardedFilter.init(filterConfig);
    MockFilterChain filterChain = new MockFilterChain();
    MockHttpServletRequest request = new MockHttpServletRequest();

    request.setRemoteAddr("192.168.0.10");
    request.setRemoteHost("remote-host-original-value");
    request.addHeader("x-forwarded-for", "140.211.11.130, proxy1, untrusted-proxy, proxy2");

    // TEST
    xforwardedFilter.doFilter(request, new MockHttpServletResponse(), filterChain);

    // VERIFY
    String actualXForwardedFor = ((HttpServletRequest) filterChain.getRequest()).getHeader("x-forwarded-for");
    assertEquals("ip/host before untrusted-proxy must appear in x-forwarded-for", "140.211.11.130, proxy1",
            actualXForwardedFor);

    String actualXForwardedBy = ((HttpServletRequest) filterChain.getRequest()).getHeader("x-forwarded-by");
    assertEquals("ip/host after untrusted-proxy must appear in  x-forwarded-by", "proxy2", actualXForwardedBy);

    String actualRemoteAddr = ((HttpServletRequest) filterChain.getRequest()).getRemoteAddr();
    assertEquals("remoteAddr", "untrusted-proxy", actualRemoteAddr);

    String actualRemoteHost = ((HttpServletRequest) filterChain.getRequest()).getRemoteHost();
    assertEquals("remoteHost", "untrusted-proxy", actualRemoteHost);
}

From source file:fr.xebia.servlet.filter.XForwardedFilterTest.java

@Test
public void testInvokeNotAllowedRemoteAddr() throws Exception {
    // PREPARE/*from  w w w  .j a v  a  2s . co m*/
    XForwardedFilter xforwardedFilter = new XForwardedFilter();
    MockFilterConfig filterConfig = new MockFilterConfig();
    filterConfig.addInitParameter(XForwardedFilter.INTERNAL_PROXIES_PARAMETER,
            "192\\.168\\.0\\.10, 192\\.168\\.0\\.11");
    filterConfig.addInitParameter(XForwardedFilter.TRUSTED_PROXIES_PARAMETER, "proxy1, proxy2, proxy3");
    filterConfig.addInitParameter(XForwardedFilter.REMOTE_IP_HEADER_PARAMETER, "x-forwarded-for");
    filterConfig.addInitParameter(XForwardedFilter.PROXIES_HEADER_PARAMETER, "x-forwarded-by");

    xforwardedFilter.init(filterConfig);
    MockFilterChain filterChain = new MockFilterChain();
    MockHttpServletRequest request = new MockHttpServletRequest();

    request.setRemoteAddr("not-allowed-internal-proxy");
    request.setRemoteHost("not-allowed-internal-proxy-host");
    request.addHeader("x-forwarded-for", "140.211.11.130, proxy1, proxy2");

    // TEST
    xforwardedFilter.doFilter(request, new MockHttpServletResponse(), filterChain);

    // VERIFY
    String actualXForwardedFor = ((HttpServletRequest) filterChain.getRequest()).getHeader("x-forwarded-for");
    assertEquals("x-forwarded-for must be unchanged", "140.211.11.130, proxy1, proxy2", actualXForwardedFor);

    String actualXForwardedBy = ((HttpServletRequest) filterChain.getRequest()).getHeader("x-forwarded-by");
    assertNull("x-forwarded-by must be null", actualXForwardedBy);

    String actualRemoteAddr = ((HttpServletRequest) filterChain.getRequest()).getRemoteAddr();
    assertEquals("remoteAddr", "not-allowed-internal-proxy", actualRemoteAddr);

    String actualRemoteHost = ((HttpServletRequest) filterChain.getRequest()).getRemoteHost();
    assertEquals("remoteHost", "not-allowed-internal-proxy-host", actualRemoteHost);
}

From source file:fr.xebia.servlet.filter.XForwardedFilterTest.java

@Test
public void testInvokeAllProxiesAreTrustedOrInternal() throws Exception {

    // PREPARE/*from   w w w  . j ava2 s.  c  o m*/
    XForwardedFilter xforwardedFilter = new XForwardedFilter();
    MockFilterConfig filterConfig = new MockFilterConfig();
    filterConfig.addInitParameter(XForwardedFilter.INTERNAL_PROXIES_PARAMETER,
            "192\\.168\\.0\\.10, 192\\.168\\.0\\.11");
    filterConfig.addInitParameter(XForwardedFilter.TRUSTED_PROXIES_PARAMETER, "proxy1, proxy2, proxy3");
    filterConfig.addInitParameter(XForwardedFilter.REMOTE_IP_HEADER_PARAMETER, "x-forwarded-for");
    filterConfig.addInitParameter(XForwardedFilter.PROXIES_HEADER_PARAMETER, "x-forwarded-by");

    xforwardedFilter.init(filterConfig);
    MockFilterChain filterChain = new MockFilterChain();
    MockHttpServletRequest request = new MockHttpServletRequest();

    request.setRemoteAddr("192.168.0.10");
    request.setRemoteHost("remote-host-original-value");
    request.addHeader("x-forwarded-for", "140.211.11.130, proxy1, proxy2, 192.168.0.10, 192.168.0.11");

    // TEST
    xforwardedFilter.doFilter(request, new MockHttpServletResponse(), filterChain);

    // VERIFY
    String actualXForwardedFor = ((HttpServletRequest) filterChain.getRequest()).getHeader("x-forwarded-for");
    assertNull("all proxies are trusted, x-forwarded-for must be null", actualXForwardedFor);

    String actualXForwardedBy = ((HttpServletRequest) filterChain.getRequest()).getHeader("x-forwarded-by");
    assertEquals("all proxies are trusted, they must appear in x-forwarded-by", "proxy1, proxy2",
            actualXForwardedBy);

    String actualRemoteAddr = ((HttpServletRequest) filterChain.getRequest()).getRemoteAddr();
    assertEquals("remoteAddr", "140.211.11.130", actualRemoteAddr);

    String actualRemoteHost = ((HttpServletRequest) filterChain.getRequest()).getRemoteHost();
    assertEquals("remoteHost", "140.211.11.130", actualRemoteHost);
}

From source file:fr.xebia.servlet.filter.XForwardedFilterTest.java

/**
 * Use <code>X-Real-IP</code> and <code>X-Secure</code> headers.
 *
 * @throws Exception/* w w  w .  ja  va2s .c o m*/
 */
@Test
public void testNGinxStyleIncomingRequest() throws Exception {
    // PREPARE
    XForwardedFilter xforwardedFilter = new XForwardedFilter();
    MockFilterConfig filterConfig = new MockFilterConfig();
    filterConfig.addInitParameter(XForwardedFilter.PROTOCOL_HEADER_PARAMETER, "X-Secure");
    filterConfig.addInitParameter(XForwardedFilter.PROTOCOL_HEADER_HTTPS_VALUE_PARAMETER, "on");
    filterConfig.addInitParameter(XForwardedFilter.REMOTE_IP_HEADER_PARAMETER, "X-Real-IP");

    xforwardedFilter.init(filterConfig);
    MockFilterChain filterChain = new MockFilterChain();
    MockHttpServletRequest request = new MockHttpServletRequest();

    request.setRemoteAddr("192.168.0.10");
    request.setSecure(false);
    request.setScheme("http");
    request.addHeader("X-Real-IP", "140.211.11.130");
    request.addHeader("X-Secure", "on");

    MockHttpServletResponse response = new MockHttpServletResponse();

    // TEST
    xforwardedFilter.doFilter(request, response, filterChain);

    // VERIFY
    boolean actualSecure = filterChain.getRequest().isSecure();
    assertEquals("request must be secured as header X-Secure='on'", true, actualSecure);

    String actualScheme = filterChain.getRequest().getScheme();
    assertEquals("scheme must be https as header X-Secure='on'", "https", actualScheme);

    int actualServerPort = filterChain.getRequest().getServerPort();
    assertEquals("wrong http server port", 443, actualServerPort);

    String actualRemoteAddr = ((HttpServletRequest) filterChain.getRequest()).getRemoteAddr();
    assertEquals("remoteAddr", "140.211.11.130", actualRemoteAddr);

    String actualRemoteHost = ((HttpServletRequest) filterChain.getRequest()).getRemoteHost();
    assertEquals("remoteHost", "140.211.11.130", actualRemoteHost);

    ((HttpServletResponse) filterChain.getResponse()).sendRedirect("http://absolute/URL");
    assertEquals("redirectedUrl", "http://absolute/URL", response.getRedirectedUrl());
}

From source file:fr.xebia.servlet.filter.XForwardedFilterTest.java

@Test
public void testIncomingRequestIsSecuredButProtocolHeaderSaysItIsNotWithCustomValues() throws Exception {
    // PREPARE//  w  w  w . ja v a 2  s  .  co m
    XForwardedFilter xforwardedFilter = new XForwardedFilter();
    MockFilterConfig filterConfig = new MockFilterConfig();
    filterConfig.addInitParameter(XForwardedFilter.PROTOCOL_HEADER_PARAMETER, "x-forwarded-proto");
    filterConfig.addInitParameter(XForwardedFilter.REMOTE_IP_HEADER_PARAMETER, "x-my-forwarded-for");
    filterConfig.addInitParameter(XForwardedFilter.HTTP_SERVER_PORT_PARAMETER, "8080");

    xforwardedFilter.init(filterConfig);
    MockFilterChain filterChain = new MockFilterChain();
    MockHttpServletRequest request = new MockHttpServletRequest();

    request.setRemoteAddr("192.168.0.10");
    request.setSecure(true);
    request.setScheme("https");
    request.addHeader("x-my-forwarded-for", "140.211.11.130");
    request.addHeader("x-forwarded-proto", "http");

    MockHttpServletResponse response = new MockHttpServletResponse();

    // TEST
    xforwardedFilter.doFilter(request, response, filterChain);

    // VERIFY
    boolean actualSecure = filterChain.getRequest().isSecure();
    assertEquals("request must be unsecured as header x-forwarded-proto said it is http", false, actualSecure);

    String actualScheme = filterChain.getRequest().getScheme();
    assertEquals("scheme must be http as header x-forwarded-proto said it is http", "http", actualScheme);

    int actualServerPort = filterChain.getRequest().getServerPort();
    assertEquals("wrong http server port", 8080, actualServerPort);

    String actualRemoteAddr = ((HttpServletRequest) filterChain.getRequest()).getRemoteAddr();
    assertEquals("remoteAddr", "140.211.11.130", actualRemoteAddr);

    String actualRemoteHost = ((HttpServletRequest) filterChain.getRequest()).getRemoteHost();
    assertEquals("remoteHost", "140.211.11.130", actualRemoteHost);

    ((HttpServletResponse) filterChain.getResponse()).sendRedirect("http://absolute/URL");
    assertEquals("redirectedUrl", "http://absolute/URL", response.getRedirectedUrl());
}

From source file:fr.xebia.servlet.filter.XForwardedFilterTest.java

@Test
public void testIncomingRequestIsSecuredButProtocolHeaderSaysItIsNotWithDefaultValues() throws Exception {
    // PREPARE//from  w  ww. j ava 2 s. c o  m
    XForwardedFilter xforwardedFilter = new XForwardedFilter();
    MockFilterConfig filterConfig = new MockFilterConfig();
    filterConfig.addInitParameter(XForwardedFilter.PROTOCOL_HEADER_PARAMETER, "x-forwarded-proto");

    xforwardedFilter.init(filterConfig);
    MockFilterChain filterChain = new MockFilterChain();
    MockHttpServletRequest request = new MockHttpServletRequest();

    request.setRemoteAddr("192.168.0.10");
    request.setSecure(true);
    request.setScheme("https");
    request.addHeader("x-forwarded-for", "140.211.11.130");
    request.addHeader("x-forwarded-proto", "http");

    MockHttpServletResponse response = new MockHttpServletResponse();

    // TEST
    xforwardedFilter.doFilter(request, response, filterChain);

    // VERIFY
    boolean actualSecure = filterChain.getRequest().isSecure();
    assertEquals("request must be unsecured as header x-forwarded-proto said it is http", false, actualSecure);

    String actualScheme = filterChain.getRequest().getScheme();
    assertEquals("scheme must be http as header x-forwarded-proto said it is http", "http", actualScheme);

    String actualRemoteAddr = ((HttpServletRequest) filterChain.getRequest()).getRemoteAddr();
    assertEquals("remoteAddr", "140.211.11.130", actualRemoteAddr);

    String actualRemoteHost = ((HttpServletRequest) filterChain.getRequest()).getRemoteHost();
    assertEquals("remoteHost", "140.211.11.130", actualRemoteHost);

    String actualUrl = ((HttpServletResponse) filterChain.getResponse()).encodeURL("/relativeURL");
    assertEquals("encodeURL relative", "http://localhost/relativeURL", actualUrl);

    actualUrl = ((HttpServletResponse) filterChain.getResponse()).encodeURL("https://absolute/URL");
    assertEquals("encodeURL absolute", "https://absolute/URL", actualUrl);

    String actualRedirectUrl = ((HttpServletResponse) filterChain.getResponse())
            .encodeRedirectURL("/relativeURL");
    assertEquals("encodeRedirectURL relative", "http://localhost/relativeURL", actualRedirectUrl);

    ((HttpServletResponse) filterChain.getResponse()).sendRedirect("/relativeURL");
    assertEquals("redirectedUrl", "http://localhost/relativeURL", response.getRedirectedUrl());
}

From source file:fr.xebia.servlet.filter.XForwardedFilterTest.java

@Test
public void testInvokeAllowedRemoteAddrWithNullRemoteIpHeader() throws Exception {
    // PREPARE//w w  w. j  av  a2s . c o m
    XForwardedFilter xforwardedFilter = new XForwardedFilter();
    MockFilterConfig filterConfig = new MockFilterConfig();
    filterConfig.addInitParameter(XForwardedFilter.INTERNAL_PROXIES_PARAMETER,
            "192\\.168\\.0\\.10, 192\\.168\\.0\\.11");
    filterConfig.addInitParameter(XForwardedFilter.TRUSTED_PROXIES_PARAMETER, "proxy1, proxy2, proxy3");
    filterConfig.addInitParameter(XForwardedFilter.REMOTE_IP_HEADER_PARAMETER, "x-forwarded-for");
    filterConfig.addInitParameter(XForwardedFilter.PROXIES_HEADER_PARAMETER, "x-forwarded-by");

    xforwardedFilter.init(filterConfig);
    MockFilterChain filterChain = new MockFilterChain();
    MockHttpServletRequest request = new MockHttpServletRequest();

    request.setRemoteAddr("192.168.0.10");
    request.setRemoteHost("remote-host-original-value");

    // TEST
    xforwardedFilter.doFilter(request, new MockHttpServletResponse(), filterChain);

    // VERIFY
    String actualXForwardedFor = request.getHeader("x-forwarded-for");
    assertNull("x-forwarded-for must be null", actualXForwardedFor);

    String actualXForwardedBy = request.getHeader("x-forwarded-by");
    assertNull("x-forwarded-by must be null", actualXForwardedBy);

    String actualRemoteAddr = filterChain.getRequest().getRemoteAddr();
    assertEquals("remoteAddr", "192.168.0.10", actualRemoteAddr);

    String actualRemoteHost = filterChain.getRequest().getRemoteHost();
    assertEquals("remoteHost", "remote-host-original-value", actualRemoteHost);

}