Example usage for org.springframework.mock.web MockHttpServletRequest getAttribute

List of usage examples for org.springframework.mock.web MockHttpServletRequest getAttribute

Introduction

In this page you can find the example usage for org.springframework.mock.web MockHttpServletRequest getAttribute.

Prototype

@Override
    public Object getAttribute(String name) 

Source Link

Usage

From source file:org.openmrs.web.controller.ForgotPasswordFormControllerTest.java

/**
 * If a user enters 5 requests, the 6th should fail even if that one has a valid username in it
 *
 * @throws Exception//from   www  .j av  a2s. c  o m
 */
@Test
public void shouldLockOutAfterFiveFailedInvalidUsernames() throws Exception {
    ForgotPasswordFormController controller = (ForgotPasswordFormController) applicationContext
            .getBean("forgotPasswordForm");

    for (int x = 1; x <= 5; x++) {
        MockHttpServletRequest request = new MockHttpServletRequest();
        request.setMethod("POST");

        request.addParameter("uname", "invaliduser");

        controller.handleRequest(request, new MockHttpServletResponse());
    }

    // those were the first five, now the sixth request (with a valid user) should fail
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setMethod("POST");

    request.addParameter("uname", "validuser");

    controller.handleRequest(request, new MockHttpServletResponse());
    Assert.assertNull(request.getAttribute("secretQuestion"));
}

From source file:org.openmrs.web.controller.ForgotPasswordFormControllerTest.java

/**
 * If a user enters 4 username requests, the 5th one should reset the lockout and they should be
 * allowed 5 attempts at the secret answer
 *
 * @throws Exception/*w w  w  .j  a  v  a2s. c o m*/
 */
@Test
public void shouldGiveUserFiveSecretAnswerAttemptsAfterLessThanFiveFailedUsernameAttempts() throws Exception {
    ForgotPasswordFormController controller = new ForgotPasswordFormController();

    for (int x = 1; x <= 4; x++) {
        MockHttpServletRequest request = new MockHttpServletRequest();
        request.setMethod("POST");

        request.addParameter("uname", "invaliduser");

        controller.handleRequest(request, new MockHttpServletResponse());
    }

    // those were the first four, now the fifth is a valid username
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setMethod("POST");

    request.addParameter("uname", "validuser");

    controller.handleRequest(request, new MockHttpServletResponse());

    Assert.assertNotNull(request.getAttribute("secretQuestion"));

    // now the user has 5 chances at the secret answer

    // fifth request
    MockHttpServletRequest request5 = new MockHttpServletRequest();
    request5.setMethod("POST");

    request5.addParameter("uname", "validuser");
    request5.addParameter("secretAnswer", "invalid answer");
    controller.handleRequest(request5, new MockHttpServletResponse());
    Assert.assertNotNull(request5.getAttribute("secretQuestion"));

    // sixth request (should not lock out because is after valid username)
    MockHttpServletRequest request6 = new MockHttpServletRequest();
    request6.setMethod("POST");

    request6.addParameter("uname", "validuser");
    request6.addParameter("secretAnswer", "invalid answer");
    request.setMethod("POST");
    controller.handleRequest(request6, new MockHttpServletResponse());
    Assert.assertNotNull(request6.getAttribute("secretQuestion"));

    // seventh request (should Accept with valid answer)
    MockHttpServletRequest request7 = new MockHttpServletRequest();
    request7.setMethod("POST");

    request7.addParameter("uname", "validuser");
    request7.addParameter("secretAnswer", "valid secret answer");
    controller.handleRequest(request7, new MockHttpServletResponse());

    Assert.assertTrue(Context.isAuthenticated());
}

From source file:com.programmingchronicles.tdd.web.addressbook.TestAddContactController.java

/**
 * Test Http Post: Verifica un post con todos los parametros vacos.
 *
 * @throws ServletException/*from   w ww .j  av a  2 s .co  m*/
 * @throws IOException
 */
