Актуализированы тесты создания и редактирования пользователя
parent
aac422e2b2
commit
c239ce9916
|
|
@ -52,7 +52,7 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
# Добавление элементов формы
|
||||
checkbox_1 = Checkbox(
|
||||
page,
|
||||
self.page.get_by_role("checkbox").nth(0),
|
||||
input_form_locator.get_by_role("checkbox").nth(0),
|
||||
"active_directory"
|
||||
)
|
||||
self.add_content_item("active_directory_checkbox", checkbox_1)
|
||||
|
|
@ -65,6 +65,7 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
self.add_content_item("active_directory_checkbox_label", label_1)
|
||||
|
||||
# Начальный набор полей формы
|
||||
# Поле Группа
|
||||
group_loc = input_form_locator.get_by_role("combobox").nth(0)
|
||||
group_input = TextInput(page, group_loc, "group_input")
|
||||
self.add_content_item("group_input", group_input)
|
||||
|
|
@ -76,10 +77,28 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
locator_button_search = self.page.get_by_role("button", name="Поиск")
|
||||
self.add_button(locator_button_search, "search")
|
||||
|
||||
# Поле Имя
|
||||
loc = input_form_locator.locator("xpath=div[3]").locator(text_field_locator)
|
||||
name_input = TextInput(page, loc, "name_input")
|
||||
self.add_content_item("name_input", name_input)
|
||||
|
||||
# Чекбокс "Блокировка" - индекс 1
|
||||
checkbox_2 = Checkbox(
|
||||
page,
|
||||
input_form_locator.get_by_role("checkbox").nth(1),
|
||||
"blocking"
|
||||
)
|
||||
self.add_content_item("blocking_checkbox", checkbox_2)
|
||||
|
||||
# Метка "Блокировка" - индекс 1
|
||||
label_2 = Text(
|
||||
page,
|
||||
self.page.locator(label_locator).nth(1),
|
||||
"blocking_checkbox_label"
|
||||
)
|
||||
self.add_content_item("blocking_checkbox_label", label_2)
|
||||
|
||||
# Поле Роль
|
||||
role_loc = input_form_locator.get_by_role("combobox").nth(1)
|
||||
role_input = TextInput(page, role_loc, "role_input")
|
||||
self.add_content_item("role_input", role_input)
|
||||
|
|
@ -88,31 +107,36 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
DropdownList(page)
|
||||
)
|
||||
|
||||
loc = input_form_locator.locator("xpath=div[6]").locator(text_field_locator)
|
||||
# Поле Комментарий
|
||||
loc = input_form_locator.locator("xpath=div[7]").locator(text_field_locator)
|
||||
commentary_input = TextInput(page, loc, "commentary_input")
|
||||
self.add_content_item("commentary_input", commentary_input)
|
||||
|
||||
loc = input_form_locator.locator("xpath=div[7]").locator(text_field_locator)
|
||||
# Поле E-mail
|
||||
loc = input_form_locator.locator("xpath=div[8]").locator(text_field_locator)
|
||||
email_input = TextInput(page, loc, "email_input")
|
||||
self.add_content_item("email_input", email_input)
|
||||
|
||||
loc = input_form_locator.locator("xpath=div[8]").locator(text_field_locator)
|
||||
# Поле Номер для СМС
|
||||
loc = input_form_locator.locator("xpath=div[9]").locator(text_field_locator)
|
||||
phone_input = TextInput(page, loc, "phone_input")
|
||||
self.add_content_item("phone_input", phone_input)
|
||||
|
||||
checkbox_2 = Checkbox(
|
||||
# Чекбокс "Подписка на Push-уведомления" - индекс 2
|
||||
checkbox_3 = Checkbox(
|
||||
page,
|
||||
page.get_by_role("checkbox").nth(1),
|
||||
input_form_locator.get_by_role("checkbox").nth(2),
|
||||
"push_notification"
|
||||
)
|
||||
self.add_content_item("push_notification_checkbox", checkbox_2)
|
||||
self.add_content_item("push_notification_checkbox", checkbox_3)
|
||||
|
||||
label_2 = Text(
|
||||
# Метка "Подписка на Push-уведомления" - индекс 2
|
||||
label_3 = Text(
|
||||
page,
|
||||
self.page.locator(label_locator).nth(1),
|
||||
self.page.locator(label_locator).nth(2),
|
||||
"push_notification_checkbox_label"
|
||||
)
|
||||
self.add_content_item("push_notification_checkbox_label", label_2)
|
||||
self.add_content_item("push_notification_checkbox_label", label_3)
|
||||
|
||||
# Добавление кнопок действий
|
||||
locator_button_add = self.page.get_by_role("button", name="Добавить")
|
||||
|
|
@ -134,6 +158,26 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
|
||||
self.get_content_item("active_directory_checkbox").uncheck(force=True)
|
||||
|
||||
def check_blocking_checkbox(self):
|
||||
"""Включает чек-бокс Блокировка."""
|
||||
|
||||
self.get_content_item("blocking_checkbox").check(force=True)
|
||||
|
||||
def uncheck_blocking_checkbox(self):
|
||||
"""Выключает чек-бокс Блокировка."""
|
||||
|
||||
self.get_content_item("blocking_checkbox").uncheck(force=True)
|
||||
|
||||
def check_push_notification_checkbox(self):
|
||||
"""Включает чек-бокс Push-уведомления."""
|
||||
|
||||
self.get_content_item("push_notification_checkbox").check(force=True)
|
||||
|
||||
def uncheck_push_notification_checkbox(self):
|
||||
"""Выключает чек-бокс Push-уведомления."""
|
||||
|
||||
self.get_content_item("push_notification_checkbox").uncheck(force=True)
|
||||
|
||||
def update_input_form_fields(self, expand):
|
||||
"""Персчитывает локаторы полей формы ввода при добавлении/удалении дополнительного поля. """
|
||||
|
||||
|
|
@ -144,13 +188,13 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
new_loc = input_form_locator.locator("xpath=div[4]").locator(text_field_locator)
|
||||
self.get_content_item("name_input").update_locator(new_loc)
|
||||
|
||||
new_loc = input_form_locator.locator("xpath=div[7]").locator(text_field_locator)
|
||||
new_loc = input_form_locator.locator("xpath=div[8]").locator(text_field_locator)
|
||||
self.get_content_item("commentary_input").update_locator(new_loc)
|
||||
|
||||
new_loc = input_form_locator.locator("xpath=div[8]").locator(text_field_locator)
|
||||
new_loc = input_form_locator.locator("xpath=div[9]").locator(text_field_locator)
|
||||
self.get_content_item("email_input").update_locator(new_loc)
|
||||
|
||||
new_loc = input_form_locator.locator("xpath=div[9]").locator(text_field_locator)
|
||||
new_loc = input_form_locator.locator("xpath=div[10]").locator(text_field_locator)
|
||||
self.get_content_item("phone_input").update_locator(new_loc)
|
||||
|
||||
role_loc = input_form_locator.get_by_role("combobox").nth(2)
|
||||
|
|
@ -159,13 +203,13 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
new_loc = input_form_locator.locator("xpath=div[3]").locator(text_field_locator)
|
||||
self.get_content_item("name_input").update_locator(new_loc)
|
||||
|
||||
new_loc = input_form_locator.locator("xpath=div[6]").locator(text_field_locator)
|
||||
new_loc = input_form_locator.locator("xpath=div[7]").locator(text_field_locator)
|
||||
self.get_content_item("commentary_input").update_locator(new_loc)
|
||||
|
||||
new_loc = input_form_locator.locator("xpath=div[7]").locator(text_field_locator)
|
||||
new_loc = input_form_locator.locator("xpath=div[8]").locator(text_field_locator)
|
||||
self.get_content_item("email_input").update_locator(new_loc)
|
||||
|
||||
new_loc = input_form_locator.locator("xpath=div[8]").locator(text_field_locator)
|
||||
new_loc = input_form_locator.locator("xpath=div[9]").locator(text_field_locator)
|
||||
self.get_content_item("phone_input").update_locator(new_loc)
|
||||
|
||||
role_loc = input_form_locator.get_by_role("combobox").nth(1)
|
||||
|
|
@ -181,18 +225,25 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
menu_locator = self.page.locator(ModalWindowLocators.MENU_INPUT_FORM_USER_DATA)
|
||||
input_form_locator = self.page.locator(ModalWindowLocators.INPUT_FORM_USER_DATA)
|
||||
|
||||
# Поле "Группа" - выбор из списка
|
||||
group_name = user_data.get("group")
|
||||
if group_name is None:
|
||||
assert False, "Value of 'group' is missing"
|
||||
|
||||
name = user_data.get("name")
|
||||
if name is None:
|
||||
assert False, "Value of 'name' is missing"
|
||||
# Поле "Пользователи AD" - выбор из списка
|
||||
name_AD = user_data.get("name_AD")
|
||||
if name_AD is None:
|
||||
assert False, "Value of 'name_AD' is missing"
|
||||
|
||||
# Поле "Имя" - если определено (не None) вводим вручную
|
||||
name = user_data.get("name")
|
||||
|
||||
# Поле "Роль" - выбор из списка
|
||||
role = user_data.get("role")
|
||||
if role is None:
|
||||
assert False, "Value of 'role' is missing"
|
||||
|
||||
# Поиск и выбор заданной группы из списка существующих
|
||||
group_field = self.get_content_item("group_input")
|
||||
group_field.click()
|
||||
|
||||
|
|
@ -205,6 +256,7 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
group_list.check_item_with_text(group_name)
|
||||
group_list.click_item_with_text(group_name)
|
||||
|
||||
# Нажатие кнопки "Поиск"
|
||||
search_button = self.get_button_by_name("search")
|
||||
search_button.click()
|
||||
|
||||
|
|
@ -212,6 +264,10 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
if count == 2:
|
||||
assert False, f"Selected group {group_name} is empty. Use another group."
|
||||
|
||||
# Если в группе есть пользователи, открывается новое поле, персчет локаторов
|
||||
self.update_input_form_fields(expand=True)
|
||||
|
||||
# Поиск и выбор заданного пользователя AD из списка существующих
|
||||
user_AD_loc = input_form_locator.get_by_role("combobox").nth(1)
|
||||
user_AD_input = TextInput(self.page, user_AD_loc, "user_AD_input")
|
||||
self.add_content_item("user_AD_input", user_AD_input)
|
||||
|
|
@ -224,12 +280,18 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
user_AD_list = self.get_content_item("user_AD_list")
|
||||
user_AD_list.scroll_until_end(menu_locator)
|
||||
user_AD_names = group_list.get_item_names(menu_locator)
|
||||
if name not in user_AD_names:
|
||||
assert False, f"Required user name {name} is missing"
|
||||
if name_AD not in user_AD_names:
|
||||
assert False, f"Required user name {name_AD} is missing"
|
||||
|
||||
user_AD_list.check_item_with_text(name)
|
||||
user_AD_list.click_item_with_text(name)
|
||||
user_AD_list.check_item_with_text(name_AD)
|
||||
user_AD_list.click_item_with_text(name_AD)
|
||||
|
||||
# Заполнение поля "Имя" (ручной ввод) если задано
|
||||
if name:
|
||||
name_field = self.get_content_item("name_input")
|
||||
name_field.input_value(name)
|
||||
|
||||
# Поиск и выбор заданной роли из списка существующих
|
||||
role_field = self.get_content_item("role_input")
|
||||
role_field.click()
|
||||
|
||||
|
|
@ -237,6 +299,32 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
roles_list.check_item_with_text(user_data["role"])
|
||||
roles_list.click_item_with_text(user_data["role"])
|
||||
|
||||
if user_data.get("commentary"):
|
||||
input_field = self.get_content_item("commentary_input")
|
||||
input_field.input_value(user_data["commentary"])
|
||||
|
||||
if user_data.get("email"):
|
||||
input_field = self.get_content_item("email_input")
|
||||
input_field.input_value(user_data["email"])
|
||||
|
||||
if user_data.get("phone_number"):
|
||||
input_field = self.get_content_item("phone_input")
|
||||
input_field.input_value(user_data["phone_number"])
|
||||
|
||||
if user_data.get("blocking_checked"):
|
||||
checkbox = self.get_content_item("blocking_checkbox")
|
||||
if user_data["blocking_checked"]:
|
||||
checkbox.check()
|
||||
else:
|
||||
checkbox.uncheck()
|
||||
|
||||
if user_data.get("push_notification_checked"):
|
||||
checkbox = self.get_content_item("push_notification_checkbox")
|
||||
if user_data["push_notification_checked"]:
|
||||
checkbox.check()
|
||||
else:
|
||||
checkbox.uncheck()
|
||||
|
||||
# Отправка формы
|
||||
add_button = self.get_button_by_name("add")
|
||||
add_button.click()
|
||||
|
|
@ -247,10 +335,7 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
title,
|
||||
f"Confirmation dialog window with title '{title}' is missing"
|
||||
)
|
||||
|
||||
# На первом этапе реального пользователя не создаем
|
||||
self.new_user_confirm.click_cancel_button()
|
||||
self.close_window()
|
||||
self.new_user_confirm.click_allow_button()
|
||||
|
||||
def close_window(self):
|
||||
"""Закрывает модальное окно через кнопку 'Закрыть'."""
|
||||
|
|
@ -290,6 +375,11 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
"Active Directory",
|
||||
"Label 'Active Directory' is missing"
|
||||
)
|
||||
elif name == "blocking_checkbox_label":
|
||||
item.check_have_text(
|
||||
"Блокировка",
|
||||
"Label 'Блокировка' is missing"
|
||||
)
|
||||
elif name == "push_notification_checkbox_label":
|
||||
item.check_have_text(
|
||||
"Подписка на Push-уведомления",
|
||||
|
|
@ -323,10 +413,24 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
elif name in no_op_names:
|
||||
continue
|
||||
else:
|
||||
print(f"check item: {name}")
|
||||
item.check_visibility(
|
||||
f"Modal window content item with name '{name}' is missing"
|
||||
)
|
||||
|
||||
# Дополнительная проверка состояния чекбоксов
|
||||
blocking_checkbox = self.get_content_item("blocking_checkbox")
|
||||
is_blocking_checked = blocking_checkbox.is_checked()
|
||||
assert not is_blocking_checked, (
|
||||
"Checkbox 'Блокировка' should not be checked by default"
|
||||
)
|
||||
|
||||
push_checkbox = self.get_content_item("push_notification_checkbox")
|
||||
is_push_checked = push_checkbox.is_checked()
|
||||
assert not is_push_checked, (
|
||||
"Checkbox 'Подписка на Push-уведомления' should not be checked by default"
|
||||
)
|
||||
|
||||
self.check_button_visibility("search")
|
||||
self.check_button_visibility("add")
|
||||
self.check_button_visibility("close")
|
||||
|
|
@ -334,6 +438,7 @@ class AddADUserModalWindow(ModalWindowComponent):
|
|||
search_button = self.get_button_by_name("search")
|
||||
search_button.click()
|
||||
|
||||
# Проверка что поле "Пользователи AD" появилось после поиска
|
||||
user_AD_loc = input_form_locator.get_by_role("combobox").nth(1)
|
||||
user_AD_input = TextInput(self.page, user_AD_loc, "user_AD_input")
|
||||
self.add_content_item("user_AD_input", user_AD_input)
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class AddLocalUserModalWindow(ModalWindowComponent):
|
|||
self.add_toolbar_title(self.window_title)
|
||||
self.add_toolbar_button(locator_button_toolbar_close, "close")
|
||||
|
||||
# Добавление элементов формы
|
||||
# Добавление элементов формы по порядку расположения в окне
|
||||
checkbox_1 = Checkbox(
|
||||
page,
|
||||
self.page.locator(input_form_locator).get_by_role("checkbox").nth(0),
|
||||
|
|
@ -68,6 +68,7 @@ class AddLocalUserModalWindow(ModalWindowComponent):
|
|||
)
|
||||
self.add_content_item("active_directory_checkbox_label", label_1)
|
||||
|
||||
# Поле Имя
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[2]")
|
||||
|
|
@ -76,48 +77,10 @@ class AddLocalUserModalWindow(ModalWindowComponent):
|
|||
name_input = TextInput(page, loc, "name_input")
|
||||
self.add_content_item("name_input", name_input)
|
||||
|
||||
role_loc = self.page.locator(input_form_locator).get_by_role("combobox").nth(0)
|
||||
role_input = TextInput(page, role_loc, "role_input")
|
||||
self.add_content_item("role_input", role_input)
|
||||
self.add_content_item("roles_list", DropdownList(page))
|
||||
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[5]")
|
||||
.locator(text_field_locator)
|
||||
)
|
||||
password_input = TextInput(page, loc, "password_input")
|
||||
self.add_content_item("password_input", password_input)
|
||||
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[6]")
|
||||
.locator(text_field_locator)
|
||||
)
|
||||
commentary_input = TextInput(page, loc, "commentary_input")
|
||||
self.add_content_item("commentary_input", commentary_input)
|
||||
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[7]")
|
||||
.locator(text_field_locator)
|
||||
)
|
||||
email_input = TextInput(page, loc, "email_input")
|
||||
self.add_content_item("email_input", email_input)
|
||||
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[8]")
|
||||
.locator(text_field_locator)
|
||||
)
|
||||
phone_input = TextInput(page, loc, "phone_input")
|
||||
self.add_content_item("phone_input", phone_input)
|
||||
|
||||
# Чекбокс "Блокировка" - индекс 1
|
||||
checkbox_2 = Checkbox(
|
||||
page,
|
||||
self.page.locator(ModalWindowLocators.INPUT_FORM_USER_DATA)
|
||||
.get_by_role("checkbox").nth(1),
|
||||
self.page.locator(input_form_locator).get_by_role("checkbox").nth(1),
|
||||
"blocking"
|
||||
)
|
||||
self.add_content_item("blocking_checkbox", checkbox_2)
|
||||
|
|
@ -130,6 +93,48 @@ class AddLocalUserModalWindow(ModalWindowComponent):
|
|||
)
|
||||
self.add_content_item("blocking_checkbox_label", label_2)
|
||||
|
||||
# Поле Роль
|
||||
role_loc = self.page.locator(input_form_locator).get_by_role("combobox").nth(0)
|
||||
role_input = TextInput(page, role_loc, "role_input")
|
||||
self.add_content_item("role_input", role_input)
|
||||
self.add_content_item("roles_list", DropdownList(page))
|
||||
|
||||
# Поле Пароль
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[5]")
|
||||
.locator(text_field_locator)
|
||||
)
|
||||
password_input = TextInput(page, loc, "password_input")
|
||||
self.add_content_item("password_input", password_input)
|
||||
|
||||
# Поле Комментарий
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[6]")
|
||||
.locator(text_field_locator)
|
||||
)
|
||||
commentary_input = TextInput(page, loc, "commentary_input")
|
||||
self.add_content_item("commentary_input", commentary_input)
|
||||
|
||||
# Поле E-mail
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[7]")
|
||||
.locator(text_field_locator)
|
||||
)
|
||||
email_input = TextInput(page, loc, "email_input")
|
||||
self.add_content_item("email_input", email_input)
|
||||
|
||||
# Поле Номер для СМС
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[8]")
|
||||
.locator(text_field_locator)
|
||||
)
|
||||
phone_input = TextInput(page, loc, "phone_input")
|
||||
self.add_content_item("phone_input", phone_input)
|
||||
|
||||
# Чекбокс "Подписка на Push-уведомления" - индекс 2
|
||||
checkbox_3 = Checkbox(
|
||||
page,
|
||||
|
|
@ -154,6 +159,7 @@ class AddLocalUserModalWindow(ModalWindowComponent):
|
|||
locator_button_close = self.page.get_by_role("button", name="Закрыть")
|
||||
self.add_button(locator_button_close, "close")
|
||||
|
||||
# Добавление компонента подтверждения/отмены заведения пользователя
|
||||
self.new_user_confirm = ConfirmComponent(page, " Отмена ", " Добавить ")
|
||||
|
||||
# Действия:
|
||||
|
|
@ -167,6 +173,26 @@ class AddLocalUserModalWindow(ModalWindowComponent):
|
|||
|
||||
self.get_content_item("active_directory_checkbox").uncheck(force=True)
|
||||
|
||||
def check_blocking_checkbox(self):
|
||||
"""Включает чек-бокс Блокировка."""
|
||||
|
||||
self.get_content_item("blocking_checkbox").check(force=True)
|
||||
|
||||
def uncheck_blocking_checkbox(self):
|
||||
"""Выключает чек-бокс Блокировка."""
|
||||
|
||||
self.get_content_item("blocking_checkbox").uncheck(force=True)
|
||||
|
||||
def check_push_notification_checkbox(self):
|
||||
"""Включает чек-бокс Push-уведомления."""
|
||||
|
||||
self.get_content_item("push_notification_checkbox").check(force=True)
|
||||
|
||||
def uncheck_push_notification_checkbox(self):
|
||||
"""Выключает чек-бокс Push-уведомления."""
|
||||
|
||||
self.get_content_item("push_notification_checkbox").uncheck(force=True)
|
||||
|
||||
def new_user(self, user_data):
|
||||
"""Заполняет форму и добавляет нового пользователя.
|
||||
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ class EditUserModalWindow(ModalWindowComponent):
|
|||
self.add_toolbar_button(locator_button_toolbar_close, "close")
|
||||
|
||||
# Добавление полей формы
|
||||
# Поле Имя
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[1]")
|
||||
|
|
@ -58,11 +59,13 @@ class EditUserModalWindow(ModalWindowComponent):
|
|||
name_input = TextInput(page, loc, "name_input")
|
||||
self.add_content_item("name_input", name_input)
|
||||
|
||||
# Поле Роль
|
||||
role_loc = self.page.locator(input_form_locator).get_by_role("combobox").nth(0)
|
||||
role_input = TextInput(page, role_loc, "role_input")
|
||||
self.add_content_item("role_input", role_input)
|
||||
self.add_content_item("roles_list", DropdownList(page))
|
||||
|
||||
# Поле Комментарий
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[4]")
|
||||
|
|
@ -71,6 +74,7 @@ class EditUserModalWindow(ModalWindowComponent):
|
|||
commentary_input = TextInput(page, loc, "commentary_input")
|
||||
self.add_content_item("commentary_input", commentary_input)
|
||||
|
||||
# Поле E-mail
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[5]")
|
||||
|
|
@ -79,6 +83,7 @@ class EditUserModalWindow(ModalWindowComponent):
|
|||
email_input = TextInput(page, loc, "email_input")
|
||||
self.add_content_item("email_input", email_input)
|
||||
|
||||
# Поле Номер для СМС
|
||||
loc = (
|
||||
self.page.locator(input_form_locator)
|
||||
.locator("xpath=div[6]")
|
||||
|
|
@ -140,6 +145,27 @@ class EditUserModalWindow(ModalWindowComponent):
|
|||
self.save_user_confirm = ConfirmComponent(page, " Отмена ", " Сохранить ")
|
||||
self.delete_user_confirm = ConfirmComponent(page, " Отмена ", " Удалить ")
|
||||
|
||||
# Действия:
|
||||
def check_blocking_checkbox(self):
|
||||
"""Включает чек-бокс Блокировка."""
|
||||
|
||||
self.get_content_item("blocking_checkbox").check(force=True)
|
||||
|
||||
def uncheck_blocking_checkbox(self):
|
||||
"""Выключает чек-бокс Блокировка."""
|
||||
|
||||
self.get_content_item("blocking_checkbox").uncheck(force=True)
|
||||
|
||||
def check_push_notification_checkbox(self):
|
||||
"""Включает чек-бокс Push-уведомления."""
|
||||
|
||||
self.get_content_item("push_notification_checkbox").check(force=True)
|
||||
|
||||
def uncheck_push_notification_checkbox(self):
|
||||
"""Выключает чек-бокс Push-уведомления."""
|
||||
|
||||
self.get_content_item("push_notification_checkbox").uncheck(force=True)
|
||||
|
||||
def close_window(self):
|
||||
"""Закрывает окно через кнопку 'Закрыть'."""
|
||||
|
||||
|
|
@ -227,6 +253,7 @@ class EditUserModalWindow(ModalWindowComponent):
|
|||
reset_password_button = self.get_button_by_name("reset_password")
|
||||
reset_password_button.click()
|
||||
|
||||
# Проверки:
|
||||
def check_content(self, user_name, role):
|
||||
"""Проверяет наличие и корректность элементов окна.
|
||||
|
||||
|
|
@ -273,19 +300,6 @@ class EditUserModalWindow(ModalWindowComponent):
|
|||
f"Modal window content item with name '{name}' is missing"
|
||||
)
|
||||
|
||||
# Дополнительная проверка состояния чекбоксов
|
||||
blocking_checkbox = self.get_content_item("blocking_checkbox")
|
||||
is_blocking_checked = blocking_checkbox.is_checked()
|
||||
assert not is_blocking_checked, (
|
||||
"Checkbox 'Блокировка' should not be checked by default"
|
||||
)
|
||||
|
||||
push_checkbox = self.get_content_item("push_notification_checkbox")
|
||||
is_push_checked = push_checkbox.is_checked()
|
||||
assert not is_push_checked, (
|
||||
"Checkbox 'Подписка на Push-уведомления' should be checked by default"
|
||||
)
|
||||
|
||||
self.check_button_visibility("save")
|
||||
self.check_button_visibility("delete")
|
||||
self.check_button_visibility("reset_password")
|
||||
|
|
|
|||
|
|
@ -183,8 +183,6 @@ class UsersTab(BasePage):
|
|||
add_user_window.check_active_directory_checkbox()
|
||||
self.add_modal_window("add_AD_user", "")
|
||||
add_user_window = self.get_modal_window("add_AD_user")
|
||||
add_user_window.new_user(user_data)
|
||||
return True
|
||||
|
||||
add_user_window.new_user(user_data)
|
||||
|
||||
|
|
@ -195,8 +193,9 @@ class UsersTab(BasePage):
|
|||
self.alert.check_alert_absence(' Новый пользователь \n успешно добавлен! ')
|
||||
is_added = True
|
||||
elif alert_type == "error":
|
||||
self.alert.check_alert_presence(f' Имя {user_data["name"]} уже используется ')
|
||||
self.alert.check_alert_absence(f' Имя {user_data["name"]} уже используется ')
|
||||
print(f' Имя {user_data["name"]} уже используется ')
|
||||
self.alert.check_alert_presence(f' Имя {user_data["name"]} уже \n используется ')
|
||||
self.alert.check_alert_absence(f' Имя {user_data["name"]} уже \n используется ')
|
||||
else:
|
||||
assert False, f"Got unexpected alert type {alert_type}"
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,179 @@
|
|||
"""Модуль тестов вкладки 'Пользователи'.
|
||||
|
||||
Содержит тесты для проверки функциональности
|
||||
работы с пользователями системы.
|
||||
"""
|
||||
|
||||
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 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
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
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()
|
||||
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
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()
|
||||
|
||||
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
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
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
|
||||
# @pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
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()
|
||||
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, "Ожидалась ошибка при создании существующего пользователя"
|
||||
|
|
@ -0,0 +1,212 @@
|
|||
"""Модуль тестов вкладки 'Пользователи'.
|
||||
|
||||
Содержит тесты для проверки функциональности
|
||||
работы с пользователями системы.
|
||||
"""
|
||||
|
||||
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:
|
||||
"""Класс тестов для проверки вкладки 'Пользователи'.
|
||||
|
||||
Тесты покрывают следующие сценарии:
|
||||
1. test_edit_user_window_content: Проверяет содержимое окна редактирования
|
||||
2. test_edit_user_window_close_buttons: Проверяет кнопки закрытия окна редактирования
|
||||
3. test_delete_user: Проверяет добавление и удаление пользователя
|
||||
4. test_reset_password: Проверяет сброс пароля пользователя
|
||||
5. test_edit_user_role: Проверяет изменение роли пользователя
|
||||
"""
|
||||
|
||||
@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", "TestUserAutoOperator", "TestUserAutoAdmin"]
|
||||
|
||||
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
|
||||
# @pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
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)
|
||||
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
def test_edit_user_window_close_buttons(self, browser: Page) -> None:
|
||||
"""Проверяет кнопки закрытия окна редактирования.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
"""
|
||||
|
||||
ut = UsersTab(browser)
|
||||
user_name, _ = ut.open_edit_user_page_by_index(0)
|
||||
ut.close_edit_user_window_by_toolbar_button(user_name)
|
||||
user_name, _ = ut.open_edit_user_page_by_index(0)
|
||||
ut.close_edit_user_window(user_name)
|
||||
|
||||
# @pytest.mark.develop
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
def test_delete_user(self, browser: Page, cleanup_users: None) -> None:
|
||||
"""Проверяет удаление пользователя.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
cleanup_users: Фикстура для автоматического удаления пользователя после теста.
|
||||
"""
|
||||
|
||||
user_data: Dict[str, str] = {"name": "TestUser", "role": "Администратор", "password": "987654321abcd"}
|
||||
|
||||
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_edit_user_page_by_user(user_data["name"], user_data["role"])
|
||||
ut.delete_user(user_data["name"])
|
||||
mp.click_subpanel_item("Пользователи")
|
||||
mp.click_subpanel_item("Пользователи")
|
||||
ut.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
||||
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
def test_reset_password(self, browser: Page, cleanup_users: None) -> None:
|
||||
"""Проверяет сброс пароля пользователя.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
cleanup_users: Фикстура для автоматического удаления пользователя после теста.
|
||||
"""
|
||||
|
||||
user_data: Dict[str, str] = {"name": "TestUserAutoAdmin", "role": "Администратор", "password": "123456789abcd"}
|
||||
|
||||
mp = MainPage(browser)
|
||||
ut = UsersTab(browser)
|
||||
|
||||
ut.open_add_user_window()
|
||||
ut.add_new_user(user_data)
|
||||
mp.click_subpanel_item("Пользователи")
|
||||
mp.click_subpanel_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_subpanel_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_subpanel_item("Пользователи")
|
||||
mp_1.click_subpanel_item("Пользователи")
|
||||
ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
||||
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
def test_edit_user_role(self, browser: Page, cleanup_users: None) -> None:
|
||||
"""Проверяет изменение роли пользователя.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
cleanup_users: Фикстура для автоматического удаления пользователя после теста.
|
||||
"""
|
||||
|
||||
user_data: Dict[str, str] = {"name": "TestUserAutoOperator", "role": "Оператор", "password": "1232456789abcd"}
|
||||
|
||||
mp = MainPage(browser)
|
||||
ut = UsersTab(browser)
|
||||
|
||||
ut.open_add_user_window()
|
||||
ut.add_new_user(user_data)
|
||||
mp.click_subpanel_item("Пользователи")
|
||||
mp.click_subpanel_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_subpanel_item("Пользователи")
|
||||
mp.click_subpanel_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_subpanel_item("Пользователи")
|
||||
mp.click_subpanel_item("Пользователи")
|
||||
ut.should_not_be_user_in_table(user_data["name"], new_user_data["role"])
|
||||
|
|
@ -4,7 +4,6 @@
|
|||
работы с пользователями системы.
|
||||
"""
|
||||
|
||||
from typing import Dict
|
||||
import pytest
|
||||
from playwright.sync_api import Page
|
||||
from pages.users_tab import UsersTab
|
||||
|
|
@ -17,14 +16,6 @@ class TestUsersTab:
|
|||
Тесты покрывают следующие сценарии:
|
||||
1. test_users_tab_content: Проверяет содержимое вкладки 'Пользователи'
|
||||
2. test_users_tab_toolbar_buttons: Проверяет кнопки на панели инструментов
|
||||
3. test_add_user_window_content: Проверяет содержимое окна добавления пользователя
|
||||
4. test_add_user_window_close_buttons: Проверяет кнопки закрытия окна добавления
|
||||
5 test_edit_user_window_content: Проверяет содержимое окна редактирования
|
||||
6. test_edit_user_window_close_buttons: Проверяет кнопки закрытия окна редактирования
|
||||
7. test_add_and_delete_user: Проверяет добавление и удаление пользователя
|
||||
8. test_add_AD_user: Проверяет добавление пользователя Active Directory
|
||||
9. test_reset_password: Проверяет сброс пароля пользователя
|
||||
10.test_edit_user_role: Проверяет изменение роли пользователя
|
||||
"""
|
||||
|
||||
@pytest.fixture(scope="function", autouse=True)
|
||||
|
|
@ -43,39 +34,6 @@ class TestUsersTab:
|
|||
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", "TestUserAutoOperator", "TestUserAutoAdmin"]
|
||||
|
||||
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.skip(reason=" Временно исключено из тестирования")
|
||||
def test_users_tab_content(self, browser: Page) -> None:
|
||||
"""Проверяет содержимое вкладки 'Пользователи'.
|
||||
|
|
@ -99,207 +57,3 @@ class TestUsersTab:
|
|||
|
||||
ut = UsersTab(browser)
|
||||
ut.should_be_toolbar_buttons()
|
||||
|
||||
# @pytest.mark.develop
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
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()
|
||||
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
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()
|
||||
|
||||
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.skip(reason=" Временно исключено из тестирования")
|
||||
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)
|
||||
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
def test_edit_user_window_close_buttons(self, browser: Page) -> None:
|
||||
"""Проверяет кнопки закрытия окна редактирования.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
"""
|
||||
|
||||
ut = UsersTab(browser)
|
||||
user_name, _ = ut.open_edit_user_page_by_index(0)
|
||||
ut.close_edit_user_window_by_toolbar_button(user_name)
|
||||
user_name, _ = ut.open_edit_user_page_by_index(0)
|
||||
ut.close_edit_user_window(user_name)
|
||||
|
||||
# @pytest.mark.develop
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
def test_add_and_delete_user(self, browser: Page, cleanup_users: None) -> None:
|
||||
"""Проверяет добавление и удаление пользователя.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
cleanup_users: Фикстура для автоматического удаления пользователя после теста.
|
||||
"""
|
||||
|
||||
user_data: Dict[str, str] = {"name": "TestUser", "role": "Администратор", "password": "987654321abcd"}
|
||||
|
||||
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_subpanel_item("Пользователи")
|
||||
mp.click_subpanel_item("Пользователи")
|
||||
ut.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
||||
|
||||
# @pytest.mark.develop
|
||||
@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
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": "Администраторы",
|
||||
"name": "Администратор",
|
||||
"role": "Администратор"}
|
||||
|
||||
ut = UsersTab(browser)
|
||||
|
||||
ut.open_add_user_window()
|
||||
ut.add_new_user(user_data)
|
||||
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
def test_reset_password(self, browser: Page, cleanup_users: None) -> None:
|
||||
"""Проверяет сброс пароля пользователя.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
cleanup_users: Фикстура для автоматического удаления пользователя после теста.
|
||||
"""
|
||||
|
||||
user_data: Dict[str, str] = {"name": "TestUserAutoAdmin", "role": "Администратор", "password": "123456789abcd"}
|
||||
|
||||
mp = MainPage(browser)
|
||||
ut = UsersTab(browser)
|
||||
|
||||
ut.open_add_user_window()
|
||||
ut.add_new_user(user_data)
|
||||
mp.click_subpanel_item("Пользователи")
|
||||
mp.click_subpanel_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_subpanel_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_subpanel_item("Пользователи")
|
||||
mp_1.click_subpanel_item("Пользователи")
|
||||
ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"])
|
||||
|
||||
#@pytest.mark.skip(reason=" Временно исключено из тестирования")
|
||||
def test_edit_user_role(self, browser: Page, cleanup_users: None) -> None:
|
||||
"""Проверяет изменение роли пользователя.
|
||||
|
||||
Args:
|
||||
browser: Экземпляр страницы Playwright.
|
||||
cleanup_users: Фикстура для автоматического удаления пользователя после теста.
|
||||
"""
|
||||
|
||||
user_data: Dict[str, str] = {"name": "TestUserAutoOperator", "role": "Оператор", "password": "1232456789abcd"}
|
||||
|
||||
mp = MainPage(browser)
|
||||
ut = UsersTab(browser)
|
||||
|
||||
ut.open_add_user_window()
|
||||
ut.add_new_user(user_data)
|
||||
mp.click_subpanel_item("Пользователи")
|
||||
mp.click_subpanel_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_subpanel_item("Пользователи")
|
||||
mp.click_subpanel_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_subpanel_item("Пользователи")
|
||||
mp.click_subpanel_item("Пользователи")
|
||||
ut.should_not_be_user_in_table(user_data["name"], new_user_data["role"])
|
||||
|
|
|
|||
Loading…
Reference in New Issue