diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/GzipResourceResolverTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/GzipResourceResolverTests.java index 0ec204c053..a2fcec04aa 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/GzipResourceResolverTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/GzipResourceResolverTests.java @@ -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); } + } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceTransformerSupportTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceTransformerSupportTests.java index 977a70fade..2c78cbd8e9 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceTransformerSupportTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceTransformerSupportTests.java @@ -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 resolvers) { + private ResourceUrlProvider createResourceUrlProvider(List 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); diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceUrlProviderTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceUrlProviderTests.java index 85d4e669cf..b618099aea 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceUrlProviderTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceUrlProviderTests.java @@ -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() {