252 lines
11 KiB
Python
252 lines
11 KiB
Python
"""Модуль тестов вкладки 'Пользователи'.
|
||
|
||
Содержит тесты для проверки функциональности
|
||
работы с пользователями системы.
|
||
"""
|
||
|
||
from typing import Dict
|
||
import pytest
|
||
from playwright.sync_api import Page
|
||
from pages.users_tab import UsersTab
|
||
from pages.main_page import MainPage
|
||
from pages.login_page import LoginPage
|
||
|
||
class TestUsersTab:
|
||
"""Класс тестов для проверки вкладки 'Пользователи'."""
|
||
|
||
@pytest.fixture(scope="function", autouse=True)
|
||
def setup(self, browser: Page) -> None:
|
||
"""Настраивает тестовое окружение.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
lp = LoginPage(browser)
|
||
lp.do_login()
|
||
|
||
mp = MainPage(browser)
|
||
mp.should_be_navigation_panel()
|
||
mp.click_main_navigation_panel_item("Настройки")
|
||
mp.click_configuration_navigation_panel_item("Пользователи")
|
||
|
||
@pytest.fixture(scope="function")
|
||
def cleanup_user(self, browser: Page) -> None:
|
||
"""Фикстура для очистки пользователя User после теста."""
|
||
yield
|
||
# Удаляем тестового пользователя после выполнения теста
|
||
user_data: Dict[str, str] = {"name": "User", "role": "Администратор", "password": "987654"}
|
||
ut = UsersTab(browser)
|
||
|
||
# Проверяем существует ли пользователь и удаляем его
|
||
if ut.find_user_in_table(user_data["name"], user_data["role"]) != -1:
|
||
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||
ut.delete_user(user_data["name"])
|
||
|
||
@pytest.fixture(scope="function")
|
||
def cleanup_autoadmin(self, browser: Page) -> None:
|
||
"""Фикстура для очистки пользователя autoadmin после теста."""
|
||
yield
|
||
user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор", "password": "123456"}
|
||
ut = UsersTab(browser)
|
||
if ut.find_user_in_table(user_data["name"], user_data["role"]) != -1:
|
||
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||
ut.delete_user(user_data["name"])
|
||
|
||
@pytest.fixture(scope="function")
|
||
def cleanup_autooperator(self, browser: Page) -> None:
|
||
"""Фикстура для очистки пользователя autooperator после теста."""
|
||
yield
|
||
user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор", "password": "123245"}
|
||
ut = UsersTab(browser)
|
||
if ut.find_user_in_table(user_data["name"], user_data["role"]) != -1:
|
||
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||
ut.delete_user(user_data["name"])
|
||
|
||
def test_users_tab_content(self, browser: Page) -> None:
|
||
"""Проверяет содержимое вкладки 'Пользователи'.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
ut = UsersTab(browser)
|
||
ut.should_be_toolbar()
|
||
ut.should_be_users_table()
|
||
ut.check_users_table_content(True)
|
||
|
||
def test_users_tab_toolbar_buttons(self, browser: Page) -> None:
|
||
"""Проверяет кнопки на панели инструментов.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
ut = UsersTab(browser)
|
||
ut.should_be_toolbar_buttons()
|
||
|
||
def test_add_user_window_content(self, browser: Page) -> None:
|
||
"""Проверяет содержимое окна добавления пользователя.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
ut = UsersTab(browser)
|
||
ut.open_add_user_window()
|
||
ut.check_add_user_window_content()
|
||
|
||
def test_add_user_window_close_buttons(self, browser: Page) -> None:
|
||
"""Проверяет кнопки закрытия окна добавления.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
ut = UsersTab(browser)
|
||
ut.open_add_user_window()
|
||
ut.close_add_user_window_by_toolbar_button()
|
||
|
||
ut.open_add_user_window()
|
||
ut.close_add_user_window()
|
||
|
||
def test_edit_user_window_content(self, browser: Page) -> None:
|
||
"""Проверяет содержимое окна редактирования.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
ut = UsersTab(browser)
|
||
user_name, role = ut.open_edit_user_page_by_index(0)
|
||
ut.check_edit_user_window_content(user_name, role)
|
||
|
||
def test_edit_user_window_close_buttons(self, browser: Page) -> None:
|
||
"""Проверяет кнопки закрытия окна редактирования.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
ut = UsersTab(browser)
|
||
user_name, role = ut.open_edit_user_page_by_index(0)
|
||
ut.close_edit_user_window_by_toolbar_button(user_name)
|
||
user_name, role = ut.open_edit_user_page_by_index(0)
|
||
ut.close_edit_user_window(user_name)
|
||
|
||
def test_add_and_delete_user(self, browser: Page, cleanup_user) -> None:
|
||
"""Проверяет добавление и удаление пользователя.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
cleanup_user: Фикстура для очистки пользователя.
|
||
"""
|
||
|
||
user_data: Dict[str, str] = {"name": "User", "role": "Администратор", "password": "987654"}
|
||
|
||
mp = MainPage(browser)
|
||
ut = UsersTab(browser)
|
||
|
||
# Проверяем, есть ли такой пользователь
|
||
user_exists = ut.find_user_in_table(user_data["name"], user_data["role"]) != -1
|
||
|
||
if not user_exists:
|
||
# Создаем пользователя впервые
|
||
ut.open_add_user_window()
|
||
success = ut.add_new_user(user_data)
|
||
|
||
if success:
|
||
# Ждем обновления таблицы с использованием ожиданий Playwright
|
||
browser.wait_for_timeout(2000)
|
||
|
||
# Проверяем наличие пользователя в таблице
|
||
user_found = ut.find_user_in_table(user_data["name"], user_data["role"]) != -1
|
||
if not user_found:
|
||
# Если пользователь не найден, обновляем страницу
|
||
browser.reload()
|
||
browser.wait_for_timeout(2000)
|
||
else:
|
||
ut.close_add_user_window()
|
||
|
||
# Пытаемся создать такого же пользователя снова
|
||
ut.open_add_user_window()
|
||
success_second = ut.add_new_user(user_data)
|
||
|
||
# Должно вернуться False при попытке создания существующего пользователя
|
||
assert not success_second, "Ожидалась ошибка при создании существующего пользователя"
|
||
|
||
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||
ut.delete_user(user_data["name"])
|
||
mp.click_configuration_navigation_panel_item("Пользователи")
|
||
mp.click_configuration_navigation_panel_item("Пользователи")
|
||
ut.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
||
|
||
def test_reset_password(self, browser: Page, cleanup_autoadmin) -> None:
|
||
"""Проверяет сброс пароля пользователя.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
cleanup_autoadmin: Фикстура для очистки пользователя autoadmin.
|
||
"""
|
||
|
||
user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор", "password": "123456"}
|
||
|
||
mp = MainPage(browser)
|
||
ut = UsersTab(browser)
|
||
|
||
ut.open_add_user_window()
|
||
ut.add_new_user(user_data)
|
||
mp.click_configuration_navigation_panel_item("Пользователи")
|
||
mp.click_configuration_navigation_panel_item("Пользователи")
|
||
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||
new_password = ut.reset_password(user_data["name"])
|
||
|
||
if len(new_password) == 0:
|
||
assert False, "Unsuccessful password reset"
|
||
|
||
new_lp = LoginPage(browser)
|
||
new_lp.do_login(username=user_data["name"], password=new_password)
|
||
new_mp = MainPage(browser)
|
||
new_mp.do_logout()
|
||
lp_1 = LoginPage(browser)
|
||
lp_1.do_login()
|
||
mp_1 = MainPage(browser)
|
||
mp_1.should_be_navigation_panel()
|
||
mp_1.click_main_navigation_panel_item("Настройки")
|
||
mp_1.click_configuration_navigation_panel_item("Пользователи")
|
||
ut_1 = UsersTab(browser)
|
||
ut_1.open_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||
ut_1.delete_user(user_data["name"])
|
||
mp_1.click_configuration_navigation_panel_item("Пользователи")
|
||
mp_1.click_configuration_navigation_panel_item("Пользователи")
|
||
ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
||
|
||
def test_edit_user_role(self, browser: Page, cleanup_autooperator) -> None:
|
||
"""Проверяет изменение роли пользователя.
|
||
|
||
Args:
|
||
browser: Экземпляр страницы Playwright.
|
||
cleanup_autooperator: Фикстура для очистки пользователя autooperator.
|
||
"""
|
||
|
||
user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор", "password": "123245"}
|
||
|
||
mp = MainPage(browser)
|
||
ut = UsersTab(browser)
|
||
|
||
ut.open_add_user_window()
|
||
ut.add_new_user(user_data)
|
||
mp.click_configuration_navigation_panel_item("Пользователи")
|
||
mp.click_configuration_navigation_panel_item("Пользователи")
|
||
ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||
new_user_data = {"role": "Контактное лицо"}
|
||
ut.edit_user(user_data["name"], new_user_data)
|
||
mp.click_configuration_navigation_panel_item("Пользователи")
|
||
mp.click_configuration_navigation_panel_item("Пользователи")
|
||
ut.should_be_user_in_table(user_data["name"], new_user_data["role"])
|
||
ut.open_edit_user_page_by_user(user_data["name"], new_user_data["role"])
|
||
ut.delete_user(user_data["name"])
|
||
mp.click_configuration_navigation_panel_item("Пользователи")
|
||
mp.click_configuration_navigation_panel_item("Пользователи")
|
||
ut.should_not_be_user_in_table(user_data["name"], new_user_data["role"])
|