From d8579f55094a5fb8cd4e529d08c404f7aa560ee6 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 16 May 2022 09:41:30 +0200 Subject: [PATCH] #1722 - Original test case. --- .../server/mvc/WebMvcLinkBuilderUnitTest.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderUnitTest.java b/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderUnitTest.java index 3f45732e..6b1a4169 100644 --- a/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderUnitTest.java +++ b/src/test/java/org/springframework/hateoas/server/mvc/WebMvcLinkBuilderUnitTest.java @@ -20,6 +20,7 @@ import static org.mockito.Mockito.*; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*; import java.lang.reflect.Method; +import java.nio.charset.Charset; import java.time.OffsetDateTime; import java.time.ZoneId; import java.util.Arrays; @@ -61,6 +62,7 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.util.UriComponents; import org.springframework.web.util.UriComponentsBuilder; +import org.springframework.web.util.UriUtils; /** * Unit tests for {@link ControllerLinkBuilder}. @@ -721,6 +723,13 @@ class WebMvcLinkBuilderUnitTest extends TestUtils { }); } + @Test // #1722 + void toUriDoesNotDoubleEncodeRequestParameters() { + + assertThat(linkTo(methodOn(MyController.class).test("I+will:be+double+encoded")).toUri().toString()) + .endsWith(UriUtils.encode("I+will:be+double+encoded", Charset.defaultCharset())); + } + private static UriComponents toComponents(Link link) { return UriComponentsBuilder.fromUriString(link.expand().getHref()).build(); } @@ -918,4 +927,10 @@ class WebMvcLinkBuilderUnitTest extends TestUtils { } } + // #1722 + static class MyController { + HttpEntity test(@RequestParam("param") String param) { + return null; + } + } }