Skip to content

TestUsersTab

TestUsersTab

Тесты для вкладки 'Пользователи'.

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

Атрибуты

browser: фикстура для работы с браузером.

Source code in tests\e2e\test_users_tab.py
  9
 10
 11
 12
 13
 14
 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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
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"])

setup(browser)

Подготовка тестового окружения.

Выполняет вход в систему и переход на вкладку 'Пользователи'.

Parameters:

Name Type Description Default
browser

фикстура для работы с браузером.

required
Source code in tests\e2e\test_users_tab.py
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@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("Пользователи")

test_add_and_delete_user(browser)

Тест добавления и удаления пользователя.

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

Parameters:

Name Type Description Default
browser

фикстура для работы с браузером.

required
Source code in tests\e2e\test_users_tab.py
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
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"])

test_add_user_window_close_buttons(browser)

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

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

Parameters:

Name Type Description Default
browser

фикстура для работы с браузером.

required
Source code in tests\e2e\test_users_tab.py
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
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()

test_add_user_window_content(browser)

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

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

Parameters:

Name Type Description Default
browser

фикстура для работы с браузером.

required
Source code in tests\e2e\test_users_tab.py
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
def test_add_user_window_content(self, browser):
    """Тест содержимого окна добавления пользователя.

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

    Args:
        browser: фикстура для работы с браузером.
    """
    ut = UsersTab(browser)

    # Открытие формы добавления пользователя
    ut.open_add_user_window()

    # Проверка содержимого формы
    ut.check_add_user_window_content()

test_edit_user_role(browser)

Тест изменения роли пользователя.

Проверяет функционал изменения роли пользователя.

Parameters:

Name Type Description Default
browser

фикстура для работы с браузером.

required
Source code in tests\e2e\test_users_tab.py
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
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"])

test_edit_user_window_close_buttons(browser)

Тест кнопок закрытия окна редактирования пользователя.

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

Parameters:

Name Type Description Default
browser

фикстура для работы с браузером.

required
Source code in tests\e2e\test_users_tab.py
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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)

test_edit_user_window_content(browser)

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

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

Parameters:

Name Type Description Default
browser

фикстура для работы с браузером.

required
Source code in tests\e2e\test_users_tab.py
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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)

test_reset_password(browser)

Тест сброса пароля пользователя.

Проверяет функционал сброса и проверки нового пароля.

Parameters:

Name Type Description Default
browser

фикстура для работы с браузером.

required
Source code in tests\e2e\test_users_tab.py
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
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"])

test_users_tab_content(browser)

Тест содержимого вкладки 'Пользователи'.

Проверяет наличие основных элементов интерфейса и содержимого таблицы пользователей.

Parameters:

Name Type Description Default
browser

фикстура для работы с браузером.

required
Source code in tests\e2e\test_users_tab.py
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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)

test_users_tab_toolbar_buttons(browser)

Тест кнопок на панели инструментов.

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

Parameters:

Name Type Description Default
browser

фикстура для работы с браузером.

required
Source code in tests\e2e\test_users_tab.py
66
67
68
69
70
71
72
73
74
75
def test_users_tab_toolbar_buttons(self, browser):
    """Тест кнопок на панели инструментов.

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

    Args:
        browser: фикстура для работы с браузером.
    """
    ut = UsersTab(browser)
    ut.should_be_toolbar_buttons()