Замена Ui Авторизации На Api Для Автотестов

Одной из важнейших задач автоматизированного тестирования, на мой взгляд, является обеспечение его высокой надежности.

При решении задачи улучшения показателей надежности тестирования хорошо себя зарекомендовал подход использования API-интерфейса вместо UI. В этой статье мы подробно рассмотрим простой механизм замены UI авторизации на API. Существует большое количество типов аутентификации — Basic, Digest, Form, OAuth 1 и OAuth 2. В качестве примера предлагаю рассмотреть один из самых простых, а именно Form. Основная цель статьи — показать подход к реализации API авторизации для UI-тестов.

Мы будем писать тесты и реализацию на Java. В качестве инструментов мы будем использовать Chrome DevTools. Используем в качестве тест-объектов Канборд что ДВВА .

Это продукты с открытым исходным кодом и открытой лицензией, которые довольно легко развернуть локально.

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

Проект Давайте создадим его с помощью maven и добавим testng, selenide, rest-assured, json-path, jsoup, maven-compiler-plugin и maven-surefire-plugin. Войдите в Kanboard с открытой вкладкой Network Chrome DevTools.

Замена UI авторизации на API для автотестов



Замена UI авторизации на API для автотестов

Проанализировав DevTools, мы сможем узнать алгоритм авторизации.

В этом случае для авторизации выполняются два запроса: GET с двумя параметрами запроса и POST с парой логин/пароль и csrf-токеном.

Первый запрос необходим для получения файла cookie KB_SID. Второй — для файла cookie KB_RM. Установив оба этих значения в WebDriver, мы получаем доступ к главной странице.

Первый запрос в RestAssured будет выглядеть так

  
  
  
  
  
   

Response response01 = given() .

queryParam("controller", "AuthController") .

queryParam("action", "login") .

when() .

get(BASE_URL);

Из него получаем куки KB_SID

String cookieKBSID = response01.getCookie("KB_SID");

Токен CSRF расположен в начале HTML-страницы, которую мы видим в теле ответа.



Замена UI авторизации на API для автотестов

Получить его нам поможет библиотека jsoup, которая позволяет разделить документ на элементы.

Поиск осуществляется так же, как и по веб-элементам.



String cSRFToken = Jsoup.parseBodyFragment(response01.body().

asString()) .

getElementsByAttributeValue("name", "csrf_token").

attr("value");

Второй запрос в RestAssured будет выглядеть так:

Response response02 = RestAssured .

given() .

config(RestAssured.config() .

encoderConfig(EncoderConfig.encoderConfig() .

encodeContentTypeAs("x-www-form-urlencoded", ContentType.URLENC))) .

contentType("application/x-www-form-urlencoded; charset=UTF-8") .

formParam("remember_me", "1") .

formParam("username", "admin") .

formParam("password", "admin") .

formParam("csrf_token", cSRFToken) .

queryParam("controller", "AuthController") .

queryParam("action", "check") .

cookie("KB_SID", cookieKBSID) .

when() .

post(BASE_URL);

На этом этапе стоит обратить внимание на то, что запрос должен быть правильно закодирован (encoderConfig, encodeContentTypeAs).

Из него мы получаем куки KB_RM.

String setCookieHeaderValue = response02.header("Set-Cookie");

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

WebDriverRunner.getWebDriver() .

manage().

addCookie(new Cookie("KB_SID", cookieKBSID)); WebDriverRunner.getWebDriver() .

manage().

addCookie(new Cookie("KB_RM", cookieKBRM)); Selenide.open(url);

Для DVWA все происходит аналогично, только у токена будет другое имя.

Конечно, для других типов аутентификации количество запросов и их сложность будут отличаться.

Однако основной принцип остается прежним — проанализировать полученный алгоритм и воспроизвести его с помощью RestAssured. Благодарю за внимание и надеюсь, что эта статья была вам полезна.

Теги: #Google Chrome #api #тестирование #java #тестирование ИТ-систем #автоматизация тестирования #selenide #java

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.