Fix expansion of query param with same name

See gh-34783

Signed-off-by: whl <whlit.cola@gmail.com>
This commit is contained in:
whl
2025-04-20 13:53:47 +08:00
committed by rstoyanchev
parent 253f321e8b
commit 124582d910
2 changed files with 15 additions and 1 deletions

View File

@@ -629,6 +629,20 @@ class UriComponentsBuilderTests {
assertThat(uri.toString()).isEqualTo("ws://example.org:7777/path?q=1#foo");
}
@ParameterizedTest
@EnumSource
void parseBuildAndExpandHierarchicalWithDuplicateQueryKeys(ParserType parserType) {
UriComponents result = UriComponentsBuilder.fromUriString("/?{pk1}={pv1}&{pk2}={pv2}", parserType)
.buildAndExpand("k1", "v1", "k1", "v2");
assertThat(result.getQuery()).isEqualTo("k1=v1&k1=v2");
assertThat(result.getQueryParams().get("k1")).containsExactly("v1", "v2");
UriComponents result2 = UriComponentsBuilder.fromUriString("/?{pk1}={pv1}&{pk2}={pv2}", parserType)
.buildAndExpand(Map.of("pk1", "k1", "pv1", "v1", "pk2", "k1", "pv2", "v2"));
assertThat(result2.getQuery()).isEqualTo("k1=v1&k1=v2");
assertThat(result.getQueryParams().get("k1")).containsExactly("v1", "v2");
}
@ParameterizedTest
@EnumSource
void buildAndExpandOpaque(ParserType parserType) {