У меня есть некоторые функции сброса пароля, которые я переписываю, но добавляю тесты.
Мой тест должен:
- Создать запись пользователя в БД
- Создайте запись токена ha sh в БД для этого пользователя
- Убедитесь, что токен ha sh соответствует записи в БД.
Последний один (3), у меня проблемы с тестированием, потому что обычно я не возвращаю токен ha sh пользователю (клиенту) в производственном процессе. Вместо этого я запускаю событие для моего сотрудника, передав ему в памяти строку токена ha sh, а затем отправляю им электронное письмо с секретной ссылкой.
Мой маршрут для проверки выглядит следующим образом:
server.get('/api/v1/users/password/reset/:token', userPasswordReset.fetch)
Так, что, как вы видите, мне нужно получить token
из параметра запроса, что означает, что мне нужно как-то отослать его мне (но только в тестовая среда, НЕ в производстве).
Чтобы решить эту проблему, в моем контроллере в настоящее время я делаю это:
return process.env.NODE_ENV === 'test'
? res.status(201).send({ token: record.token })
: res.status(201).end()
Однако я хотел бы знать, если есть это более безопасный способ go об этом. Мне не нравится идея помещать код fr agile в мой производственный код, который зависит от переменной env.
Я думал о записи токена в файл в системе, но поскольку тесты будут выполняться в разных средах. Я не уверен, что это полностью надежно на основе виртуальных файловых систем.