RESTful service testing can be unwieldy and difficult to get started with. Providing a REST API implies using a variety of technologies and techniques such as HTTP, JSON, authentication, various payload transfer mechanisms and content types.
This is where a tool that abstracts over these technical details and facilitates their application comes in handy. REST Assured is a high-level DSL for testing REST APIs. It draws upon behaviour-driven development (BDD) and hence makes for readable test descriptions.
A typical acceptance test with REST Assured looks like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 | ... given(). header("X-Auth-Token", token). contentType("application/json"). when(). get("/api/v1/users/1"). then(). statusCode(200). body("id", equalTo(1)). body("username", equalTo(username)); ... |
As you can see REST Assured allows you to define test processes in a BDD given-when-then fashion:
- Given existing conditions
- when a certain action is triggered
- then the outcome should be …
With REST Assured you can handle the various concepts that come with REST and HTTP in a consistent and straightforward manner:
- headers
- content types
- HTTP verbs (GET, POST, PUT, DELETE, PATCH)
- preflight requests (OPTIONS) for checking if a particular request is supported
- HTTP status codes
- various types of parameters: Form parameters, query parameters, path parameters
- request bodies
REST Assured is a useful tool that allows you to write functional tests and acceptance tests ensuring that the APIs exposed by your server comply with the protocol defined for them.