Skip to content

Commit 5390b4e

Browse files
committed
parse uri with duplicate query keys
Signed-off-by: whl <[email protected]>
1 parent 0ae1fd2 commit 5390b4e

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java

+14
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,20 @@ void parseBuildAndExpandHierarchical(ParserType parserType) {
629629
assertThat(uri.toString()).isEqualTo("ws://example.org:7777/path?q=1#foo");
630630
}
631631

632+
@ParameterizedTest
633+
@EnumSource
634+
void parseBuildAndExpandHierarchicalWithDuplicateQueryKeys(ParserType parserType) {
635+
UriComponents result = UriComponentsBuilder.fromUriString("/?{pk1}={pv1}&{pk2}={pv2}", parserType)
636+
.buildAndExpand("k1", "v1", "k1", "v2");
637+
assertThat(result.getQuery()).isEqualTo("k1=v1&k1=v2");
638+
assertThat(result.getQueryParams().get("k1")).containsExactly("v1", "v2");
639+
640+
UriComponents result2 = UriComponentsBuilder.fromUriString("/?{pk1}={pv1}&{pk2}={pv2}", parserType)
641+
.buildAndExpand(Map.of("pk1", "k1", "pv1", "v1", "pk2", "k1", "pv2", "v2"));
642+
assertThat(result2.getQuery()).isEqualTo("k1=v1&k1=v2");
643+
assertThat(result.getQueryParams().get("k1")).containsExactly("v1", "v2");
644+
}
645+
632646
@ParameterizedTest
633647
@EnumSource
634648
void buildAndExpandOpaque(ParserType parserType) {

0 commit comments

Comments
 (0)