Testing Passport.js Authentication gated API routes with Mocha/Chai/Supertest
I faced frustration in the lack of good advice on Stackoverflow and on the Passport.js or the Supertest documentation regarding testing.
In my searching, this medium post came closest: https://email@example.com/testing-authenticated-requests-with-supertest-325ccf47c2bb
However, these are all callback based which caused bugs. I eventually promisified these functions to fit them within the modern
mocha testing framework.
These examples should be easy to copy and easy to use. Please send PR's if there are important edge cases you want to test.
Big picture insights
To test api routes with authentication, you need to have cookies corresponding to your session.
This cookie can be manually set in
supertest, or automatically included with
superagent. In this repo I demonstrate how to test authenticated APIs with both.
git clone https://github.com/sw-yx/AuthApiTesting.git cd AuthApiTesting npm install npm test
the important file is api.spec.js. go nuts!
Talk to me @swyx on twitter