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:
... 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:
- 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.
If you’d like to know more about best practices for REST Assured and acceptance testing of REST APIs please subscribe to this mailing list for more information on my upcoming guide “Testing REST APIs with REST Assured“: