"""Test of the dashboard landing page.""" import time import allure import pytest from selenium.webdriver import ActionChains from selenium.webdriver.common.by import By from selenium.webdriver.remote.webdriver import WebDriver from selenium.webdriver.support.select import Select from tests.integration.types import AdminServer from .helpers.auth import login from .helpers.db import DatabasePreloader from .helpers.wait_helpers import ( wait_for_element_to_be_visisble, ) class TestDashboardPage: """Test dashboard page.""" @pytest.fixture(autouse=True) def login(self, ui_admin_server: AdminServer, driver: WebDriver) -> None: """Login.""" login(ui_admin_server, driver) @pytest.fixture(autouse=True) def create_testdata(self, ui_admin_server: AdminServer) -> None: """Preload some test data.""" test_clients = ["client1", "client2", "client3"] admin_url, (username, password) = ui_admin_server db = DatabasePreloader(admin_url, username, password) db.create_client(*test_clients) secrets = [ ("secret1", ["client1", "client2"]), ("secret2", ["client1"]), ("secret3", ["client3"]), ("secret4", ["client2"]), ] db.create_secret(*secrets) @allure.title("Test Dashboard view") def test_dashboard_elements(self, driver: WebDriver) -> None: """Test elements on the dashboard.""" wait_for_element_to_be_visisble(driver, "dashboard-stats-panel") stats_clients = driver.find_element(By.ID, "stats-client-count") assert stats_clients.text == "3" stats_secrets = driver.find_element(By.ID, "stats-secret-count") assert stats_secrets.text == "4" stats_audit = driver.find_element(By.ID, "stats-audit-count") assert stats_audit.text.isdecimal() assert int(stats_audit.text) > 0 # Check that there is at least one row in each audit table login_table = driver.find_element(By.ID, "last-login-events") login_table_rows = login_table.find_elements(By.XPATH, ".//tr") assert len(login_table_rows) > 1 audit_table = driver.find_element(By.ID, "last-audit-events") audit_table_rows = audit_table.find_elements(By.XPATH, ".//tr") assert len(audit_table_rows) > 1 # Find a questionmark hover login_info_btn = login_table_rows[-1].find_element(By.XPATH, "./td[1]//button") login_info_target = login_info_btn.get_attribute("data-popover-target") assert login_info_target is not None ActionChains(driver).move_to_element(login_info_btn).perform() wait_for_element_to_be_visisble(driver, login_info_target) audit_info_btn = audit_table_rows[-1].find_element(By.XPATH, "./td[1]//button") audit_info_target = audit_info_btn.get_attribute("data-popover-target") assert audit_info_target is not None ActionChains(driver).move_to_element(audit_info_btn).perform() wait_for_element_to_be_visisble(driver, audit_info_target)