From 4af5229a2c91cf177345ba0361c0d96bb497be7d Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Tue, 26 Mar 2019 18:27:11 +0100 Subject: [PATCH] Verify that CssLinkResourceTransformer handles empty url() links This commit introduces a test that verifies that CssLinkResourceTransformer properly handles empty url() functions in CSS files. See gh-22602 --- .../CssLinkResourceTransformerTests.java | 25 ++++++++++++++++--- .../resource/test/empty_url_function.css | 3 +++ 2 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 spring-webmvc/src/test/resources/org/springframework/web/servlet/resource/test/empty_url_function.css diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/CssLinkResourceTransformerTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/CssLinkResourceTransformerTests.java index 9ae03f64319..7c1a42d8193 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/CssLinkResourceTransformerTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/CssLinkResourceTransformerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2019 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. @@ -32,10 +32,10 @@ import org.springframework.util.StringUtils; import static org.junit.Assert.*; /** - * Unit tests for - * {@link org.springframework.web.servlet.resource.CssLinkResourceTransformer}. + * Unit tests for {@link CssLinkResourceTransformer}. * * @author Rossen Stoyanchev + * @author Sam Brannen * @since 4.1 */ public class CssLinkResourceTransformerTests { @@ -120,4 +120,23 @@ public class CssLinkResourceTransformerTests { assertSame(expected, actual); } + @Test // https://github.com/spring-projects/spring-framework/issues/22602 + public void transformEmptyUrlFunction() throws Exception { + this.request = new MockHttpServletRequest("GET", "/static/empty_url_function.css"); + Resource css = getResource("empty_url_function.css"); + String expected = + ".fooStyle {\n" + + "\tbackground: transparent url() no-repeat left top;\n" + + "}"; + + TransformedResource actual = (TransformedResource) this.transformerChain.transform(this.request, css); + String result = new String(actual.getByteArray(), "UTF-8"); + result = StringUtils.deleteAny(result, "\r"); + assertEquals(expected, result); + } + + private Resource getResource(String filePath) { + return new ClassPathResource("test/" + filePath, getClass()); + } + } diff --git a/spring-webmvc/src/test/resources/org/springframework/web/servlet/resource/test/empty_url_function.css b/spring-webmvc/src/test/resources/org/springframework/web/servlet/resource/test/empty_url_function.css new file mode 100644 index 00000000000..52a92ab2d47 --- /dev/null +++ b/spring-webmvc/src/test/resources/org/springframework/web/servlet/resource/test/empty_url_function.css @@ -0,0 +1,3 @@ +.fooStyle { + background: transparent url() no-repeat left top; +} \ No newline at end of file