/* * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.mock.web; import java.util.Map; import java.util.Set; import javax.servlet.FilterRegistration; import javax.servlet.RequestDispatcher; import javax.servlet.ServletRegistration; import org.junit.Test; import org.springframework.http.MediaType; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; /** * @author Juergen Hoeller * @author Chris Beams * @author Sam Brannen * @since 19.02.2006 */ public class MockServletContextTests { private final MockServletContext sc = new MockServletContext("org/springframework/mock"); @Test public void listFiles() { Set<String> paths = sc.getResourcePaths("/web"); assertNotNull(paths); assertTrue(paths.contains("/web/MockServletContextTests.class")); } @Test public void listSubdirectories() { Set<String> paths = sc.getResourcePaths("/"); assertNotNull(paths); assertTrue(paths.contains("/web/")); } @Test public void listNonDirectory() { Set<String> paths = sc.getResourcePaths("/web/MockServletContextTests.class"); assertNull(paths); } @Test public void listInvalidPath() { Set<String> paths = sc.getResourcePaths("/web/invalid"); assertNull(paths); } @Test public void registerContextAndGetContext() { MockServletContext sc2 = new MockServletContext(); sc.setContextPath("/"); sc.registerContext("/second", sc2); assertSame(sc, sc.getContext("/")); assertSame(sc2, sc.getContext("/second")); } @Test public void getMimeType() { assertEquals("text/html", sc.getMimeType("test.html")); assertEquals("image/gif", sc.getMimeType("test.gif")); assertNull(sc.getMimeType("test.foobar")); } /** * Introduced to dispel claims in a thread on Stack Overflow: * <a href="http://stackoverflow.com/questions/22986109/testing-spring-managed-servlet">Testing Spring managed servlet</a> */ @Test public void getMimeTypeWithCustomConfiguredType() { sc.addMimeType("enigma", new MediaType("text", "enigma")); assertEquals("text/enigma", sc.getMimeType("filename.enigma")); } @Test public void servletVersion() { assertEquals(3, sc.getMajorVersion()); assertEquals(1, sc.getMinorVersion()); assertEquals(3, sc.getEffectiveMajorVersion()); assertEquals(1, sc.getEffectiveMinorVersion()); sc.setMajorVersion(4); sc.setMinorVersion(0); sc.setEffectiveMajorVersion(4); sc.setEffectiveMinorVersion(0); assertEquals(4, sc.getMajorVersion()); assertEquals(0, sc.getMinorVersion()); assertEquals(4, sc.getEffectiveMajorVersion()); assertEquals(0, sc.getEffectiveMinorVersion()); } @Test public void registerAndUnregisterNamedDispatcher() throws Exception { final String name = "test-servlet"; final String url = "/test"; assertNull(sc.getNamedDispatcher(name)); sc.registerNamedDispatcher(name, new MockRequestDispatcher(url)); RequestDispatcher namedDispatcher = sc.getNamedDispatcher(name); assertNotNull(namedDispatcher); MockHttpServletResponse response = new MockHttpServletResponse(); namedDispatcher.forward(new MockHttpServletRequest(sc), response); assertEquals(url, response.getForwardedUrl()); sc.unregisterNamedDispatcher(name); assertNull(sc.getNamedDispatcher(name)); } @Test public void getNamedDispatcherForDefaultServlet() throws Exception { final String name = "default"; RequestDispatcher namedDispatcher = sc.getNamedDispatcher(name); assertNotNull(namedDispatcher); MockHttpServletResponse response = new MockHttpServletResponse(); namedDispatcher.forward(new MockHttpServletRequest(sc), response); assertEquals(name, response.getForwardedUrl()); } @Test public void setDefaultServletName() throws Exception { final String originalDefault = "default"; final String newDefault = "test"; assertNotNull(sc.getNamedDispatcher(originalDefault)); sc.setDefaultServletName(newDefault); assertEquals(newDefault, sc.getDefaultServletName()); assertNull(sc.getNamedDispatcher(originalDefault)); RequestDispatcher namedDispatcher = sc.getNamedDispatcher(newDefault); assertNotNull(namedDispatcher); MockHttpServletResponse response = new MockHttpServletResponse(); namedDispatcher.forward(new MockHttpServletRequest(sc), response); assertEquals(newDefault, response.getForwardedUrl()); } /** * @since 4.1.2 */ @Test public void getServletRegistration() { assertNull(sc.getServletRegistration("servlet")); } /** * @since 4.1.2 */ @Test public void getServletRegistrations() { Map<String, ? extends ServletRegistration> servletRegistrations = sc.getServletRegistrations(); assertNotNull(servletRegistrations); assertEquals(0, servletRegistrations.size()); } /** * @since 4.1.2 */ @Test public void getFilterRegistration() { assertNull(sc.getFilterRegistration("filter")); } /** * @since 4.1.2 */ @Test public void getFilterRegistrations() { Map<String, ? extends FilterRegistration> filterRegistrations = sc.getFilterRegistrations(); assertNotNull(filterRegistrations); assertEquals(0, filterRegistrations.size()); } }