One of the issues contained an article about REST-assured1.
I have been using SoapUI5 to test my REST services, and that works fine. It's a nice graphical userinterface for me to fiddle with parameters and urls and HTTP requests and even write tests.
I am aware that it is probably possible to integrate SoapUI into my Build Pipeline, but I was really looking for something different. Something more in the line of programming, which is of course my forte. Something I could use in my unit-tests.
REST-assured was exactly what I needed and let me tell you, it's great!
Usage
I will provide an example of how I use it.As you can see, REST-assured is a very nice DSL (Domain Specific Language) and reads easily.
Some explanation of the above:
- log().ifValidationFails()
- I wish to log stuff, if the validation/test fails, so I can find out what is wrong. The output looks like
- param(name, value)
- for setting parameters at the end of the url, like ?stuff=value
- pathParam(tag, value)
- replaces {tag} in your url with the values. Convenient!
- request methods
- in the example above, we are using the PUT HTTP Request.
We can extract the response, as is done above, to verify for example the json payload (if there is one) or get cookie values.
In the above example it is essential for the followup calls that we get the JSESSIONID cookie out of the request.
In subsequent REST calls, it is obvious that we need to send along the same JSESSIONID cookie.
See for more information reference [4].
Some notes
I tried to send parameters, but a POST defaults to FORM parameters in the body, but I already have a BODY. But using "queryParam" instead of "param" fixes this problem.I do enjoy using the "prettyPrint" method on a Response, to properly format a JSON body and dump it to standard output and see what I get. It's nice.
Getting some values out of your JSON formatted response body does require some serious work, though. Needs more research.
I am not entirely sure, I do not enjoy using http status codes like 200 or 204. I prefer something more readable like "NO_CONTENT", but I suppose I can deal with it myself. No biggy.
Update 14/05/2017: I'm also slightly sorry to find out that rest-assured includes Hamcrest. I prefer AssertJ at the moment myself.
Postscriptum
The article in Java Magazine also mentioned WireMock3.Though I do not use it, it seems excellent for testing the other side of the communications, if you need to test a client that communicates with a server via rest calls.
References
- [0] NLJUG
- http://www.nljug.org/
- [1] REST-assured
- Teije van Sloten Java Magazine | 01 2017
- [2] GitHub - Java DSL for easy testing of REST services
- https://github.com/rest-assured/rest-assured
- [3] WireMock
- http://wiremock.org/
- [4] GitHub - RestAssured Usage
- https://github.com/rest-assured/rest-assured/wiki/usage
- [5] SoapUI
- https://www.soapui.org/
- Testing REST Endpoints Using REST Assured
- https://semaphoreci.com/community/tutorials/testing-rest-endpoints-using-rest-assured
- RFC2616 - HTTP status codes
- https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
No comments:
Post a Comment