e-nms_qa_automation/tests/e2e/test_users_tab.py

272 lines
12 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from pages.login_page import LoginPage
from pages.main_page import MainPage
from pages.users_tab import UsersTab
import pytest
# @pytest.mark.smoke
class TestUsersTab:
"""Тесты для вкладки 'Пользователи'.
Содержит тесты для проверки функционала работы с пользователями:
- отображение списка пользователей
- добавление/удаление пользователей
- изменение ролей пользователей
- сброс паролей
Атрибуты:
browser: фикстура для работы с браузером.
"""
@pytest.fixture(scope="function", autouse=True)
def setup(self, browser):
"""Подготовка тестового окружения.
Выполняет вход в систему и переход на вкладку 'Пользователи'.
Args:
browser: фикстура для работы с браузером.
"""
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("Пользователи")
def test_users_tab_content(self, browser):
"""Тест содержимого вкладки 'Пользователи'.
Проверяет наличие основных элементов интерфейса и содержимого таблицы пользователей.
Args:
browser: фикстура для работы с браузером.
"""
# Вкладка пользователей открыта
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):
"""Тест кнопок на панели инструментов.
Проверяет наличие и доступность кнопок управления пользователями.
Args:
browser: фикстура для работы с браузером.
"""
ut = UsersTab(browser)
ut.should_be_toolbar_buttons()
def test_add_user_window_content(self, browser):
"""Тест содержимого окна добавления пользователя.
Проверяет корректность отображения формы добавления нового пользователя.
Args:
browser: фикстура для работы с браузером.
"""
ut = UsersTab(browser)
# Открытие формы добавления пользователя
ut.open_add_user_window()
# Проверка содержимого формы
ut.check_add_user_window_content()
def test_add_user_window_close_buttons(self, browser):
"""Тест кнопок закрытия окна добавления пользователя.
Проверяет работу кнопок закрытия формы добавления пользователя.
Args:
browser: фикстура для работы с браузером.
"""
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):
"""Тест содержимого окна редактирования пользователя.
Проверяет корректность отображения формы редактирования пользователя.
Args:
browser: фикстура для работы с браузером.
"""
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):
"""Тест кнопок закрытия окна редактирования пользователя.
Проверяет работу кнопок закрытия формы редактирования пользователя.
Args:
browser: фикстура для работы с браузером.
"""
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):
"""Тест добавления и удаления пользователя.
Проверяет полный цикл создания и удаления пользователя.
Args:
browser: фикстура для работы с браузером.
"""
user_data = {"name": "User", "role": "Администратор"}
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.should_be_user_in_table(user_data["name"], user_data["role"])
# Удаление пользователя
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"])
# @pytest.mark.develop
def test_reset_password(self, browser):
"""Тест сброса пароля пользователя.
Проверяет функционал сброса и проверки нового пароля.
Args:
browser: фикстура для работы с браузером.
"""
user_data = {"name": "autoadmin", "role": "Администратор"}
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"])
# @pytest.mark.develop
def test_edit_user_role(self, browser):
"""Тест изменения роли пользователя.
Проверяет функционал изменения роли пользователя.
Args:
browser: фикстура для работы с браузером.
"""
user_data = {"name": "autooperator", "role": "Оператор"}
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"])