Skip to content

Commit 1c477b3

Browse files
committed
feat: Add option 'parametersMatchAnything' to SplitPathAndQueryParamsStubMappingTransformer
1 parent 237bdba commit 1c477b3

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

src/main/java/io/github/ghusta/wiremock/extension/SplitPathAndQueryParamsStubMappingTransformer.java

+21-7
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
1818
import static com.github.tomakehurst.wiremock.client.WireMock.havingExactly;
19+
import static com.github.tomakehurst.wiremock.client.WireMock.matching;
1920

2021
/**
2122
* Stub with query parameters split from request url.
@@ -26,6 +27,15 @@
2627
*/
2728
public class SplitPathAndQueryParamsStubMappingTransformer extends StubMappingTransformer {
2829

30+
private boolean parametersMatchAnything = false;
31+
32+
public SplitPathAndQueryParamsStubMappingTransformer() {
33+
}
34+
35+
public SplitPathAndQueryParamsStubMappingTransformer(boolean parametersMatchAnything) {
36+
this.parametersMatchAnything = parametersMatchAnything;
37+
}
38+
2939
@Override
3040
public StubMapping transform(StubMapping stubMapping, FileSource files, Parameters parameters) {
3141
String path = Urls.getPath(stubMapping.getRequest().getUrl());
@@ -36,14 +46,18 @@ public StubMapping transform(StubMapping stubMapping, FileSource files, Paramete
3646

3747
queryParameterMap.forEach((key, queryParameter) ->
3848
{
39-
if (queryParameter.isSingleValued()) {
40-
mappingBuilder.withQueryParam(key, equalTo(queryParameter.firstValue()));
49+
if (parametersMatchAnything) {
50+
mappingBuilder.withQueryParam(key, matching("^(.*)$"));
4151
} else {
42-
// https://wiremock.org/docs/request-matching/#matching-headerquery-parameter-containing-multiple-values
43-
MultiValuePattern havingExactly = havingExactly(queryParameter.values().stream()
44-
.map(WireMock::equalTo)
45-
.toArray(StringValuePattern[]::new));
46-
mappingBuilder.withQueryParam(key, havingExactly);
52+
if (queryParameter.isSingleValued()) {
53+
mappingBuilder.withQueryParam(key, equalTo(queryParameter.firstValue()));
54+
} else {
55+
// https://wiremock.org/docs/request-matching/#matching-headerquery-parameter-containing-multiple-values
56+
MultiValuePattern havingExactly = havingExactly(queryParameter.values().stream()
57+
.map(WireMock::equalTo)
58+
.toArray(StringValuePattern[]::new));
59+
mappingBuilder.withQueryParam(key, havingExactly);
60+
}
4761
}
4862
}
4963
);

0 commit comments

Comments
 (0)