Rest-assured. How to check if not empty array is returned?

JustAC0der picture JustAC0der · Jan 20, 2015 · Viewed 12.7k times · Source

I have the following code which should test my RESTful API:

given().baseUri("http://...").get("/categories/all")
    .then()
    .body(
        "results",  not(empty())
    );

The API returns the following response:

{
    "error": {
        "type": "NotFoundException"
    }
}

And I want the test to fail for such response. But the test passes.

How can I modify the test to make it fail? It should only pass if the API returns an object which contains a not-empty array in the "results" key. It should fail when the "results" key does not exists, contains empty array or when it contains something that is not an array.

Answer

JustAC0der picture JustAC0der · Jan 20, 2015

I came up with the following solution:

given().baseUri("http://...").get("/categories/all")
    .then()
    .body(
        "results", hasSize(greaterThan(0))
    );

It fails if "results" is an empty array or not an array. It passes if "results" is a not-empty array. It reports an error in a readable way, e.g.:

Expected: a collection with size a value greater than <0>
Actual: null