How can I make sure that my response, let's say it is in JSON, either contains or does not contain a specific field?
when()
.get("/person/12345")
.then()
.body("surname", isPresent()) // Doesn't work...
.body("age", isNotPresent()); // ...But that's the idea.
I'm looking for a way to assert whether my JSON will contain or not the fields age and surname.
We can verify the JSON response body using Assertions in Rest Assured. This is done with the help of the Hamcrest Assertion. It uses the Matcher class for Assertion. We shall send a GET request via Postman on a mock API, observe the Response.
We can parse JSON Response with Rest Assured. To parse a JSON body, we shall use the JSONPath class and utilize the methods of this class to obtain the value of a specific attribute. We shall first send a GET request via Postman on a mock API URL and observe the Response body.
You can use the Hamcrest matcher hasKey() (from org.hamcrest.Matchers
class) on JSON strings as well.
when()
.get("/person/12345")
.then()
.body("$", hasKey("surname"))
.body("$", not(hasKey("age")));
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