Как безопасно вернуть токены ha sh или конфиденциальные данные в модульных тестах - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть некоторые функции сброса пароля, которые я переписываю, но добавляю тесты.

Мой тест должен:

  1. Создать запись пользователя в БД
  2. Создайте запись токена ha sh в БД для этого пользователя
  3. Убедитесь, что токен 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.

Я думал о записи токена в файл в системе, но поскольку тесты будут выполняться в разных средах. Я не уверен, что это полностью надежно на основе виртуальных файловых систем.

1 Ответ

0 голосов
/ 05 апреля 2020

Вы должны только тестировать свой publi c API. Вы не тестируете сценарий, который является недействительным. Вы можете протестировать создание sh токена на уровне БД. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...