Я передаю свой токен аутентификации через файл cookie только для HTTP в моем NestJS API.
Таким образом, при написании некоторых тестов E2E для моих конечных точек Auth у меня возникает проблема с файлами cookie, которые находятся не там, где я их ожидал.
Вот мой упрощенный тестовый код:
describe('auth/logout', () => {
it('should log out a user', async (done) => {
// ... code to create user account
const loginResponse: Response = await request(app.getHttpServer())
.post('/auth/login')
.send({ username: newUser.email, password });
// get cookie manually from response.headers['set-cookie']
const cookie = getCookieFromHeaders(loginResponse);
// Log out the new user
const logoutResponse: Response = await request(app.getHttpServer())
.get('/auth/logout')
.set('Cookie', [cookie]);
});
});
В своей стратегии JWT я использую собственный синтаксический анализатор файлов cookie. У меня проблема в том, что request.cookies
всегда undefined
, когда доходит до парсера. Однако файл cookie будет присутствовать в request.headers
.
Я следую примеру файла cookie вручную из этой статьи на Medium: https://medium.com/@juha.a.hytonen/testing-authenticated-requests-with-supertest-325ccf47c2bb, и, похоже, нет никаких других методов, доступных для объекта запроса для установить куки.
Если я протестирую ту же функциональность в Postman, все работает, как ожидалось. Что я делаю неправильно?