JJB
JJB

Reputation: 125

How to assert based on body item with Rest Assured with JSON response?

How can I assert my properties inside the "description" array using the rest assured .body() method.

Example:

 .body ("[0] .userType", equalTo (1)); // error 

Here is my current JSON data which I want to assert with:

{
"validSession": true,
"value": "xxx",
"description": [
    {
        "userType": 1,
        "userTypeDescription": "xxx",
        "uname": "xx",
        "distributorId": 1
    }
]}

Upvotes: 4

Views: 25241

Answers (4)

Sagar Tripathi
Sagar Tripathi

Reputation: 36

You can also use Hamcrest:

Response data = httpClientRequest.getApiCall(url);
data.then().assertThat().body("description.userTypeDescription[0]", Is.is("xxx"));

Upvotes: 0

dugsmith
dugsmith

Reputation: 89

Can you explain?

The reason you needed to reference description[0] in your test is that the element "description" in your JSON data is an array. You're using array syntax to declare your intent to read the first element of the array named "description".

Upvotes: 0

JJB
JJB

Reputation: 125

I dit it:

.body("validSession",is(true))
.body("description[0].userType", equalTo(1))
.body("description[0].userTypeDescription", containsString("xxx"))
.body("description[0].uname", containsString("xx"))
.body("description[0].distributorId", equalTo(1));

I tested and it worked. but I did not understand why it only worked by putting all elements of the array with index zero.

Can you explain?

Upvotes: 7

anurag0510
anurag0510

Reputation: 763

Try using the following code snippet :

.body("description[0]", hasItem(1))

Let me know if it was helpful.

Upvotes: 0

Related Questions