Testing code which calls APIs often involves handling various HTTP status codes from an endpoint.
When calling an external service, it may be difficult to trigger specific HTTP status codes for errors to test out code paths triggered only by those status codes being returned.
We can call the service httpstat.us with the desired response code in the URL path to get any arbitrary HTTP status code returned.
For example, using cURL:
$ curl -v http://httpstat.us/503
The result is:
> GET /503 HTTP/1.1 > Host: httpstat.us > User-Agent: curl/7.54.0 > Accept: */* > < HTTP/1.1 503 Service Unavailable ...
Less common success status codes can be simulated as well:
$ curl -v http://httpstat.us/204
> GET /204 HTTP/1.1 > Host: httpstat.us > User-Agent: curl/7.54.0 > Accept: */* > < HTTP/1.1 204 No Content ...
In a config file, we can use httpstat.us URLs instead of our actual dependencies to trigger error cases for tests.
See the full feature list of the HTTP Status service: