80 lines
3.0 KiB
Python
80 lines
3.0 KiB
Python
"""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)
|