"""Модуль контейнера для отображения событий аудита. Содержит класс для работы с контейнером для отображения событий аудита через Playwright. """ from playwright.sync_api import Page, Locator from tools.logger import get_logger from locators.event_panel_locators import EventPanelLocators from components.events_container_component import EventsContainerComponent logger = get_logger("AUDIT_EVENTS_CONTAINER") class AuditEventsContainer(EventsContainerComponent): """Компонент контейнера для отображения событий аудита. Предоставляет методы для взаимодействия с элементами контейнера для отображения событий аудита. """ def __init__(self, page: Page, locator: str | Locator): """Инициализирует компонент контейнера для отображения событий аудита. Args: page: Экземпляр страницы Playwright. """ super().__init__(page, locator) toolbar_locator = self.get_locator(locator).locator(EventPanelLocators.TOOLBAR) self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.FILTER_TOOLBAR_BUTTON), "filter_button") self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.EVENTS_TOOLBAR_BUTTON), "view_events_button") self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.PDF_TOOLBAR_BUTTON), "export_to_pdf_button") self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.CSV_TOOLBAR_BUTTON), "export_to_csv_button") events_filter = self.get_events_filter() events_filter.add_filtering_parameter("filter_type", "Тип") events_filter.add_filtering_parameter("filter_role", "Роль") events_filter.add_filtering_parameter("filter_name", "Имя") events_filter.add_filtering_parameter("filter_ip", "ip") # Действия: # Проверки: def check_content(self) -> None: """Проверяет содержимое контейнера для отображения событий аудита.""" expected_headers = [ 'ВРЕМЯ', 'ОПИСАНИЕ', 'ИДЕНТИФИКАТОР'] self.should_be_toolbar() self.should_be_toolbar_buttons() if not self.is_tab_active("view_events_button"): self.click_tab_button("view_events_button") self.wait_for_timeout(1000) self.should_be_events_table() events_table = self.get_events_table_content() if len(events_table) == 0: assert False, "The contents of the events table are missing" self.check_events_table_headers(events_table[0], expected_headers) for i in range(len(expected_headers)): actual_state = self.get_arrow_button_state(i) assert actual_state == "down", f"Arrow state for column {i} should be 'down'" if len(events_table) == 1: logger.info("Table body is missing") self.should_be_pagination_buttons() events_filter = self.click_filter_button() events_filter.check_content() events_filter.should_be_filtering_parameter("Тип") events_filter.should_be_filtering_parameter("Роль") events_filter.should_be_filtering_parameter("Имя") events_filter.should_be_filtering_parameter("ip") events_filter.click_close_button() def check_content_security(self) -> None: """Проверяет содержимое контейнера для отображения событий безопасности.""" expected_headers = [ 'ВРЕМЯ', 'ОПИСАНИЕ', 'ИДЕНТИФИКАТОР', 'ТИП'] self.should_be_toolbar() self.should_be_toolbar_buttons() if not self.is_tab_active("view_events_button"): self.click_tab_button("view_events_button") self.wait_for_timeout(1000) self.should_be_events_table() events_table = self.get_events_table_content() if len(events_table) == 0: assert False, "The contents of the events table are missing" self.check_events_table_headers(events_table[0], expected_headers) for i in range(len(expected_headers)): actual_state = self.get_arrow_button_state(i) assert actual_state == "down", f"Arrow state for column {i} should be 'down'" if len(events_table) == 1: logger.info("Table body is missing") self.should_be_pagination_buttons() events_filter = self.click_filter_button() events_filter.check_content() events_filter.should_be_filtering_parameter("Тип") events_filter.should_be_filtering_parameter("Роль") events_filter.should_be_filtering_parameter("Имя") events_filter.should_be_filtering_parameter("ip") events_filter.click_close_button() def should_be_toolbar_buttons(self) -> None: """Проверяет наличие и видимость кнопок тулбара.""" self.toolbar.check_button_visibility("filter_button") self.toolbar.check_button_visibility("view_events_button") self.toolbar.check_button_visibility("export_to_pdf_button") self.toolbar.check_button_visibility("export_to_csv_button")