Интеграционное тестирование приложения Angular с входом в Entra с помощью Nightwatch

Вопрос или проблема

Я разрабатываю приложение на Angular. Единственный способ аутентификации в этом Angular-приложении – это через Microsoft Entra. Но вопрос может быть актуален для любого приложения с включенной Oauth и MFA.

Может ли кто-нибудь сказать, как создавать тесты, если 99% приложения доступно только для входа? Я знаю, что делать с простым именем пользователя и паролем. Но сейчас я удивляюсь, что делать с рабочим процессом Oauth?

Ответ или решение

Интеграционное тестирование Angular-приложения с входом через Microsoft Entra с использованием Nightwatch

В процессе разработки Angular-приложения вы столкнетесь с необходимостью реализации интеграционного тестирования, особенно если метод аутентификации включает OAuth и многофакторную аутентификацию (MFA). В этой статье мы подробно рассмотрим, как организовать интеграционное тестирование Angular-приложения, которое аутентифицируется через Microsoft Entra, с использованием Nightwatch.js.

1. Подготовка окружения

Перед началом тестирования убедитесь, что у вас установлены следующие компоненты:

  • Node.js
  • Nightwatch.js
  • WebDriver (например, ChromeDriver для работы с Google Chrome)

Установите необходимые пакеты с помощью npm:

npm install nightwatch --save-dev
npm install chromedriver --save-dev

2. Конфигурация Nightwatch

Создайте файл конфигурации Nightwatch, в котором укажите настройки WebDriver и другие параметры. Пример:

module.exports = {
  src_folders: ['tests'],
  test_settings: {
    default: {
      desiredCapabilities: {
        browserName: 'chrome',
      },
      ssl: true,
      test_workers: {
        enabled: true,
        workers: 'auto',
      },
    },
  },
};

3. Автоматизация входа через Microsoft Entra

Для того чтобы протестировать аутентификацию с помощью Microsoft Entra, вам нужно учесть следующие шаги, специфичные для OAuth и MFA:

3.1. Создание теста для начального входа

Создайте файл теста, например, login.test.js, в папке с тестами. Начните с написания сценария, который будет открывать страницу с формой входа и вводить учетные данные:

module.exports = {
  'Login Test with Microsoft Entra': (browser) => {
    const loginPageUrl = 'https://your-angular-app-url.com/login';

    browser
      .url(loginPageUrl)
      .waitForElementVisible('body', 1000)
      .assert.title('Login Page')
      .setValue('input[name="username"]', 'your-username')
      .click('button[type="submit"]')
      .pause(2000) // Ожидание загрузки страницы MFA
      .setValue('input[name="mfa-code"]', 'your-mfa-code')
      .click('button[type="submit"]')
      .waitForElementVisible('#app-content', 1000) // Ожидаем загрузку основного контента приложения
      .assert.containsText('#app-content', 'Welcome') // Проверка успешного входа
      .end();
  },
};

4. Обработка многофакторной аутентификации (MFA)

Если ваше приложение настроено на использование MFA, потребуется несколько дополнительных шагов:

  1. Эмуляция MFA: В тестах можно использовать статический код MFA или настроить тестовое окружение с отключенной MFA. Это позволит избегать проблем с получением временных кодов.
  2. Использование API: Если возможно, внедрить API для автоматического получения MFA-кодов может значительно упростить тестирование.

5. Запуск тестов

Запуск тестов осуществляется из командной строки с помощью команды:

npx nightwatch tests/login.test.js

Заключение

Интеграционное тестирование Angular-приложения с входом через Microsoft Entra требует внимательного подхода, особенно если используется MFA. Настройка Nightwatch и создание тестов, охватывающих весь процесс аутентификации, обеспечит высокое качество приложения и его функциональность. Не забывайте, что интеграционное тестирование является частью общей стратегии обеспечения качества программного обеспечения и помогает находить ошибки на ранних стадиях разработки.

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

Оцените материал
Добавить комментарий

Капча загружается...