Решение тестового задания (Константин Вяткин)
Задача получения токена по логину/паролю напомнила вполне стандартный вариант JWT аутентификации, поэтому вместо реализации вашей функции "в лоб", я реализовал полную поддержку JWT в соответствии с рекомендациями авторов фреймоворка NestJs (соответственно randomstring
и UserTokenService
, etc, убраны за ненадобностью).
Покрытие юнит-тестами и e2e тестами всего кода 100%.
В качестве примера удобства практического использования данного решения я нарисовал заглушку контролера devices
для Apple Wallet и добавил соответсвующий тест/демонстрацию в test/v1.e2e-spect.ts
Несколько изменений в конфигурации проекта, не имеющих отношения к выполнению задания, просто чтобы было понятней:
- Обновлены все dependencies до их последний версий (в том числе сам NestJS и Typescript)
- В Typescript включен strict режим и incremental build.
- Оптимизирован (вынесен в один внешний файл) конфиг Jest, убран конфиг для e2e тестов заменен на один параметер в CLI (таким образом заработал сбор coverage в интеграционных тестах)
- Убраны ненужные dependencies, включая Nodemon - вместо него везде использован Nest CLI
- Переключено на ESLint с deprecated TSLint (вашему Codeclimate это слегка не нравится, но он там честно признается, что устарел - https://github.com/codeclimate/codeclimate-eslint/issues/442)
- Заменил Express на Fastify, убрал модуль App, сделав основным версионный модуль