List of usage examples for org.springframework.mock.web MockHttpServletRequest getAttribute
@Override
public Object getAttribute(String name)
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)); } }