提交 108ebe0f 编写于 作者: R Rossen Stoyanchev

Polish resource handling tests

上级 3dc6f113
......@@ -36,14 +36,16 @@ import org.springframework.core.io.Resource;
import org.springframework.mock.web.test.MockHttpServletRequest;
import org.springframework.util.FileCopyUtils;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* Unit tests for
* {@link org.springframework.web.servlet.resource.GzipResourceResolver}.
* Unit tests for {@link GzipResourceResolver}.
*
* @author Jeremy Grelle
* @author Rossen Stoyanchev
*/
public class GzipResourceResolverTests {
......@@ -53,28 +55,27 @@ public class GzipResourceResolverTests {
private Cache cache;
@BeforeClass
public static void createGzippedResources() throws IOException {
createGzFile("/js/foo.js");
createGzFile("foo-e36d2e05253c6c7085a91522ce43a0b4.css");
}
private static void createGzFile(String filePath) throws IOException {
Resource location = new ClassPathResource("test/", GzipResourceResolverTests.class);
Resource jsFile = new FileSystemResource(location.createRelative("/js/foo.js").getFile());
Resource gzJsFile = jsFile.createRelative("foo.js.gz");
Resource fingerPrintedFile = new FileSystemResource(location.createRelative("foo-e36d2e05253c6c7085a91522ce43a0b4.css").getFile());
Resource gzFingerPrintedFile = fingerPrintedFile.createRelative("foo-e36d2e05253c6c7085a91522ce43a0b4.css.gz");
if (gzJsFile.getFile().createNewFile()) {
GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(gzJsFile.getFile()));
FileCopyUtils.copy(jsFile.getInputStream(), out);
}
Resource fileResource = new FileSystemResource(location.createRelative(filePath).getFile());
Resource gzFileResource = location.createRelative(filePath + ".gz");
if (gzFingerPrintedFile.getFile().createNewFile()) {
GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(gzFingerPrintedFile.getFile()));
FileCopyUtils.copy(fingerPrintedFile.getInputStream(), out);
if (gzFileResource.getFile().createNewFile()) {
GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(gzFileResource.getFile()));
FileCopyUtils.copy(fileResource.getInputStream(), out);
}
assertTrue(gzJsFile.exists());
assertTrue(gzFingerPrintedFile.exists());
assertTrue(gzFileResource.exists());
}
@Before
public void setUp() {
this.cache = new ConcurrentMapCache("resourceCache");
......@@ -89,21 +90,23 @@ public class GzipResourceResolverTests {
resolvers.add(new GzipResourceResolver());
resolvers.add(versionResolver);
resolvers.add(new PathResourceResolver());
resolver = new DefaultResourceResolverChain(resolvers);
locations = new ArrayList<>();
locations.add(new ClassPathResource("test/", getClass()));
locations.add(new ClassPathResource("testalternatepath/", getClass()));
this.resolver = new DefaultResourceResolverChain(resolvers);
this.locations = new ArrayList<>();
this.locations.add(new ClassPathResource("test/", getClass()));
this.locations.add(new ClassPathResource("testalternatepath/", getClass()));
}
@Test
public void resolveGzippedFile() throws IOException {
MockHttpServletRequest request = new MockHttpServletRequest();
request.addHeader("Accept-Encoding", "gzip");
String file = "js/foo.js";
String gzFile = file+".gz";
Resource resource = new ClassPathResource("test/"+gzFile, getClass());
Resource resolved = resolver.resolveResource(request, file, locations);
Resource resolved = this.resolver.resolveResource(request, file, this.locations);
String gzFile = file + ".gz";
Resource resource = new ClassPathResource("test/"+gzFile, getClass());
assertEquals(resource.getDescription(), resolved.getDescription());
assertEquals(new ClassPathResource("test/" + file).getFilename(), resolved.getFilename());
assertTrue("Expected " + resolved + " to be of type " + EncodedResource.class,
......@@ -115,10 +118,10 @@ public class GzipResourceResolverTests {
MockHttpServletRequest request = new MockHttpServletRequest();
request.addHeader("Accept-Encoding", "gzip");
String file = "foo-e36d2e05253c6c7085a91522ce43a0b4.css";
String gzFile = file+".gz";
Resource resource = new ClassPathResource("test/"+gzFile, getClass());
Resource resolved = resolver.resolveResource(request, file, locations);
Resource resolved = this.resolver.resolveResource(request, file, this.locations);
String gzFile = file + ".gz";
Resource resource = new ClassPathResource("test/"+gzFile, getClass());
assertEquals(resource.getDescription(), resolved.getDescription());
assertEquals(new ClassPathResource("test/"+file).getFilename(), resolved.getFilename());
assertTrue("Expected " + resolved + " to be of type " + EncodedResource.class,
......@@ -130,40 +133,38 @@ public class GzipResourceResolverTests {
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/js/foo.js");
request.addHeader("Accept-Encoding", "gzip");
String file = "js/foo.js";
String gzFile = file+".gz";
Resource resource = new ClassPathResource("test/"+file, getClass());
Resource gzResource = new ClassPathResource("test/"+gzFile, getClass());
// resolved resource is now cached in CachingResourceResolver
Resource resolved = resolver.resolveResource(request, file, locations);
Resource resolved = this.resolver.resolveResource(request, file, this.locations);
String gzFile = file + ".gz";
Resource gzResource = new ClassPathResource("test/"+gzFile, getClass());
assertEquals(gzResource.getDescription(), resolved.getDescription());
assertEquals(new ClassPathResource("test/" + file).getFilename(), resolved.getFilename());
assertTrue("Expected " + resolved + " to be of type " + EncodedResource.class,
resolved instanceof EncodedResource);
// resolved resource is now cached in CachingResourceResolver
request = new MockHttpServletRequest("GET", "/js/foo.js");
resolved = resolver.resolveResource(request, file, locations);
resolved = this.resolver.resolveResource(request, file, this.locations);
Resource resource = new ClassPathResource("test/"+file, getClass());
assertEquals(resource.getDescription(), resolved.getDescription());
assertEquals(new ClassPathResource("test/" + file).getFilename(), resolved.getFilename());
assertFalse("Expected " + resolved + " to *not* be of type " + EncodedResource.class,
resolved instanceof EncodedResource);
}
// SPR-13149
@Test
@Test // SPR-13149
public void resolveWithNullRequest() throws IOException {
String file = "js/foo.js";
Resource resolved = this.resolver.resolveResource(null, file, this.locations);
String gzFile = file+".gz";
Resource gzResource = new ClassPathResource("test/"+gzFile, getClass());
// resolved resource is now cached in CachingResourceResolver
Resource resolved = resolver.resolveResource(null, file, locations);
assertEquals(gzResource.getDescription(), resolved.getDescription());
assertEquals(new ClassPathResource("test/" + file).getFilename(), resolved.getFilename());
assertTrue("Expected " + resolved + " to be of type " + EncodedResource.class,
resolved instanceof EncodedResource);
}
}
......@@ -27,7 +27,7 @@ import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.mock.web.test.MockHttpServletRequest;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
/**
* Unit tests for {@code ResourceTransformerSupport}.
......@@ -59,9 +59,9 @@ public class ResourceTransformerSupportTests {
this.request = new MockHttpServletRequest("GET", "");
}
protected ResourceUrlProvider createResourceUrlProvider(List<ResourceResolver> resolvers) {
private ResourceUrlProvider createResourceUrlProvider(List<ResourceResolver> resolvers) {
ResourceHttpRequestHandler handler = new ResourceHttpRequestHandler();
handler.setLocations(Arrays.asList(new ClassPathResource("test/", getClass())));
handler.setLocations(Collections.singletonList(new ClassPathResource("test/", getClass())));
handler.setResourceResolvers(resolvers);
ResourceUrlProvider urlProvider = new ResourceUrlProvider();
urlProvider.setHandlerMap(Collections.singletonMap("/resources/**", handler));
......@@ -80,20 +80,8 @@ public class ResourceTransformerSupportTests {
assertEquals("/context/servlet/resources/bar-11e16cf79faee7ac698c805cf28248d2.css", actual);
}
@Test
public void resolveUrlPathWithoutHandlerMappingAttribute() throws Exception {
this.request.setRequestURI("/context/servlet/resources/main.css");
this.request.setContextPath("/context");
this.request.setServletPath("/servlet");
String resourcePath = "/context/servlet/resources/bar.css";
Resource css = new ClassPathResource("test/main.css", getClass());
String actual = this.transformer.resolveUrlPath(resourcePath, this.request, css, this.transformerChain);
assertEquals("/context/servlet/resources/bar-11e16cf79faee7ac698c805cf28248d2.css", actual);
}
@Test
public void resolveUrlPathWithRelativePath() throws Exception {
this.request.setRequestURI("/context/servlet/resources/main.css");
Resource css = new ClassPathResource("test/main.css", getClass());
String actual = this.transformer.resolveUrlPath("bar.css", this.request, css, this.transformerChain);
assertEquals("bar-11e16cf79faee7ac698c805cf28248d2.css", actual);
......@@ -101,7 +89,6 @@ public class ResourceTransformerSupportTests {
@Test
public void resolveUrlPathWithRelativePathInParentDirectory() throws Exception {
this.request.setRequestURI("/context/servlet/resources/images/image.png");
Resource imagePng = new ClassPathResource("test/images/image.png", getClass());
String actual = this.transformer.resolveUrlPath("../bar.css", this.request, imagePng, this.transformerChain);
assertEquals("../bar-11e16cf79faee7ac698c805cf28248d2.css", actual);
......
......@@ -78,8 +78,9 @@ public class ResourceUrlProviderTests {
request.setContextPath("/");
request.setRequestURI("/");
String url = this.urlProvider.getForRequestUrl(request, "/resources/foo.css?foo=bar&url=http://example.org");
assertEquals("/resources/foo.css?foo=bar&url=http://example.org", url);
String url = "/resources/foo.css?foo=bar&url=http://example.org";
String resolvedUrl = this.urlProvider.getForRequestUrl(request, url);
assertEquals("/resources/foo.css?foo=bar&url=http://example.org", resolvedUrl);
}
@Test
......@@ -132,8 +133,9 @@ public class ResourceUrlProviderTests {
}
@Configuration @SuppressWarnings("unused")
public static class HandlerMappingConfiguration {
@Configuration
@SuppressWarnings({"unused", "WeakerAccess"})
static class HandlerMappingConfiguration {
@Bean
public SimpleUrlHandlerMapping simpleUrlHandlerMapping() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册