Saddam Hussain I H
Saddam Hussain I H

Reputation: 200

How to verify if all the items in 1 json is available from karate's response data

I have a JSON file which I am reading in Karate feature file which consists of IDs, something like below temp.json

{
  112354,
  221344,
  126789,
  122333
}

In my Karate feature file, I am calling an API that returns all the IDs available in the DB. The response of this is complex json arrays. To retrieve one ID from the response I have to do something like below

company[0].department[0].project[0].id

response json structure
{
  "company": [
    {
      "department": [
         {
           "project": [
             {
               "id": 567436
             },
             {
               "id": 123456
             }
            ]
         }
       ]
    }
   ]
}


now I want to match if all the IDs in temp.json are available in the json response I got from Karate by calling the API. It has to traverse through all the arrays to see if the IDs are available. Is there any way to accomplish this in Karate ?

Upvotes: 3

Views: 728

Answers (1)

Peter Thomas
Peter Thomas

Reputation: 58058

Quite likely you can achieve what you want in one line:

* def ids = [ 123, 234, 345 ]
* def response = [{ id: 123 }, { id: 234 }, { id: 345 }]
* match response..id == ids

So note how you can use .. in Json Path.

Please look at these other answers for more information:

https://stackoverflow.com/a/65036047/143475

https://stackoverflow.com/a/68363524/143475

Upvotes: 2

Related Questions