Example usage for org.springframework.mock.web MockHttpServletResponse getRedirectedUrl

List of usage examples for org.springframework.mock.web MockHttpServletResponse getRedirectedUrl

Introduction

In this page you can find the example usage for org.springframework.mock.web MockHttpServletResponse getRedirectedUrl.

Prototype

@Nullable
    public String getRedirectedUrl() 

Source Link

Usage

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

@Test
public void testIncomingRequestIsSecuredButProtocolHeaderSaysItIsNotWithCustomValues() throws Exception {
    // PREPARE/*w w  w  . j  a  va 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:com.programmingchronicles.tdd.web.addressbook.TestAddContactController.java

/**
 * Test de HttpPost: Verifica que el contacto se aade a la agenda
 * usando el servicio de address book.//from  w ww.  ja  va2  s.  c  o m
 *
 * <p><b>REFACTOFING:</b>
 *       El testDoPostGetParameters ya no era necesario, se prueba
 *       lo mismo en testDoPostAddContact. </p>
 *
 * <p>
 * El testDoPostAddContactRedirect tambin se ha fusionado aqui ya que tiene
 * ms sentido comprobar la funcionalidad completa.</p>
 */
@Test
public void testDoPostAddContact() throws ServletException, IOException, ParseException {
    // Fakes de los parametros del doGet y doPost que amplian la interfaz
    // estandar permitiendo verificaciones sencillas por estado.
    //
    // Se utilizan los mocks de Spring Test Utilities.
    MockHttpServletRequest fakeRequest = new MockHttpServletRequest();
    MockHttpServletResponse fakeResponse = new MockHttpServletResponse();

    // Ahora los fackes nos permiten configurar los parametros de entrada
    // del mtodo testeado. Esto no lo permitan los mocks del contenedor
    // ya que HttpServletRequest no tiene un "setParameters".
    fakeRequest.setParameter("firstName", "Pedro");
    fakeRequest.setParameter("surname", "Ballesteros");
    fakeRequest.setParameter("birthday", "8/1/1974");
    fakeRequest.setParameter("phone", "69696969");

    // Ejecucin del test.
    controller.doPost(fakeRequest, fakeResponse);

    // Verifica que se llama al addContact del mock del addressbook
    ArgumentCaptor<Contact> argument = ArgumentCaptor.forClass(Contact.class);
    verify(mockAddressbook).addContact(argument.capture());

    // En el verify anterior capturamos el argumento con el que se llama
    // a la agenda, y podemos validar que se aade el contacto correcto.
    Contact contact = argument.getValue();
    assertEquals("Pedro", contact.getFirstName());
    assertEquals("Ballesteros", contact.getSurname());
    assertEquals(dateFormat.parse("8/1/1974"), contact.getBirthday());
    assertEquals("69696969", contact.getPhone());

    // Verifica con el fake que no se ha intentado crear el modelo de errores
    assertNull(fakeRequest.getAttribute("errors"));

    // El Fake del HttpServletResponse ahora nos permite verificar por estado
    // la respuesta del doPost.

    // Verifica que se entrega un redirect de navegador al response, ahora
    // el fake nos permite acceder a datos de la respuesta.
    assertEquals("redirectPath", fakeResponse.getRedirectedUrl());
}

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

@Test
public void testIncomingRequestIsSecuredButProtocolHeaderSaysItIsNotWithDefaultValues() throws Exception {
    // PREPARE//from www  .  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:org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilterTests.java

@Test
public void testFilterProcessesUrlVariationsRespected() throws Exception {
    // Setup our HTTP request
    MockHttpServletRequest request = createMockAuthenticationRequest();
    request.setServletPath("/j_OTHER_LOCATION");
    request.setRequestURI("/mycontext/j_OTHER_LOCATION");

    // Setup our filter configuration
    MockFilterConfig config = new MockFilterConfig(null, null);

    // Setup our expectation that the filter chain will not be invoked, as we redirect
    // to defaultTargetUrl
    MockFilterChain chain = new MockFilterChain(false);
    MockHttpServletResponse response = new MockHttpServletResponse();

    // Setup our test object, to grant access
    MockAuthenticationFilter filter = new MockAuthenticationFilter(true);
    filter.setFilterProcessesUrl("/j_OTHER_LOCATION");
    filter.setAuthenticationSuccessHandler(successHandler);

    // Test/*w w w . ja  v a2  s  .  c o m*/
    filter.doFilter(request, response, chain);
    assertThat(response.getRedirectedUrl()).isEqualTo("/mycontext/logged_in.jsp");
    assertThat(SecurityContextHolder.getContext().getAuthentication()).isNotNull();
    assertThat(SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString())
            .isEqualTo("test");
}

From source file:org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilterTests.java

@Test
public void testNormalOperationWithDefaultFilterProcessesUrl() throws Exception {
    // Setup our HTTP request
    MockHttpServletRequest request = createMockAuthenticationRequest();
    HttpSession sessionPreAuth = request.getSession();

    // Setup our filter configuration
    MockFilterConfig config = new MockFilterConfig(null, null);

    // Setup our expectation that the filter chain will not be invoked, as we redirect
    // to defaultTargetUrl
    MockFilterChain chain = new MockFilterChain(false);
    MockHttpServletResponse response = new MockHttpServletResponse();

    // Setup our test object, to grant access
    MockAuthenticationFilter filter = new MockAuthenticationFilter(true);

    filter.setFilterProcessesUrl("/j_mock_post");
    filter.setSessionAuthenticationStrategy(mock(SessionAuthenticationStrategy.class));
    filter.setAuthenticationSuccessHandler(successHandler);
    filter.setAuthenticationFailureHandler(failureHandler);
    filter.setAuthenticationManager(mock(AuthenticationManager.class));
    filter.afterPropertiesSet();//  w w  w  .j ava 2 s.  c  om

    // Test
    filter.doFilter(request, response, chain);
    assertThat(response.getRedirectedUrl()).isEqualTo("/mycontext/logged_in.jsp");
    assertThat(SecurityContextHolder.getContext().getAuthentication()).isNotNull();
    assertThat(SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString())
            .isEqualTo("test");
    // Should still have the same session
    assertThat(request.getSession()).isEqualTo(sessionPreAuth);
}

From source file:org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilterTests.java

@Test
public void testSuccessLoginThenFailureLoginResultsInSessionLosingToken() throws Exception {
    // Setup our HTTP request
    MockHttpServletRequest request = createMockAuthenticationRequest();

    // Setup our filter configuration
    MockFilterConfig config = new MockFilterConfig(null, null);

    // Setup our expectation that the filter chain will not be invoked, as we redirect
    // to defaultTargetUrl
    MockFilterChain chain = new MockFilterChain(false);
    MockHttpServletResponse response = new MockHttpServletResponse();

    // Setup our test object, to grant access
    MockAuthenticationFilter filter = new MockAuthenticationFilter(true);
    filter.setFilterProcessesUrl("/j_mock_post");
    filter.setAuthenticationSuccessHandler(successHandler);

    // Test//from  w ww  .j a  va2 s .com
    filter.doFilter(request, response, chain);
    assertThat(response.getRedirectedUrl()).isEqualTo("/mycontext/logged_in.jsp");
    assertThat(SecurityContextHolder.getContext().getAuthentication()).isNotNull();
    assertThat(SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString())
            .isEqualTo("test");

    // Now try again but this time have filter deny access
    // Setup our HTTP request
    // Setup our expectation that the filter chain will not be invoked, as we redirect
    // to authenticationFailureUrl
    chain = new MockFilterChain(false);
    response = new MockHttpServletResponse();

    // Setup our test object, to deny access
    filter = new MockAuthenticationFilter(false);
    filter.setFilterProcessesUrl("/j_mock_post");
    filter.setAuthenticationFailureHandler(failureHandler);

    // Test
    filter.doFilter(request, response, chain);
    assertThat(SecurityContextHolder.getContext().getAuthentication()).isNull();
}