Когда дело доходит до написания автоматизированных тестов на стороне клиента, ничто не сравнится с утечкой мозгов, с которой столкнется новичок, пытаясь написать сквозной тест для входа в систему с помощью поставщика аутентификации, такого как AWS Cognito.

В этой статье основное внимание уделяется тому, как установить и настроить Cognito в других системах, чтобы иметь возможность протестировать процесс входа в систему с помощью Cypress. К счастью, в официальной документации Cypress есть раздел, посвященный AWS Cognito. Цель тестирования вашего процесса входа в систему должна заключаться в том, чтобы убедиться, что AWS Cognito возвращает токен, когда пользователь из вашего пула пользователей пытается войти в ваше приложение, как показано ниже.

Цель тестирования вашего процесса входа в систему не должна состоять в том, чтобы имитировать то, как пользователь будет проходить ваш процесс аутентификации, поскольку это неэффективно и может увеличить время выполнения теста. Скорее, цель должна состоять в том, чтобы проверить конкретный вывод (в данном случае токен) при вводе (имя пользователя и пароль).

Цель тестирования вашего процесса входа в систему не должна заключаться в том, чтобы имитировать то, как пользователь будет проходить ваш процесс аутентификации, поскольку это неэффективно и может увеличить время выполнения теста. Скорее, цель должна состоять в том, чтобы проверить конкретный вывод (в данном случае токен) при вводе (имя пользователя и пароль).

Чтобы добиться этого с помощью Cognito и Cypress, необходимо выполнить пару шагов. Эти шаги:

  1. Создайте тестового пользователя со статусом учетной записи «ЗАВЕРШЕНО» и электронной почтой, настроенной как проверенная.
  2. Настройте клиент приложения в 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 здесь, чтобы запустить тест.