Why WireMock says that the Request not matches? Spring cloud contract
18,399
Solution 1
It turned out to be a missing / at the end of the URL in the contract/stub
Solution 2
Not directly related to the question but for all who came here from Google:
In my case I was in the wrong scenario state.
More about scenario states here: http://wiremock.org/docs/stateful-behaviour/
Author by
Rocks360
Backend Programmer and working on my mobile Game with Unity3d in my free time. I also on new technologies like docker, continues delivery pipelines and microservices.
Updated on June 08, 2022Comments
-
Rocks360 about 2 years
Wiremock logs that the following request not matches:
WireMock : Request was not matched: { "url" : "/api/accounts?username=defaultuser", "absoluteUrl" : "http://localhost:11651/api/accounts?username=defaultuser", "method" : "GET", "clientIp" : "127.0.0.1", "headers" : { "authorization" : "bearer test123", "accept" : "application/json, application/*+json", "user-agent" : "Java/1.8.0_121", "host" : "localhost:11651", "connection" : "keep-alive" }, "cookies" : { }, "browserProxyRequest" : false, "loggedDate" : 1500711718016, "bodyAsBase64" : "", "body" : "", "loggedDateString" : "2017-07-22T08:21:58Z" } Closest match: { "urlPath" : "/api/accounts", "method" : "GET", "headers" : { "authorization" : { "matches" : "^bearer" }, "accept" : { "equalTo" : "application/json, application/*+json" }, "user-agent" : { "equalTo" : "Java/1.8.0_121" }, "host" : { "matches" : "^localhost:[0-9]{5}" }, "connection" : { "equalTo" : "keep-alive" } }, "queryParameters" : { "username" : { "matches" : "^[a-zA-Z0-9]*$" } } }
Is the problem because of the difference of url and urlPath? I also tried to specify absoluteUrl in the Contract. but it is ignored. I guess because it is not defined in Contract DSL.
The request side of the contract looks like this:
request{ method 'GET' url('/api/accounts'){ queryParameters { parameter('username', $(consumer(regex('^[a-zA-Z0-9]*$')), producer('defaultuser'))) } } headers { header('authorization', $(consumer(regex('^bearer')), producer(execute('authClientBearer()')))) header('accept', $(consumer('application/json, application/*+json'))) header('user-agent', $(consumer('Java/1.8.0_121'))) header('host', $(consumer(regex('^localhost:[0-9]{5}')))) header('connection', $(consumer('keep-alive'))) } }