Вопрос или проблема
Я разрабатываю приложение на 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, потребуется несколько дополнительных шагов:
- Эмуляция MFA: В тестах можно использовать статический код MFA или настроить тестовое окружение с отключенной MFA. Это позволит избегать проблем с получением временных кодов.
- Использование API: Если возможно, внедрить API для автоматического получения MFA-кодов может значительно упростить тестирование.
5. Запуск тестов
Запуск тестов осуществляется из командной строки с помощью команды:
npx nightwatch tests/login.test.js
Заключение
Интеграционное тестирование Angular-приложения с входом через Microsoft Entra требует внимательного подхода, особенно если используется MFA. Настройка Nightwatch и создание тестов, охватывающих весь процесс аутентификации, обеспечит высокое качество приложения и его функциональность. Не забывайте, что интеграционное тестирование является частью общей стратегии обеспечения качества программного обеспечения и помогает находить ошибки на ранних стадиях разработки.
Следуя приведенным инструкциям, вы сможете успешно интегрировать автоматизированные тесты во весь процесс разработки, что в конечном итоге приведет к более надежному и безопасному приложению.