@Test public void publishEventsOff() throws Exception { complexDispatcherServlet.setPublishEvents(false); MockHttpServletRequest request = new MockHttpServletRequest(getServletContext(), "GET", "/locale.do"); MockHttpServletResponse response = new MockHttpServletResponse(); complexDispatcherServlet.service(request, response); ComplexWebApplicationContext.TestApplicationListener listener = (ComplexWebApplicationContext.TestApplicationListener) complexDispatcherServlet .getWebApplicationContext().getBean("testListener"); assertEquals(0, listener.counter); }
@Test public void multiPaths() throws Exception { initServletWithControllers(MultiPathController.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/category/page/5"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals("handle4-page-5", response.getContentAsString()); request = new MockHttpServletRequest("GET", "/category/page/5.html"); response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals("handle4-page-5", response.getContentAsString()); }
@Test public void typeAndMethodLevel() throws Exception { initServlet(TypeAndMethodLevelImpl.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels/bookings"); MockHttpServletResponse response = new MockHttpServletResponse(); servlet.service(request, response); assertEquals("doIt", response.getContentAsString()); }
@Test public void withNoView() throws Exception { MockServletContext servletContext = new MockServletContext(); MockHttpServletRequest request = new MockHttpServletRequest(servletContext, "GET", "/noview.do"); MockHttpServletResponse response = new MockHttpServletResponse(); complexDispatcherServlet.service(request, response); assertEquals("noview.jsp", response.getForwardedUrl()); }
@Test public void methodLevel() throws Exception { initServlet(MethodLevelImpl.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/test"); MockHttpServletResponse response = new MockHttpServletResponse(); servlet.service(request, response); assertEquals("doIt", response.getContentAsString()); }
@Test public void relative() throws Exception { initServletWithControllers(RelativePathUriTemplateController.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels/42/bookings/21"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals("test-42-21", response.getContentAsString()); request = new MockHttpServletRequest("GET", "/hotels/42/bookings/21.html"); response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals("test-42-21", response.getContentAsString()); }
@Test public void explicitSubPath() throws Exception { initServletWithControllers(ExplicitSubPathController.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/hotels/42"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals("test-42", response.getContentAsString()); }
@Test public void menuTree() throws Exception { initServletWithControllers(MenuTreeController.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/book/menu/type/M5"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals("M5", response.getContentAsString()); }
@Test public void lateBindingFormController() throws Exception { initServlet( wac -> wac.registerBeanDefinition("viewResolver", new RootBeanDefinition(TestViewResolver.class)), LateBindingFormController.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/myPath.do"); request.addParameter("name", "name1"); request.addParameter("age", "value2"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals("myView-name1-typeMismatch-tb1-myValue", response.getContentAsString()); }
@Test public void simple() throws Exception { initServletWithControllers(SimpleUriTemplateController.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/42"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals("test-42-7", response.getContentAsString()); }
@Test public void responseBodyNoAcceptHeader() throws Exception { initServletWithControllers(RequestResponseBodyController.class); MockHttpServletRequest request = new MockHttpServletRequest("PUT", "/something"); String requestBody = "Hello World"; request.setContent(requestBody.getBytes("UTF-8")); request.addHeader("Content-Type", "text/plain; charset=utf-8"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals(200, response.getStatus()); assertEquals(requestBody, response.getContentAsString()); }
@Test public void responseBodyVoid() throws Exception { initServletWithControllers(ResponseBodyVoidController.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/something"); request.addHeader("Accept", "text/*, */*"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals(200, response.getStatus()); }
@Test public void dataClassBindingWithLocalDate() throws Exception { initServletWithControllers(DateClassController.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/bind"); request.addParameter("date", "2010-01-01"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals("2010-01-01", response.getContentAsString()); }
@Test public void localeRequest() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(getServletContext(), "GET", "/locale.do"); request.addPreferredLocale(Locale.CANADA); MockHttpServletResponse response = new MockHttpServletResponse(); simpleDispatcherServlet.service(request, response); assertTrue("Not forwarded", response.getForwardedUrl() == null); assertEquals("Wed, 01 Apr 2015 00:00:00 GMT", response.getHeader("Last-Modified")); }
@Test public void responseAsHttpHeaders() throws Exception { initServletWithControllers(HttpHeadersResponseController.class); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(new MockHttpServletRequest("POST", "/"), response); assertEquals("Wrong status code", MockHttpServletResponse.SC_CREATED, response.getStatus()); assertEquals("Wrong number of headers", 1, response.getHeaderNames().size()); assertEquals("Wrong value for 'location' header", "/test/items/123", response.getHeader("location")); assertEquals("Expected an empty content", 0, response.getContentLength()); }
@Test public void modelAndViewWithStatus() throws Exception { initServletWithControllers(ModelAndViewController.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/path"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals(422, response.getStatus()); assertEquals("view", response.getForwardedUrl()); }
@Test public void dataClassBindingWithOptionalAndConversionError() throws Exception { initServletWithControllers(OptionalDataClassController.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/bind"); request.addParameter("param1", "value1"); request.addParameter("param2", "x"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals("value1-x-null", response.getContentAsString()); }
@Test public void localeChangeInterceptor2() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(getServletContext(), "GET", "/locale.do"); request.addPreferredLocale(Locale.GERMAN); request.addUserRole("role2"); request.addParameter("locale", "en"); request.addParameter("locale2", "en_CA"); MockHttpServletResponse response = new MockHttpServletResponse(); complexDispatcherServlet.service(request, response); assertTrue("Not forwarded", response.getForwardedUrl() == null); }
@Test public void responseStatus() throws Exception { initServletWithControllers(ResponseStatusController.class); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/something"); MockHttpServletResponse response = new MockHttpServletResponse(); getServlet().service(request, response); assertEquals("something", response.getContentAsString()); assertEquals(201, response.getStatus()); assertEquals("It's alive!", response.getErrorMessage()); }
@Test public void simpleMappingExceptionResolverWithSpecificHandler1() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(getServletContext(), "GET", "/locale.do"); request.addPreferredLocale(Locale.CANADA); request.addUserRole("role1"); request.addParameter("access", "yes"); MockHttpServletResponse response = new MockHttpServletResponse(); complexDispatcherServlet.service(request, response); assertEquals(200, response.getStatus()); assertEquals("forwarded to failed", "failed2.jsp", response.getForwardedUrl()); assertTrue("Exception exposed", request.getAttribute("exception") instanceof IllegalAccessException); }