116 lines
5.3 KiB
Python
116 lines
5.3 KiB
Python
"""Модуль тестов вкладки настройки Keycloak Аутентификации.
|
||
|
||
Содержит тесты для проверки корректности отображения
|
||
и функциональности элементов страницы настройки Keycloak Аутентификации.
|
||
"""
|
||
|
||
import pytest
|
||
from playwright.sync_api import Page
|
||
from pages.login_page import LoginPage
|
||
from pages.main_page import MainPage
|
||
from pages.keycloak_settings_tab import KeycloakAuthSettingsTab
|
||
|
||
|
||
# @pytest.mark.smoke
|
||
class TestKeycloakAuthSettingsTab:
|
||
"""Набор тестов для вкладки настройки Keycloak Аутентификации.
|
||
|
||
Проверяет корректность отображения и функциональность элементов вкладки настройки LDAP Аутентификации.
|
||
"""
|
||
|
||
@pytest.fixture(scope="function", autouse=True)
|
||
def setup(self, browser: Page) -> None:
|
||
"""Фикстура для подготовки тестового окружения.
|
||
|
||
Выполняет:
|
||
1. Авторизацию в системе
|
||
2. Переход на вкладку настройки Keycloak Аутентификации через панель навигации
|
||
"""
|
||
# Авторизация в системе
|
||
login_page = LoginPage(browser)
|
||
login_page.do_login()
|
||
|
||
# Инициализация главной страницы
|
||
main_page = MainPage(browser)
|
||
|
||
# Проверка и взаимодействие с элементами навигации
|
||
main_page.should_be_navigation_panel()
|
||
main_page.click_main_navigation_panel_item("Настройки")
|
||
main_page.click_subpanel_item("Аутентификация")
|
||
main_page.click_subpanel_item("KEYCLOAK")
|
||
|
||
# @pytest.mark.develop
|
||
def test_keycloak_auth_settings_tab_content(self, browser: Page) -> None:
|
||
"""Тест содержимого вкладки настройки Keycloak Аутентификации.
|
||
|
||
Проверяет:
|
||
Наличие и корректность элементов интерфейса
|
||
"""
|
||
|
||
current_settings = {}
|
||
default_settings = {}
|
||
|
||
# Инициализация вкладки
|
||
keycloak_auth_settings_tab = KeycloakAuthSettingsTab(browser)
|
||
|
||
# запрос текущих установок
|
||
cur_settings_response = keycloak_auth_settings_tab.send_get_api_request("e-cmdb/api/keycloack")
|
||
if cur_settings_response.status == 200:
|
||
response_body = keycloak_auth_settings_tab.get_response_body(cur_settings_response)
|
||
|
||
if response_body:
|
||
current_settings = response_body[0].copy()
|
||
|
||
# запрос дефолтных значений
|
||
default_settings_response = keycloak_auth_settings_tab.send_get_api_request("e-cmdb/api/keycloack/meta")
|
||
if default_settings_response.status == 200:
|
||
response_body = keycloak_auth_settings_tab.get_response_body(default_settings_response)
|
||
|
||
if response_body:
|
||
default_settings = response_body["fields"].copy()
|
||
|
||
# Проверка элементов интерфейса
|
||
keycloak_auth_settings_tab.check_content()
|
||
|
||
# Получение и проверка отображаемых входных значений формы настроек
|
||
settings = keycloak_auth_settings_tab.get_current_setting_values()
|
||
|
||
value = settings["url"]
|
||
expected = current_settings["url"]
|
||
if expected is None:
|
||
expected = self._get_default_value("url", default_settings)
|
||
assert value == expected, f"Actual value {value} is not equal expected {expected} for field 'URL'"
|
||
|
||
value = settings["url_token"]
|
||
expected = current_settings["url_token"]
|
||
if expected is None:
|
||
expected = self._get_default_value("url_token", default_settings)
|
||
assert value == expected, f"Actual value {value} is not equal expected {expected} for field 'URL_TOKEN'"
|
||
|
||
value = settings["clientid"]
|
||
expected = current_settings["clientid"]
|
||
if expected is None:
|
||
expected = self._get_default_value("clientid", default_settings)
|
||
assert value == expected, f"Actual value {value} is not equal expected {expected} for field 'CLIENTID'"
|
||
|
||
value = settings["clientsecret"]
|
||
expected = current_settings["clientsecret"]
|
||
if expected is None:
|
||
expected = self._get_default_value("clientsecret", default_settings)
|
||
assert value == expected, \
|
||
f"Actual value {value} is not equal expected {expected} for field 'CLIENTSECRET'"
|
||
|
||
value = settings["redirect_uri"]
|
||
expected = current_settings["redirect_uri"]
|
||
if expected is None:
|
||
expected = self._get_default_value("redirect_uri", default_settings)
|
||
assert value == expected, \
|
||
f"Actual value {value} is not equal expected {expected} for field 'REDIRECT_URI'"
|
||
|
||
|
||
def _get_default_value(self, setting_name: str, default_settings: dict) -> str| None:
|
||
for setting in default_settings:
|
||
if setting["name"] == setting_name:
|
||
return setting["default"]
|
||
return None
|