0
votes

I am writing test cases in RestAssured to test rest webservices using spring mvc.

rest response is

{
  "links": [
{
  "rel": "self",
  "href": "http://www.localhost.com:8080/v1/communities?offset=0&limit=10"
},
{
  "rel": "next",
  "href": "http://www.localhost.com:8080/v1/communities?offset=10&limit=10"
}
  ],
  "content": [
{
.....

and my test case is

    when().
        get("/communities").
    then().
        root("links").
        body("href", new ResponseAwareMatcher() {
            public Matcher<? extends Object> matcher(ResponseBody response) {
                return equalTo(new String[] {"http://www.localhost.com:8080/v1/communities?offset=0&limit=10", "http://www.localhost.com:8080/v1/communities?offset=10&limit=10"});
            }
        });

The test case fails with error

java.lang.AssertionError: 1 expectation failed.
JSON path links.href doesn't match.
Expected: ["http://www.localhost.com:8080/v1/communities?offset=0&limit=10", "http://www.localhost.com:8080/v1/communities?offset=10&limit=10"]
Actual: [http://www.localhost.com:8080/v1/communities?offset=0&limit=10, http://www.localhost.com:8080/v1/communities?offset=10&limit=10]

I even tried

equalTo("[http://www.localhost.com:8080/v1/communities?offset=0&limit=10, http://www.localhost.com:8080/v1/communities?offset=10&limit=10");

which would error out as

java.lang.AssertionError: 1 expectation failed.
JSON path links.href doesn't match.
Expected: [http://www.localhost.com:8080/v1/communities?offset=0&limit=10, http://www.localhost.com:8080/v1/communities?offset=10&limit=10]]
Actual: [http://www.localhost.com:8080/v1/communities?offset=0&limit=10, http://www.localhost.com:8080/v1/communities?offset=10&limit=10]

I am using Rest Assured 3.0.1. Thanks for your help in advance.

1

1 Answers

0
votes

Try this

assertEquals("http://www.localhost.com:8080/v1/communities?offset=0&limit=10", given().when().get("/communities").body().jsonPath().get("links[0].href"));