Skip to content

TestUsersTabAddUser

Модуль тестов вкладки 'Пользователи'.

Содержит тесты для проверки функциональности работы с пользователями системы.

TestUsersTabAddUser

Класс тестов для проверки вкладки 'Пользователи' - действия при создании пользователя.

Тесты покрывают следующие сценарии: 1. test_add_user_window_content: Проверяет содержимое окна добавления пользователя 2. test_add_user_window_close_buttons: Проверяет кнопки закрытия окна добавления 3. test_add_local_user: Проверяет добавление локального пользователя 4. test_add_AD_user: Проверяет добавление пользователя Active Directory

Source code in tests\e2e\users\test_add_user.py
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
class TestUsersTabAddUser:
    """Класс тестов для проверки вкладки 'Пользователи' - действия при создании пользователя.

    Тесты покрывают следующие сценарии:
    1. test_add_user_window_content: Проверяет содержимое окна добавления пользователя
    2. test_add_user_window_close_buttons: Проверяет кнопки закрытия окна добавления
    3. test_add_local_user: Проверяет добавление локального пользователя
    4. test_add_AD_user: Проверяет добавление пользователя Active Directory
    """

    @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_subpanel_item("Пользователи")

    @pytest.fixture(scope="function")
    def cleanup_users(self, browser: Page) -> None:
        """Фикстура для очистки тестовых пользователей и их сеансов после теста."""
        yield

        # Выход из системы текущего пользователя
        mp = MainPage(browser)
        mp.do_logout()

        # Авторизация администратором для очистки
        login_page = LoginPage(browser)
        login_page.do_login()

        # Удаляем тестовых пользователей
        self._cleanup_test_users(browser)

    def _cleanup_test_users(self, browser: Page) -> None:
        """Удаляет тестовых пользователей."""
        mp = MainPage(browser)
        mp.click_main_navigation_panel_item("Настройки")
        mp.click_subpanel_item("Пользователи")
        ut = UsersTab(browser)

        # Удаляем тестовых пользователей
        test_users = ["TestUser", "TestUserAD"]

        for user_name in test_users:
            # Проверяем существует ли пользователь и удаляем его
            user_index = ut.find_user_in_table(user_name, "Администратор")
            if user_index != -1:
                ut.open_edit_user_page_by_user(user_name, "Администратор")
                ut.delete_user(user_name)

    # @pytest.mark.develop
    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()
        ut.transform_to_add_AD_user_window()
        ut.check_add_AD_user_window_content()
        ut.close_add_AD_user_window()

    # @pytest.mark.develop
    def test_add_user_window_close_buttons(self, browser: Page) -> None:
        """Проверяет кнопки закрытия окна добавления.

        Args:
            browser: Экземпляр страницы Playwright.
        """

        ut = UsersTab(browser)
        browser.wait_for_timeout(500)

        ut.open_add_user_window()
        ut.close_add_user_window_by_toolbar_button()

        ut.open_add_user_window()
        ut.close_add_user_window()

        ut.open_add_user_window()
        ut.transform_to_add_AD_user_window()
        ut.close_add_AD_user_window_by_toolbar_button()

        ut.open_add_user_window()
        ut.transform_to_add_AD_user_window()
        ut.close_add_AD_user_window()

    # @pytest.mark.develop
    def test_add_local_user(self, browser: Page, cleanup_users: None) -> None:
        """Проверяет добавление локального пользователя.

        Args:
            browser: Экземпляр страницы Playwright.
            cleanup_users: Фикстура для автоматического удаления пользователя после теста.
        """

        user_data: Dict[str, str] = {"name": "TestUser", "role": "Администратор", "password": "987654321abcd"}
        self._add_user(browser, user_data)

    # @pytest.mark.develop
    def test_add_AD_user(self, browser: Page, cleanup_users: None) -> None:
        """Проверяет добавление пользователя Active Directory.

        Args:
            browser: Экземпляр страницы Playwright.
            cleanup_users: Фикстура для автоматического удаления пользователя после теста.
        """

        user_data: Dict[str, str] = {
                    "auth_type": "active_directory",
                    "group": "NMS_tester",
                    "name_AD": "tester1",  # Выбор из списка "Пользователи AD"
                    "name": "TestUserAD",  # Ручной ввод в поле "Имя"
                    "role": "Администратор"
        }
        self._add_user(browser, user_data)

    def _add_user(self, browser: Page, user_data: Dict[str, str]) -> None:
        """Действия при добавлении пользователя.

        Args:
            browser: Экземпляр страницы Playwright.
            user_data: Список полей для заполнения формы создания пользователя.
        """

        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()

            if ut.add_new_user(user_data):
                # Ждем обновления таблицы с использованием ожиданий 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, "Ожидалась ошибка при создании существующего пользователя"