@Test
public void testDoPostNullParams() throws ServletException, IOException {
    // 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();

    // Ejecucin del test para comprobar que se establece el modelo
    // en este caso los errores.
    controller.doPost(fakeRequest, fakeResponse);

    // Verifica que no se ha intentado aadir el contacto ya que
    // el nombre es obligatorio.
    verify(mockAddressbook, never()).addContact(any(Contact.class));

    // Verifica que se ha creado un modelo con los errores con un
    // setAtribute. Decidimos que se introducirn en un Map<String, String>.

    // Ahora se puede verificar por estado, porque sabemos que nuestro fake
    // devuelve valores reales establecidos con el setAttribute.
    Map<String, String> errors = (Map<String, String>) fakeRequest.getAttribute("errors");
    assertTrue(errors.containsKey("firstName"));
    assertFalse(errors.containsKey("surname"));
    assertFalse(errors.containsKey("birthday"));
    assertFalse(errors.containsKey("phone"));

    // IMPORTANTE:
    //   No se han comprobado los textos de error, en un test unitario no se
    //   deben probar la IU. Dichas pruebas estaran en tests de IU (test de sistema).

    // En caso de error la peticin se debe dirigir a la vista del formulario
    // de nuevo, que ahora mostrar los campos de entrada erroneos.

    // Ahora se puede verificar por estado ya que el fake del response nos
    // permite acceder al path con el que se hizo el forward.
    assertEquals("formViewPath", fakeResponse.getForwardedUrl());
}

From source file:com.programmingchronicles.tdd.web.addressbook.TestAddContactController.java

/**
 * Test Http Post: Verifica que se puede aadir un contacto con
 * solo el nombre.//from www. j a v  a  2s . c om
 *
 * @throws ServletException
 * @throws IOException
 */
@Test
public void testDoPostOnlyName() throws ServletException, IOException {
    // 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();

    // El request solo tendr el parametros del nombre
    fakeRequest.setParameter("firstName", "Pedro");

    // 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());
    assertNull(contact.getSurname());
    assertNull(contact.getBirthday());
    assertNull(contact.getPhone());

    // Verifica que no se ha creado el modelo de errores.
    assertNull(fakeRequest.getAttribute("errors"));

    // Verifica que se llama al redirect del response con el parametro correcto.
    assertEquals("redirectPath", fakeResponse.getRedirectedUrl());
}

From source file:com.programmingchronicles.tdd.web.addressbook.TestShowContactsController.java

/**
 * Test del mtodo doGet, que procesa la peticin.
 *
 * <p>/*from  w w w.j  a va 2s  .co m*/
 * Al ser una arquitectura MVC, lo unico que hay que testear es:<br/>
 * <ol>
 *    <li> El controlador recibe los parametros.
 *    <li> Construye el modelo de forma adecuada.
 *    <li> Se redirige la peticin a la vista adecuada.
 * </ol>
 * </p>
 * <p>
 * El controlador se implementar como un Servlet, y la logica se
 * procesar en un HTTP GET.</p>
 */
@Test
public void testDoGet() throws ServletException, IOException {

    // 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();

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

    // Diseo de nuestra arquitectura MVC:
    //   El servlet (controlador) construye el modelo y lo hace
    //   accesible a la vista, que ser una JSP.
    //
    //   El modelo se crea como atributos del request (request.setAttribute).
    //
    //   En este caso aprobechamos los domain objects del sistema. Otros
    //   controladores podran definir modelos propios. Las necesidades
    //   particulares de la logica de presentacin no deben influir en la
    //   lgica de negocio. El modelo es lgica de presentacin, no de
    //   negocio.

    // El request y response son los parametros de entrada y salida
    // del mtodo testado, con los fakes ahora podemos hacer verificacin
    // por estado en lugar de interaccin.

    // Verifica que el modelo se a creado correctamente. Ahora se puede
    // verificar por estado, porque sabemos que nuestro fake devuelve
    // valores reales establecidos con el setAttribute.
    assertSame(fakeRequest.getAttribute("contacts"), contactList);

    // Verifica que el forward se realiza a la vista correcta, usando
    // las facilidades del Fake que permiten obtener el path del forward,
    // en lugar de realizar una validacin por interaccin.
    assertEquals("viewPath", fakeResponse.getForwardedUrl());
}

From source file:com.github.mike10004.stormpathacctmgr.NewPasswordFormServletTest.java

