Step 3 - It ensures robustness too
Please make sure your are on step 3 in your terminal by typing:
bin/step 3
Testing the robustness against an non existent TODO
In todo-spec/todos/getOne.yml
we can find the specification of the GET /todos/{id}
endpoint.
Let's see if the API is robust (spoiler: it's not).
As with the examples
section, webspicy
supports a counterexamples
section. Let's add one:
counterexamples:
- description: |-
it fails with a 404 for non existent todo
params:
id: 9999
expected:
content_type: text/plain
status: 404
assert:
- match(/Not Found/)
And let's run webspicy (the ROBUST environment variable is used here to execute counterexamples only):
ROBUST=only webspicy --debug todo-spec/todos/getOne.yml
The test fails: the API returns an empty body with a 200 status code. You can check this by looking at the debug info that was displayed in your terminal:
~> GET http://127.0.0.1:3000/todos/9999
Req params: {
}
Req headers: {
}
.
Res status: 200 OK
Res headers: {
"X-Powered-By": "Express",
"Date": "Fri, 18 Dec 2020 09:34:08 GMT",
"Connection": "close",
"Content-Length": "0"
}
Res body:
Feel like fixing the API for us before you move on? Edit todo-api/src/index.js
.