cleanup_users(browser)

Фикстура для очистки тестовых пользователей и их сеансов после теста.

Source code in tests\e2e\users\test_add_user.py
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
@pytest.fixture(scope="function")
def cleanup_users(self, browser: Page) -> None:
    """Фикстура для очистки тестовых пользователей и их сеансов после теста."""
    yield

    # Выход из системы текущего пользователя
    mp = MainPage(browser)
    mp.do_logout()

    # Авторизация администратором для очистки
    login_page = LoginPage(browser)
    login_page.do_login()

    # Удаляем тестовых пользователей
    self._cleanup_test_users(browser)

setup(browser)

Настраивает тестовое окружение.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
Source code in tests\e2e\users\test_add_user.py
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@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_subpanel_item("Пользователи")

test_add_AD_user(browser, cleanup_users)

Проверяет добавление пользователя Active Directory.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
cleanup_users None

Фикстура для автоматического удаления пользователя после теста.

required
Source code in tests\e2e\users\test_add_user.py
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
def test_add_AD_user(self, browser: Page, cleanup_users: None) -> None:
    """Проверяет добавление пользователя Active Directory.

    Args:
        browser: Экземпляр страницы Playwright.
        cleanup_users: Фикстура для автоматического удаления пользователя после теста.
    """

    user_data: Dict[str, str] = {
                "auth_type": "active_directory",
                "group": "NMS_tester",
                "name_AD": "tester1",  # Выбор из списка "Пользователи AD"
                "name": "TestUserAD",  # Ручной ввод в поле "Имя"
                "role": "Администратор"
    }
    self._add_user(browser, user_data)

test_add_local_user(browser, cleanup_users)

Проверяет добавление локального пользователя.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
cleanup_users None

Фикстура для автоматического удаления пользователя после теста.

required
Source code in tests\e2e\users\test_add_user.py
116
117
118
119
120
121
122
123
124
125
def test_add_local_user(self, browser: Page, cleanup_users: None) -> None:
    """Проверяет добавление локального пользователя.

    Args:
        browser: Экземпляр страницы Playwright.
        cleanup_users: Фикстура для автоматического удаления пользователя после теста.
    """

    user_data: Dict[str, str] = {"name": "TestUser", "role": "Администратор", "password": "987654321abcd"}
    self._add_user(browser, user_data)

test_add_user_window_close_buttons(browser)

Проверяет кнопки закрытия окна добавления.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
Source code in tests\e2e\users\test_add_user.py
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
def test_add_user_window_close_buttons(self, browser: Page) -> None:
    """Проверяет кнопки закрытия окна добавления.

    Args:
        browser: Экземпляр страницы Playwright.
    """

    ut = UsersTab(browser)
    browser.wait_for_timeout(500)

    ut.open_add_user_window()
    ut.close_add_user_window_by_toolbar_button()

    ut.open_add_user_window()
    ut.close_add_user_window()

    ut.open_add_user_window()
    ut.transform_to_add_AD_user_window()
    ut.close_add_AD_user_window_by_toolbar_button()

    ut.open_add_user_window()
    ut.transform_to_add_AD_user_window()
    ut.close_add_AD_user_window()

test_add_user_window_content(browser)

Проверяет содержимое окна добавления пользователя.

Parameters:

Name Type Description Default
browser Page

Экземпляр страницы Playwright.

required
Source code in tests\e2e\users\test_add_user.py
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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()
    ut.transform_to_add_AD_user_window()
    ut.check_add_AD_user_window_content()
    ut.close_add_AD_user_window()