"""Модуль тестов вкладки настройки 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