@Test
public void testDoGet() throws Exception {
    System.out.println("NewPasswordFormServletTest.testDoGet");
    String emailAddress = "somebody@example.com";
    String token = "981ng9014ng4nh9014h901nh4jhqg8rejg089rjg09zahg49hqg08";
    final Application application = createNiceMock(Application.class);
    Account account = createNiceMock(Account.class);
    final RequestDispatcher requestDispatcher = createNiceMock(RequestDispatcher.class);
    MockHttpServletResponse mockResponse = new MockHttpServletResponse();
    MockHttpServletRequest mockRequest = new MockHttpServletRequest() {

        @Override/*from   www  .  j  a  v a2s .  c  o  m*/
        public RequestDispatcher getRequestDispatcher(String path) {
            assertEquals(NewPasswordFormServlet.RESET_ENTER_NEW_PASSWORD_JSP_PATH, path);
            return requestDispatcher;
        }

    };
    mockRequest.setParameter(PasswordReset.PARAM_RESET_TOKEN, token);
    requestDispatcher.forward(mockRequest, mockResponse);
    EasyMock.expectLastCall().times(1);
    expect(account.getEmail()).andReturn(emailAddress).anyTimes();
    expect(application.verifyPasswordResetToken(token)).andReturn(account).times(1);
    replay(application, account, requestDispatcher);

    final Stormpaths stormpaths = new Stormpaths() {

        @Override
        public Application buildApplication() {
            return application;
        }

    };
    NewPasswordFormServlet instance = new NewPasswordFormServlet() {

        @Override
        protected Stormpaths createStormpaths() {
            return stormpaths;
        }

    };
    MockServletContext servletContext = new MockServletContext();
    instance.init(new MockServletConfig(servletContext));
    instance.doGet(mockRequest, mockResponse);
    String actualTargetEmailAttribute = (String) mockRequest
            .getAttribute(NewPasswordFormServlet.ATTR_TARGET_EMAIL);
    System.out.println("email attribute: " + actualTargetEmailAttribute);
    assertEquals(emailAddress, actualTargetEmailAttribute);
    System.out.println("status: " + mockResponse.getStatus());
    assertEquals(HttpServletResponse.SC_OK, mockResponse.getStatus());
}

From source file:org.jasig.cas.support.oauth.web.flow.OAuthActionTests.java

@Test
public void testFinishAuthentication() throws Exception {
    final MockHttpServletRequest mockRequest = new MockHttpServletRequest();
    mockRequest.setParameter(OAuthConstants.OAUTH_PROVIDER, "FacebookProvider");

    final MockHttpSession mockSession = new MockHttpSession();
    mockSession.setAttribute(OAuthConstants.THEME, MY_THEME);
    mockSession.setAttribute(OAuthConstants.LOCALE, MY_LOCALE);
    mockSession.setAttribute(OAuthConstants.METHOD, MY_METHOD);
    final Service service = new SimpleWebApplicationServiceImpl(MY_SERVICE);
    mockSession.setAttribute(OAuthConstants.SERVICE, service);
    mockRequest.setSession(mockSession);

    final ServletExternalContext servletExternalContext = mock(ServletExternalContext.class);
    when(servletExternalContext.getNativeRequest()).thenReturn(mockRequest);

    final MockRequestContext mockRequestContext = new MockRequestContext();
    mockRequestContext.setExternalContext(servletExternalContext);

    final CentralAuthenticationService centralAuthenticationService = mock(CentralAuthenticationService.class);

    final OAuthAction oAuthAction = new OAuthAction();
    oAuthAction.setConfiguration(newConfiguration());
    oAuthAction.setCentralAuthenticationService(centralAuthenticationService);
    final Event event = oAuthAction.execute(mockRequestContext);
    assertEquals("success", event.getId());
    assertEquals(MY_THEME, mockRequest.getAttribute(OAuthConstants.THEME));
    assertEquals(MY_LOCALE, mockRequest.getAttribute(OAuthConstants.LOCALE));
    assertEquals(MY_METHOD, mockRequest.getAttribute(OAuthConstants.METHOD));
    final MutableAttributeMap flowScope = mockRequestContext.getFlowScope();
    assertEquals(service, flowScope.get(OAuthConstants.SERVICE));
}

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./* www. j ava2  s  .c om*/
 *
 * <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:org.jasig.cas.support.pac4j.web.flow.ClientActionTests.java

