Когда дело доходит до написания автоматизированных тестов на стороне клиента, ничто не сравнится с утечкой мозгов, с которой столкнется новичок, пытаясь написать сквозной тест для входа в систему с помощью поставщика аутентификации, такого как AWS Cognito.
В этой статье основное внимание уделяется тому, как установить и настроить Cognito в других системах, чтобы иметь возможность протестировать процесс входа в систему с помощью Cypress. К счастью, в официальной документации Cypress есть раздел, посвященный AWS Cognito. Цель тестирования вашего процесса входа в систему должна заключаться в том, чтобы убедиться, что AWS Cognito возвращает токен, когда пользователь из вашего пула пользователей пытается войти в ваше приложение, как показано ниже.
Цель тестирования вашего процесса входа в систему не должна состоять в том, чтобы имитировать то, как пользователь будет проходить ваш процесс аутентификации, поскольку это неэффективно и может увеличить время выполнения теста. Скорее, цель должна состоять в том, чтобы проверить конкретный вывод (в данном случае токен) при вводе (имя пользователя и пароль).
Цель тестирования вашего процесса входа в систему не должна заключаться в том, чтобы имитировать то, как пользователь будет проходить ваш процесс аутентификации, поскольку это неэффективно и может увеличить время выполнения теста. Скорее, цель должна состоять в том, чтобы проверить конкретный вывод (в данном случае токен) при вводе (имя пользователя и пароль).
Чтобы добиться этого с помощью Cognito и Cypress, необходимо выполнить пару шагов. Эти шаги:
- Создайте тестового пользователя со статусом учетной записи «ЗАВЕРШЕНО» и электронной почтой, настроенной как проверенная.
- Настройте клиент приложения в AWS Cognito, чтобы он не создавал секретный токен вместе с идентификатором клиента и конфигурацией потока аутентификации на «ALLOW_USER_PASSWORD_AUTH».
ШАГ 1:
- В своем ресурсе Cognito на консоли AWS найдите «пользователи и группы» на левой панели.
- Нажмите «создать пользователя».
- Появится модальное окно, позволяющее заполнить информацию о новом пользователе. Не забудьте оставить электронное письмо помеченным как проверенное. Кроме того, если у тестового пользователя нет рабочего адреса электронной почты, вы должны оставить "Отправить приглашение этому новому пользователю?" снятым и установить временный пароль.
если у тестового пользователя есть рабочая электронная почта, вы можете проверить 'Отправить приглашение этому новому пользователю?' и разрешить AWS установить для вас пароль по умолчанию, очистив поле временного пароля.
- После создания пользователя статус учетной записи необходимо будет изменить на «ЗАВЕРШЕНО». Этот шаг можно выполнить, только если у вас есть права администратора в учетной записи AWS. Администратору необходимо загрузить интерфейс командной строки AWS и выполнить команду:
aws cognito-idp admin-set-user-password \
--user-pool-id <your-user-pool-id> \
--username <username> \
--password <password> \
--permanent
Приведенная выше команда устанавливает новый пароль для тестового пользователя, поскольку пользователю потребуется сбросить пароль.
ШАГ 2:
- Перейдите к клиенту приложения на левой панели. Создайте клиент приложения и убедитесь, что не установлен флажок Создать секрет клиента, так как создание секрета клиента повлияет на функцию Auth.signIn().
- Включите аутентификацию на основе имени пользователя и пароля (ALLOW_USER_PASSWORD_AUTH) в конфигурации потока аутентификации, чтобы разрешить передачу имени пользователя и пароля функции Auth.signIn() в обмен на токены.
ЗАКЛЮЧЕНИЕ:
Теперь, когда Cognito настроен правильно, вы можете выполнить шаги из документации Cypress здесь, чтобы запустить тест.