Browse Source

Polish resource handling tests

pull/1158/head
Rossen Stoyanchev 9 years ago
parent
commit
108ebe0f2b
  1. 83
      spring-webmvc/src/test/java/org/springframework/web/servlet/resource/GzipResourceResolverTests.java
  2. 19
      spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceTransformerSupportTests.java
  3. 10
      spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceUrlProviderTests.java

83
spring-webmvc/src/test/java/org/springframework/web/servlet/resource/GzipResourceResolverTests.java

@ -36,14 +36,16 @@ import org.springframework.core.io.Resource; @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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);
}
}

19
spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceTransformerSupportTests.java

@ -27,7 +27,7 @@ import org.springframework.core.io.ClassPathResource; @@ -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 { @@ -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 { @@ -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 { @@ -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);

10
spring-webmvc/src/test/java/org/springframework/web/servlet/resource/ResourceUrlProviderTests.java

@ -78,8 +78,9 @@ public class ResourceUrlProviderTests { @@ -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 { @@ -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() {

Loading…
Cancel
Save