Matching data in JsonPath with wiremock

a_dzik picture a_dzik · Feb 23, 2015 · Viewed 17.9k times · Source

I'm trying to create mocks for my login procedure. I use POST method with a couple of fields and login object (with login, password, etc.) For that I'm using JsonPath. Code below:

{
"request": {
        "method": "POST",
        "url": "/login",
        "bodyPatterns" : [
                {"matchesJsonPath" : "$.method"},
                {"matchesJsonPath" : "$.params[?(@.clientVersion == "1")]"},
                {"matchesJsonPath" : "$.params.login"},
                {"matchesJsonPath" : "$.params.password"}
         ]
    },
    "response": {
            "status": 200,
            "bodyFileName": "login.json"
    }
}

I'm checking the clientVersion because it's similar to the examples.

My problem is, that with te given POST JSON:

{
    "method": "login",
    "params": {
        "clientVersion": "1",
        "login": "[email protected]",
        "password": "681819535da188b6ef2"
    }
}

I receive 404. However, when I change

{"matchesJsonPath" : "$.params[?(@.clientVersion == "1")]"},

to normal

{"matchesJsonPath" : "$.params.clientVersion"},

everything works just fine.

So - how to check inside wiremock, using matchesJsonPath if given field equals some value? How to apply it to the root field like method in my case? And while we're at it - I had similar problems with checking if the value is not null. I tried to apply regular expressions and such - no luck.

Answer

BM Marwa picture BM Marwa · Aug 14, 2018

It's working in my case :

wiremock:

"request": {
"urlPathPattern": "/api/authins-portail-rs/authins/inscription/infosperso",
"bodyPatterns" : [
  {"matchesJsonPath" : "$[?(@.nir == '123456789')]"},
  {"matchesJsonPath" : "$[?(@.nomPatronyme == 'aubert')]"},
  {"matchesJsonPath" : "$[?(@.prenoms == 'christian')]"},
  {"matchesJsonPath" : "$[?(@.dateNaissance == '01/09/1952')]"}

],
"method": "POST"

}

Json:

{
    "nir": "123456789",
    "nomPatronyme": "aubert",
    "prenoms": "christian",
    "dateNaissance": "01/09/1952"
}