@Test
public void verifyFinishAuthentication() throws Exception {
    final MockHttpServletRequest mockRequest = new MockHttpServletRequest();
    mockRequest.setParameter(Clients.DEFAULT_CLIENT_NAME_PARAMETER, "FacebookClient");

    final MockHttpSession mockSession = new MockHttpSession();
    mockSession.setAttribute(ClientAction.THEME, MY_THEME);
    mockSession.setAttribute(ClientAction.LOCALE, MY_LOCALE);
    mockSession.setAttribute(ClientAction.METHOD, MY_METHOD);
    final Service service = new SimpleWebApplicationServiceImpl(MY_SERVICE);
    mockSession.setAttribute(ClientAction.SERVICE, service);
    mockRequest.setSession(mockSession);

    final ServletExternalContext servletExternalContext = mock(ServletExternalContext.class);
    when(servletExternalContext.getNativeRequest()).thenReturn(mockRequest);

    final MockRequestContext mockRequestContext = new MockRequestContext();
    mockRequestContext.setExternalContext(servletExternalContext);

    final FacebookClient facebookClient = new MockFacebookClient();
    final Clients clients = new Clients(MY_LOGIN_URL, facebookClient);

    final TicketGrantingTicket tgt = new TicketGrantingTicketImpl(TGT_ID, mock(Authentication.class),
            mock(ExpirationPolicy.class));
    final CentralAuthenticationService casImpl = mock(CentralAuthenticationService.class);
    when(casImpl.createTicketGrantingTicket(any(Credential.class))).thenReturn(tgt);
    final ClientAction action = new ClientAction(casImpl, clients);
    final Event event = action.execute(mockRequestContext);
    assertEquals("success", event.getId());
    assertEquals(MY_THEME, mockRequest.getAttribute(ClientAction.THEME));
    assertEquals(MY_LOCALE, mockRequest.getAttribute(ClientAction.LOCALE));
    assertEquals(MY_METHOD, mockRequest.getAttribute(ClientAction.METHOD));
    assertEquals(MY_SERVICE, mockRequest.getAttribute(ClientAction.SERVICE));
    final MutableAttributeMap flowScope = mockRequestContext.getFlowScope();
    final MutableAttributeMap requestScope = mockRequestContext.getRequestScope();
    assertEquals(service, flowScope.get(ClientAction.SERVICE));
    assertEquals(TGT_ID, flowScope.get(TGT_NAME));
    assertEquals(TGT_ID, requestScope.get(TGT_NAME));
}

From source file:org.cateproject.test.functional.mockmvc.HtmlUnitRequestBuilder.java

private void parent(MockHttpServletRequest result, RequestBuilder parent) {
    if (parent == null) {
        return;//  ww  w  .ja  v  a  2 s  . c om
    }
    MockHttpServletRequest parentRequest = parent.buildRequest(result.getServletContext());

    // session
    HttpSession parentSession = parentRequest.getSession(false);
    if (parentSession != null) {
        Enumeration<String> attrNames = parentSession.getAttributeNames();
        while (attrNames.hasMoreElements()) {
            String attrName = attrNames.nextElement();
            Object attrValue = parentSession.getAttribute(attrName);
            result.getSession().setAttribute(attrName, attrValue);
        }
    }

    // header
    Enumeration<String> headerNames = parentRequest.getHeaderNames();
    while (headerNames.hasMoreElements()) {
        String attrName = headerNames.nextElement();
        Enumeration<String> attrValues = parentRequest.getHeaders(attrName);
        while (attrValues.hasMoreElements()) {
            String attrValue = attrValues.nextElement();
            result.addHeader(attrName, attrValue);
        }
    }

    // parameter
    Map<String, String[]> parentParams = parentRequest.getParameterMap();
    for (Map.Entry<String, String[]> parentParam : parentParams.entrySet()) {
        String paramName = parentParam.getKey();
        String[] paramValues = parentParam.getValue();
        result.addParameter(paramName, paramValues);
    }

    // cookie
    Cookie[] parentCookies = parentRequest.getCookies();
    if (parentCookies != null) {
        result.setCookies(parentCookies);
    }

    // request attribute
    Enumeration<String> parentAttrNames = parentRequest.getAttributeNames();
    while (parentAttrNames.hasMoreElements()) {
        String parentAttrName = parentAttrNames.nextElement();
        result.setAttribute(parentAttrName, parentRequest.getAttribute(parentAttrName));
    }
}