diff --git a/spring-cloud-gateway-server-mvc/src/test/java/org/springframework/cloud/gateway/server/mvc/filter/BeforeFilterFunctionsTests.java b/spring-cloud-gateway-server-mvc/src/test/java/org/springframework/cloud/gateway/server/mvc/filter/BeforeFilterFunctionsTests.java index db5a4b7a48..90dd5e1948 100644 --- a/spring-cloud-gateway-server-mvc/src/test/java/org/springframework/cloud/gateway/server/mvc/filter/BeforeFilterFunctionsTests.java +++ b/spring-cloud-gateway-server-mvc/src/test/java/org/springframework/cloud/gateway/server/mvc/filter/BeforeFilterFunctionsTests.java @@ -132,11 +132,27 @@ void rewriteEncodedRequestParameter() { .hasToString("http://localhost/path?quux=corge%2B&baz=qux&foo%5B%5D=replacement%5B%5D"); } + @Test + void rewritePlusSignRequestParameter() { + MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/path") + .param("foo", "bar") + .param("baz", "qux") + .buildRequest(null); + + ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList()); + + ServerRequest result = BeforeFilterFunctions.rewriteRequestParameter("foo", "replacement+").apply(request); + + assertThat(result.param("foo")).isPresent().hasValue("replacement+"); + assertThat(result.uri().toString()).hasToString("http://localhost/path?baz=qux&foo=replacement%2B"); + } + @Test void rewriteRequestParameterWithEncodedRemainParameters() { MockHttpServletRequest servletRequest = MockMvcRequestBuilders.get("http://localhost/path") .param("foo", "bar") .param("baz[]", "qux[]") + .param("quux", "corge+") .buildRequest(null); ServerRequest request = ServerRequest.create(servletRequest, Collections.emptyList()); @@ -144,7 +160,8 @@ void rewriteRequestParameterWithEncodedRemainParameters() { ServerRequest result = BeforeFilterFunctions.rewriteRequestParameter("foo", "replacement").apply(request); assertThat(result.param("foo")).isPresent().hasValue("replacement"); - assertThat(result.uri().toString()).hasToString("http://localhost/path?baz%5B%5D=qux%5B%5D&foo=replacement"); + assertThat(result.uri().toString()) + .hasToString("http://localhost/path?baz%5B%5D=qux%5B%5D&quux=corge%2B&foo=replacement"); } @Test