I am trying to create dynamic mocks using WireMock. I have a situation where if I specify URL like :
http://localhost:8089/api/account/[email protected]
then I should receive response like:
{
"account" : "[email protected]"
}
In brief, the path param is returned in the response body. I am able to make the request URL generic by using urlPathPattern
set to /api/account/([a-z]*)
however, I am not sure how should I capture [email protected]
and return this in the response using regular expressions.
In WireMock the regular expressions can be used to recognize the email format in the Request Matching. For the purpose of this example I used a very crude example. Your production implementation may require a more robust approach.
This request:
http://localhost:8181/api/account/[email protected]
Is matched by this rule:
{
"request": {
"method": "GET",
"urlPathPattern": "/api/account/([a-z]*@[a-z]*.[a-z]*)"
},
"response": {
"status": 200,
"jsonBody": {
"account": "{{request.path.[2]}}"
},
"transformers": ["response-template"],
"headers": {
"Content-Type": "application/json"
}
}
}
And returns this response:
{
"account": "[email protected]"
}
It makes use of a Response Template processing functionality in WireMock. The Request Model variables [{{request.path.[2]}}
] can be used to obtain sections from the request.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With