From f2f84bfa7aaf822894bb20fa4699ddf5179b8629 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 5 Nov 2020 00:04:33 +0100 Subject: [PATCH] Polishing --- .../web/util/UriComponentsBuilderTests.java | 15 ++-- .../web/util/UriComponentsTests.java | 81 ++++++++++--------- .../web/util/UriTemplateTests.java | 26 +++--- 3 files changed, 60 insertions(+), 62 deletions(-) diff --git a/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java b/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java index fcb71bf37c..aff0593752 100644 --- a/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java +++ b/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java @@ -55,8 +55,8 @@ class UriComponentsBuilderTests { void plain() throws URISyntaxException { UriComponentsBuilder builder = UriComponentsBuilder.newInstance(); UriComponents result = builder.scheme("https").host("example.com") - .path("foo").queryParam("bar").fragment("baz") - .build(); + .path("foo").queryParam("bar").fragment("baz").build(); + assertThat(result.getScheme()).isEqualTo("https"); assertThat(result.getHost()).isEqualTo("example.com"); assertThat(result.getPath()).isEqualTo("foo"); @@ -93,10 +93,10 @@ class UriComponentsBuilderTests { @Test void fromPath() throws URISyntaxException { UriComponents result = UriComponentsBuilder.fromPath("foo").queryParam("bar").fragment("baz").build(); + assertThat(result.getPath()).isEqualTo("foo"); assertThat(result.getQuery()).isEqualTo("bar"); assertThat(result.getFragment()).isEqualTo("baz"); - assertThat(result.toUriString()).as("Invalid result URI String").isEqualTo("foo?bar#baz"); URI expected = new URI("foo?bar#baz"); @@ -113,12 +113,12 @@ class UriComponentsBuilderTests { void fromHierarchicalUri() throws URISyntaxException { URI uri = new URI("https://example.com/foo?bar#baz"); UriComponents result = UriComponentsBuilder.fromUri(uri).build(); + assertThat(result.getScheme()).isEqualTo("https"); assertThat(result.getHost()).isEqualTo("example.com"); assertThat(result.getPath()).isEqualTo("/foo"); assertThat(result.getQuery()).isEqualTo("bar"); assertThat(result.getFragment()).isEqualTo("baz"); - assertThat(result.toUri()).as("Invalid result URI").isEqualTo(uri); } @@ -126,10 +126,10 @@ class UriComponentsBuilderTests { void fromOpaqueUri() throws URISyntaxException { URI uri = new URI("mailto:foo@bar.com#baz"); UriComponents result = UriComponentsBuilder.fromUri(uri).build(); + assertThat(result.getScheme()).isEqualTo("mailto"); assertThat(result.getSchemeSpecificPart()).isEqualTo("foo@bar.com"); assertThat(result.getFragment()).isEqualTo("baz"); - assertThat(result.toUri()).as("Invalid result URI").isEqualTo(uri); } @@ -1195,14 +1195,15 @@ class UriComponentsBuilderTests { assertThat(uri).isEqualTo("http://localhost:8081/{path}?sort={sort}&sort=another_value"); } - @Test // SPR-17630 + @Test // SPR-17630 void toUriStringWithCurlyBraces() { assertThat(UriComponentsBuilder.fromUriString("/path?q={asa}asa").toUriString()).isEqualTo("/path?q=%7Basa%7Dasa"); } - @Test + @Test // gh-26012 void verifyDoubleSlashReplacedWithSingleOne() { String path = UriComponentsBuilder.fromPath("/home/").path("/path").build().getPath(); assertThat(path).isEqualTo("/home/path"); } + } diff --git a/spring-web/src/test/java/org/springframework/web/util/UriComponentsTests.java b/spring-web/src/test/java/org/springframework/web/util/UriComponentsTests.java index a0578029ba..f093609427 100644 --- a/spring-web/src/test/java/org/springframework/web/util/UriComponentsTests.java +++ b/spring-web/src/test/java/org/springframework/web/util/UriComponentsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 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. @@ -43,7 +43,6 @@ public class UriComponentsTests { @Test public void expandAndEncode() { - UriComponents uri = UriComponentsBuilder .fromPath("/hotel list/{city} specials").queryParam("q", "{value}").build() .expand("Z\u00fcrich", "a+b").encode(); @@ -53,7 +52,6 @@ public class UriComponentsTests { @Test public void encodeAndExpand() { - UriComponents uri = UriComponentsBuilder .fromPath("/hotel list/{city} specials").queryParam("q", "{value}").encode().build() .expand("Z\u00fcrich", "a+b"); @@ -63,16 +61,14 @@ public class UriComponentsTests { @Test public void encodeAndExpandPartially() { - UriComponents uri = UriComponentsBuilder .fromPath("/hotel list/{city} specials").queryParam("q", "{value}").encode() - .uriVariables(Collections.singletonMap("city", "Z\u00fcrich")) - .build(); + .uriVariables(Collections.singletonMap("city", "Z\u00fcrich")).build(); assertThat(uri.expand("a+b").toString()).isEqualTo("/hotel%20list/Z%C3%BCrich%20specials?q=a%2Bb"); } - @Test // SPR-17168 + @Test // SPR-17168 public void encodeAndExpandWithDollarSign() { UriComponents uri = UriComponentsBuilder.fromPath("/path").queryParam("q", "{value}").encode().build(); assertThat(uri.expand("JavaClass$1.class").toString()).isEqualTo("/path?q=JavaClass%241.class"); @@ -80,71 +76,71 @@ public class UriComponentsTests { @Test public void toUriEncoded() throws URISyntaxException { - UriComponents uriComponents = UriComponentsBuilder.fromUriString( - "https://example.com/hotel list/Z\u00fcrich").build(); - assertThat(uriComponents.encode().toUri()).isEqualTo(new URI("https://example.com/hotel%20list/Z%C3%BCrich")); + UriComponents uri = UriComponentsBuilder.fromUriString("https://example.com/hotel list/Z\u00fcrich").build(); + assertThat(uri.encode().toUri()).isEqualTo(new URI("https://example.com/hotel%20list/Z%C3%BCrich")); } @Test public void toUriNotEncoded() throws URISyntaxException { - UriComponents uriComponents = UriComponentsBuilder.fromUriString( - "https://example.com/hotel list/Z\u00fcrich").build(); - assertThat(uriComponents.toUri()).isEqualTo(new URI("https://example.com/hotel%20list/Z\u00fcrich")); + UriComponents uri = UriComponentsBuilder.fromUriString("https://example.com/hotel list/Z\u00fcrich").build(); + assertThat(uri.toUri()).isEqualTo(new URI("https://example.com/hotel%20list/Z\u00fcrich")); } @Test public void toUriAlreadyEncoded() throws URISyntaxException { - UriComponents uriComponents = UriComponentsBuilder.fromUriString( - "https://example.com/hotel%20list/Z%C3%BCrich").build(true); - UriComponents encoded = uriComponents.encode(); - assertThat(encoded.toUri()).isEqualTo(new URI("https://example.com/hotel%20list/Z%C3%BCrich")); + UriComponents uri = UriComponentsBuilder.fromUriString("https://example.com/hotel%20list/Z%C3%BCrich").build(true); + assertThat(uri.encode().toUri()).isEqualTo(new URI("https://example.com/hotel%20list/Z%C3%BCrich")); } @Test public void toUriWithIpv6HostAlreadyEncoded() throws URISyntaxException { - UriComponents uriComponents = UriComponentsBuilder.fromUriString( + UriComponents uri = UriComponentsBuilder.fromUriString( "http://[1abc:2abc:3abc::5ABC:6abc]:8080/hotel%20list/Z%C3%BCrich").build(true); - UriComponents encoded = uriComponents.encode(); - assertThat(encoded.toUri()).isEqualTo(new URI("http://[1abc:2abc:3abc::5ABC:6abc]:8080/hotel%20list/Z%C3%BCrich")); + + assertThat(uri.encode().toUri()).isEqualTo( + new URI("http://[1abc:2abc:3abc::5ABC:6abc]:8080/hotel%20list/Z%C3%BCrich")); } @Test public void expand() { - UriComponents uriComponents = UriComponentsBuilder.fromUriString( - "https://example.com").path("/{foo} {bar}").build(); - uriComponents = uriComponents.expand("1 2", "3 4"); - assertThat(uriComponents.getPath()).isEqualTo("/1 2 3 4"); - assertThat(uriComponents.toUriString()).isEqualTo("https://example.com/1 2 3 4"); + UriComponents uri = UriComponentsBuilder.fromUriString("https://example.com").path("/{foo} {bar}").build(); + uri = uri.expand("1 2", "3 4"); + + assertThat(uri.getPath()).isEqualTo("/1 2 3 4"); + assertThat(uri.toUriString()).isEqualTo("https://example.com/1 2 3 4"); } - @Test // SPR-13311 + @Test // SPR-13311 public void expandWithRegexVar() { String template = "/myurl/{name:[a-z]{1,5}}/show"; - UriComponents uriComponents = UriComponentsBuilder.fromUriString(template).build(); - uriComponents = uriComponents.expand(Collections.singletonMap("name", "test")); - assertThat(uriComponents.getPath()).isEqualTo("/myurl/test/show"); + UriComponents uri = UriComponentsBuilder.fromUriString(template).build(); + uri = uri.expand(Collections.singletonMap("name", "test")); + + assertThat(uri.getPath()).isEqualTo("/myurl/test/show"); } - @Test // SPR-17630 + @Test // SPR-17630 public void uirTemplateExpandWithMismatchedCurlyBraces() { - assertThat(UriComponentsBuilder.fromUriString("/myurl/?q={{{{").encode().build().toUriString()).isEqualTo("/myurl/?q=%7B%7B%7B%7B"); + UriComponents uri = UriComponentsBuilder.fromUriString("/myurl/?q={{{{").encode().build(); + assertThat(uri.toUriString()).isEqualTo("/myurl/?q=%7B%7B%7B%7B"); } - @Test // gh-22447 + @Test // gh-22447 public void expandWithFragmentOrder() { - UriComponents uriComponents = UriComponentsBuilder + UriComponents uri = UriComponentsBuilder .fromUriString("https://{host}/{path}#{fragment}").build() .expand("example.com", "foo", "bar"); - assertThat(uriComponents.toUriString()).isEqualTo("https://example.com/foo#bar"); + assertThat(uri.toUriString()).isEqualTo("https://example.com/foo#bar"); } - @Test // SPR-12123 + @Test // SPR-12123 public void port() { UriComponents uri1 = fromUriString("https://example.com:8080/bar").build(); UriComponents uri2 = fromUriString("https://example.com/bar").port(8080).build(); UriComponents uri3 = fromUriString("https://example.com/bar").port("{port}").build().expand(8080); UriComponents uri4 = fromUriString("https://example.com/bar").port("808{digit}").build().expand(0); + assertThat(uri1.getPort()).isEqualTo(8080); assertThat(uri1.toUriString()).isEqualTo("https://example.com:8080/bar"); assertThat(uri2.getPort()).isEqualTo(8080); @@ -175,20 +171,22 @@ public class UriComponentsTests { @Test public void normalize() { - UriComponents uriComponents = UriComponentsBuilder.fromUriString("https://example.com/foo/../bar").build(); - assertThat(uriComponents.normalize().toString()).isEqualTo("https://example.com/bar"); + UriComponents uri = UriComponentsBuilder.fromUriString("https://example.com/foo/../bar").build(); + assertThat(uri.normalize().toString()).isEqualTo("https://example.com/bar"); } @Test public void serializable() throws Exception { - UriComponents uriComponents = UriComponentsBuilder.fromUriString( + UriComponents uri = UriComponentsBuilder.fromUriString( "https://example.com").path("/{foo}").query("bar={baz}").build(); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); - oos.writeObject(uriComponents); + oos.writeObject(uri); ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray())); UriComponents readObject = (UriComponents) ois.readObject(); - assertThat(uriComponents.toString()).isEqualTo(readObject.toString()); + + assertThat(uri.toString()).isEqualTo(readObject.toString()); } @Test @@ -197,6 +195,7 @@ public class UriComponentsTests { UriComponentsBuilder targetBuilder = UriComponentsBuilder.newInstance(); source.copyToUriComponentsBuilder(targetBuilder); UriComponents result = targetBuilder.build().encode(); + assertThat(result.getPath()).isEqualTo("/foo/bar/ba%2Fz"); assertThat(result.getPathSegments()).isEqualTo(Arrays.asList("foo", "bar", "ba%2Fz")); } @@ -207,6 +206,7 @@ public class UriComponentsTests { UriComponents uric1 = UriComponentsBuilder.fromUriString(url).path("/{foo}").query("bar={baz}").build(); UriComponents uric2 = UriComponentsBuilder.fromUriString(url).path("/{foo}").query("bar={baz}").build(); UriComponents uric3 = UriComponentsBuilder.fromUriString(url).path("/{foo}").query("bin={baz}").build(); + assertThat(uric1).isInstanceOf(HierarchicalUriComponents.class); assertThat(uric1).isEqualTo(uric1); assertThat(uric1).isEqualTo(uric2); @@ -219,6 +219,7 @@ public class UriComponentsTests { UriComponents uric1 = UriComponentsBuilder.fromUriString(baseUrl + "/foo/bar").build(); UriComponents uric2 = UriComponentsBuilder.fromUriString(baseUrl + "/foo/bar").build(); UriComponents uric3 = UriComponentsBuilder.fromUriString(baseUrl + "/foo/bin").build(); + assertThat(uric1).isInstanceOf(OpaqueUriComponents.class); assertThat(uric1).isEqualTo(uric1); assertThat(uric1).isEqualTo(uric2); diff --git a/spring-web/src/test/java/org/springframework/web/util/UriTemplateTests.java b/spring-web/src/test/java/org/springframework/web/util/UriTemplateTests.java index d1fd6a19e9..6405e5cabf 100644 --- a/spring-web/src/test/java/org/springframework/web/util/UriTemplateTests.java +++ b/spring-web/src/test/java/org/springframework/web/util/UriTemplateTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 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. @@ -49,9 +49,7 @@ public class UriTemplateTests { assertThat(result).as("Invalid expanded template").isEqualTo(new URI("/hotels/1/bookings/42")); } - // SPR-9712 - - @Test + @Test // SPR-9712 public void expandVarArgsWithArrayValue() throws Exception { UriTemplate template = new UriTemplate("/sum?numbers={numbers}"); URI result = template.expand(new int[] {1, 2, 3}); @@ -61,8 +59,7 @@ public class UriTemplateTests { @Test public void expandVarArgsNotEnoughVariables() throws Exception { UriTemplate template = new UriTemplate("/hotels/{hotel}/bookings/{booking}"); - assertThatIllegalArgumentException().isThrownBy(() -> - template.expand("1")); + assertThatIllegalArgumentException().isThrownBy(() -> template.expand("1")); } @Test @@ -156,7 +153,7 @@ public class UriTemplateTests { assertThat(result).as("Invalid match").isEqualTo(expected); } - @Test // SPR-13627 + @Test // SPR-13627 public void matchCustomRegexWithNestedCurlyBraces() throws Exception { UriTemplate template = new UriTemplate("/site.{domain:co.[a-z]{2}}"); Map result = template.match("/site.co.eu"); @@ -181,8 +178,8 @@ public class UriTemplateTests { assertThat(result).as("Invalid match").isEqualTo(expected); } - @Test // SPR-16169 - public void matchWithMultipleSegmentsAtTheEnd() { + @Test // SPR-16169 + public void matchWithMultipleSegmentsAtTheEnd() throws Exception { UriTemplate template = new UriTemplate("/account/{accountId}"); assertThat(template.matches("/account/15/alias/5")).isFalse(); } @@ -202,21 +199,20 @@ public class UriTemplateTests { assertThat(template.matches("/search?query=foo#bar")).isTrue(); } - @Test // SPR-13705 - public void matchesWithSlashAtTheEnd() { - UriTemplate uriTemplate = new UriTemplate("/test/"); - assertThat(uriTemplate.matches("/test/")).isTrue(); + @Test // SPR-13705 + public void matchesWithSlashAtTheEnd() throws Exception { + assertThat(new UriTemplate("/test/").matches("/test/")).isTrue(); } @Test - public void expandWithDollar() { + public void expandWithDollar() throws Exception { UriTemplate template = new UriTemplate("/{a}"); URI uri = template.expand("$replacement"); assertThat(uri.toString()).isEqualTo("/$replacement"); } @Test - public void expandWithAtSign() { + public void expandWithAtSign() throws Exception { UriTemplate template = new UriTemplate("http://localhost/query={query}"); URI uri = template.expand("foo@bar"); assertThat(uri.toString()).isEqualTo("http://localhost/query=foo@bar");