mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-10-06 15:09:34 +00:00
SPR-7116 work in progress. ResourceHttpRequestHandler is now functionally equivalent to the Spring JS ResourceServlet, with the exception of the resource concatenation feature (which will be deferred for reconsideration in 3.1).
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3510 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
+24
-34
@@ -3,18 +3,19 @@ package org.springframework.web.servlet.resources;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.MockHttpServletResponse;
|
||||
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
||||
import org.springframework.web.servlet.HandlerMapping;
|
||||
import org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException;
|
||||
import org.springframework.web.servlet.resources.ResourceHttpRequestHandler;
|
||||
|
||||
|
||||
public class ResourceHttpRequestHandlerTests {
|
||||
|
||||
@@ -22,7 +23,10 @@ public class ResourceHttpRequestHandlerTests {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
handler = new ResourceHttpRequestHandler(new ClassPathResource("test/", getClass()));
|
||||
List<Resource> resourcePaths = new ArrayList<Resource>();
|
||||
resourcePaths.add(new ClassPathResource("test/", getClass()));
|
||||
resourcePaths.add(new ClassPathResource("testalternatepath/", getClass()));
|
||||
handler = new ResourceHttpRequestHandler(resourcePaths);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -40,32 +44,21 @@ public class ResourceHttpRequestHandlerTests {
|
||||
assertEquals(response.getHeader("Last-Modified"), new ClassPathResource("test/foo.css", getClass()).getFile().lastModified());
|
||||
assertEquals("h1 { color:red; }", response.getContentAsString());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void getResourceBundle() throws Exception {
|
||||
public void getResourceFromAlternatePath() throws Exception {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, "/foo.css,bar.css");
|
||||
request.setAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, "/baz.css");
|
||||
request.setMethod("GET");
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
handler.handleRequest(request, response);
|
||||
assertEquals("text/css", response.getContentType());
|
||||
assertEquals(36, response.getContentLength());
|
||||
assertEquals(17, response.getContentLength());
|
||||
assertTrue(((Long)response.getHeader("Expires")) > System.currentTimeMillis() + (31556926 * 1000) - 10000);
|
||||
assertEquals("max-age=31556926", response.getHeader("Cache-Control"));
|
||||
assertTrue(response.containsHeader("Last-Modified"));
|
||||
assertEquals(response.getHeader("Last-Modified"), new ClassPathResource("test/bar.css", getClass()).getFile().lastModified());
|
||||
assertEquals("h1 { color:red; }h2 { color:white; }", response.getContentAsString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getResourceBundleDifferentTypes() throws Exception {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, "/foo.css,/js/bar.js");
|
||||
request.setMethod("GET");
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
handler.handleRequest(request, response);
|
||||
assertEquals("text/css", response.getContentType());
|
||||
assertEquals("h1 { color:red; }function foo() { console.log(\"hello bar\"); }", response.getContentAsString());
|
||||
assertEquals(response.getHeader("Last-Modified"), new ClassPathResource("testalternatepath/baz.css", getClass()).getFile().lastModified());
|
||||
assertEquals("h1 { color:red; }", response.getContentAsString());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -75,31 +68,28 @@ public class ResourceHttpRequestHandlerTests {
|
||||
request.setMethod("GET");
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
handler.handleRequest(request, response);
|
||||
System.out.println(response.getContentAsString());
|
||||
assertEquals("text/javascript", response.getContentType());
|
||||
assertEquals("function foo() { console.log(\"hello world\"); }", response.getContentAsString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getResourceBundleDifferentTypesIncludingDirectory() throws Exception {
|
||||
public void getResourceFromSubDirectoryOfAlternatePath() throws Exception {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, "/foo.css,/js,/js/foo.js");
|
||||
request.setAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, "/js/baz.js");
|
||||
request.setMethod("GET");
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
handler.handleRequest(request, response);
|
||||
assertEquals("text/css", response.getContentType());
|
||||
assertEquals("h1 { color:red; }function foo() { console.log(\"hello world\"); }", response.getContentAsString());
|
||||
assertEquals("text/javascript", response.getContentType());
|
||||
assertEquals("function foo() { console.log(\"hello world\"); }", response.getContentAsString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void notModified() throws Exception {
|
||||
public void lastModified() throws Exception {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, "/foo.css");
|
||||
request.addHeader("If-Modified-Since", new ClassPathResource("test/foo.css", getClass()).getFile().lastModified());
|
||||
request.setMethod("GET");
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
handler.handleRequest(request, response);
|
||||
assertEquals(HttpServletResponse.SC_NOT_MODIFIED, response.getStatus());
|
||||
long expected = new ClassPathResource("test/foo.css", getClass()).lastModified();
|
||||
long lastModified = handler.getLastModified(request);
|
||||
assertEquals(expected, lastModified);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -124,13 +114,14 @@ public class ResourceHttpRequestHandlerTests {
|
||||
assertEquals(404, response.getStatus());
|
||||
}
|
||||
|
||||
@Test(expected=NoSuchRequestHandlingMethodException.class)
|
||||
@Test
|
||||
public void missingResourcePath() throws Exception {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, "");
|
||||
request.setMethod("GET");
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
handler.handleRequest(request, response);
|
||||
assertEquals(404, response.getStatus());
|
||||
}
|
||||
|
||||
@Test(expected=IllegalStateException.class)
|
||||
@@ -159,5 +150,4 @@ public class ResourceHttpRequestHandlerTests {
|
||||
handler.handleRequest(request, response);
|
||||
assertEquals(404, response.getStatus());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
fail
|
||||
+1
@@ -0,0 +1 @@
|
||||
h1 { color:red; }
|
||||
+1
@@ -0,0 +1 @@
|
||||
fail
|
||||
+1
@@ -0,0 +1 @@
|
||||
fail
|
||||
+1
@@ -0,0 +1 @@
|
||||
function foo() { console.log("hello world"); }
|
||||
Reference in New Issue
Block a user