示例#1
0
    def test_authorization_by_phone_incorrect_user_disabled(self, type_password="******"):
        """
        Title: Я не могу войти в систему по телефону, если  мой пользователь в статусе DISABLED
        (пользователь Заблокирован)
        Description:
        * Отображается соответствующее сообщение
        """
        service_log.run(self)
        status = "DISABLED"
        user = databases.db1.accounting.get_not_enabled_user(status=status)[0]
        AccountingMethods.save_user_password(user_id=user["id"], hash_passwd=user["code_value"])

        # Устанавливаем новый пароль для пользователя
        default_new_passwd = AccountingMethods.get_default_password()
        hash_res_new = generate_sha256(default_new_passwd, user["salt"])
        databases.db1.accounting.update_user_password(user["id"], hash_res_new)

        # Переходим на страницу авторизации
        self.go_authorization_page(self.driver)
        obj_phone, obj_password, obj_submit_button = self.get_data_authorization(self.driver)
        changed_passwd = self.get_password(type_passwd=type_password, source_passwd=default_new_passwd)
        changed_phone = self.get_phone(type_phone=self.type_phone, source_phone=user["phone"])

        # Вводим данные на авторизацию
        self.send_password(password_object=obj_password, password_number=changed_passwd)
        self.send_phone(phone_object=obj_phone, phone_number=changed_phone)

        # Нажатие на кнопку авторизации
        self.submit_button(obj_submit_button)

        # Проверка блокировки пользователя
        Navigate.get_element_navigate(self.driver, self.check_auth.ERR_CHECK_DISABLED)
        Navigate.go_to_main_page(self.driver)
        self.check_header_widget_visitor(self.driver)
示例#2
0
 def get_user_card_web_status(driver, web_status_xpath, user_info, online_status='В сети'):
     if user_info["online_status"] == 'ONLINE':
         p = Navigate.get_element_navigate(driver, web_status_xpath % online_status)
     else:
         p = Navigate.get_element_navigate(driver, web_status_xpath %
                                           HelpUserCardMethods.need_time(user_info['last_activity_timestamp']))
     return p
示例#3
0
 def check_main_menu_category(self, driver, section_tree, category_dict):
     """ Проверка категорий и их картинок в меню раздела
     """
     for section in section_tree:
         section_name = section.localizedName
         if section_name == 'Торговое оборудование':
             continue
         # Кликаем на раздел, чтобы открыть меню раздела
         section_clk_menu = Navigate.get_element_navigate(driver, self.xpath_section % section_name, mode=None)
         Auth.click_button(section_clk_menu)
         # Проверка, что раздел стал открытым
         Navigate.get_element_navigate(driver, self.xpath_section_menu % section_name, mode=None)
         # Проверка, что открылось меню раздела
         Navigate.get_element_navigate(driver, Navigate.check_main.SECTION_MENU, mode=None)
         # Получаем категории раздела
         category_id_list = self.get_categories_list(section)
         category_tree = self.get_categories_tree(category_dict, category_id_list)
         cat_name_list = [category.localizedName for category in category_tree]
         # Получить объекты категорий меню
         cat_iu_list = self.get_categories(driver)
         name_ui_list = [category.text.encode('utf-8') for category in cat_iu_list]
         # Проверка количества возвращенных апи и показанных категорий
         count_ui_cat = len(cat_iu_list)
         count_db_cat = len(category_tree)
         err_msg = "Количество разделов в главном меню='%d' больше с количества разделов из БД='%d'"
         self.assertLessEqual(count_ui_cat, count_db_cat, err_msg % (count_ui_cat, count_db_cat))
         sub = lambda db, ui: filter(lambda x: x not in db, ui)
         # Берем максимум 6 категорий отображаемых в меню
         name_ui = name_ui_list[:6]
         sub_cat = sub(cat_name_list, name_ui)
         err_msg = "В разделе '%s' содержится категория '%s', которой нет в ответе АПИ: %s"
         self.assertFalse(sub_cat, err_msg % (section_name, sub_cat, cat_name_list))
示例#4
0
 def get_user_store_photo_in_cont(driver, path, photo_xpath, logo_id):
     if logo_id is None:
         p = Navigate.get_element_navigate(driver, path + Navigate.check_user_contact.US_LOGO_STUB, sleep=0.1,
                                           mode=None)
     else:
         p = Navigate.get_element_navigate(driver, path + photo_xpath % logo_id, sleep=0.1, mode=None)
     return p
示例#5
0
 def get_sub_categories(driver):
     """
     Получить под-категории из категории раздела
     :param driver:
     :return:
     """
     Navigate.get_element_navigate(driver, Navigate.check_main.MAIN_MENU_SUB_CATEGORY, mode=None)
     return driver.find_elements_by_xpath(Navigate.check_main.MAIN_MENU_SUB_CATEGORY_ABSTRACT)
示例#6
0
 def get_user_store_name(driver, path, name_xpath, name):
     if name is None:
         p = Navigate.get_element_navigate(driver, path + Navigate.check_user_contact.US_WITHOUT_NAME, sleep=0.1,
                                           mode=None)
     else:
         Navigate.get_element_navigate(driver, path + Navigate.check_user_contact.US_LABEL_NAME, sleep=0.1, mode=None)
         p = Navigate.get_element_navigate(driver, path + name_xpath % name, sleep=0.1, mode=None)
     return p
示例#7
0
 def check_no_add_contact_btn(self, driver):
     f = False
     try:
         Navigate.get_element_navigate(driver, Navigate.click_user_contact.BTN_ADD_CONTACT, mode=None, sleep=0.1)
         f = True
     except Exception:
         pass
     self.assertFalse(f, "Появилась кнопка добавить пользователя")
示例#8
0
 def check_form_create_user(self, driver):
     """
     Проверка формы Создание пользователя в бэк-офисе
     :param driver:
     :return:
     """
     for title in self.USER_FORM_TITLES:
         HNCK.get_element_navigate(driver, HNCK.check_back_users.NAME_FIELDS % title)
示例#9
0
 def get_back_auth_data(driver):
     """
     Получение форм и кнопки войти на странице авторизации бэк-офиса
     :param driver:
     :return:
     """
     obj_login = HNCK.get_element_navigate(driver, HNCK.input_back_auth.FORM_LOGIN)
     obj_pass = HNCK.get_element_navigate(driver, HNCK.input_back_auth.FORM_PASS)
     obj_submit = HNCK.get_element_navigate(driver, HNCK.click_back_auth.BTN_SUBMIT)
     return obj_login, obj_pass, obj_submit
示例#10
0
 def get_sent_success_btn(driver):
     """
     Получить объекты кнопок На страницу товара и В чат
     Проверка сообщения об успешной отправке
     :param driver:
     :return:
     """
     Navigate.get_element_navigate(driver, Navigate.check_good.MSG_SENT_SUCCESS, mode=None)
     btn_to_good = Navigate.get_element_navigate(driver, Navigate.click_good.BTN_TO_CARD_GOOD, mode=None)
     btn_to_chat = Navigate.get_element_navigate(driver, Navigate.click_good.BTN_TO_CHAT, mode=None)
     return btn_to_good, btn_to_chat
示例#11
0
 def check_card_user_in_search_contact(self, driver, user):
     path_fg = Navigate.check_user_contact.USER_IN_SEARCH
     service_log.put("Start checking user card in search contact by user_id='%s'" % user["id"])
     Navigate.get_element_navigate(driver, path_fg, mode=None, e_msg="Не найдена карточка пользователя в поисковй выдаче")
     self.get_user_card_photo_in_cont(driver, path_fg, Navigate.check_user_contact.FU_USER_PHOTO_IN_SEARCH,
                                      user["avatar_id"])
     HelpUserCardCheckMethods.get_user_card_name(driver, path_fg + Navigate.check_user_contact.FU_USER_NAME,
                                                 user["display_name"])
     HelpUserCardCheckMethods.get_user_card_on_off_line(driver, path_fg + Navigate.check_user_contact.FU_USER_STATUS,
                                                        user)
     service_log.put("Success checking user card in search contact by user_id='%s'" % user["id"])
示例#12
0
 def get_all_fields(driver):
     """
     Получить все input объекты формы обратной связи
     :return:
     """
     obj = dict()
     obj['name'] = HNCM.get_element_navigate(driver, HNCM.input_contacts.NAME)
     obj['phone'] = HNCM.get_element_navigate(driver, HNCM.input_contacts.PHONE)
     obj['email'] = HNCM.get_element_navigate(driver, HNCM.input_contacts.EMAIL)
     obj['message'] = HNCM.get_element_navigate(driver, HNCM.input_contacts.MESSAGE)
     return obj
示例#13
0
 def do_login(driver, sleep=2):
     """ Авторизоваться нажав на кнопку с текущей страницы.
     :param driver: ссылка на драйвер
     :param sleep: ожидание
     """
     # time.sleep(sleep)
     reg_log_btn = HelpNavigateCheckMethods.get_element_navigate(driver, HelpAuthData.click_main.BUTTON_REG_AN_LOGIN)
     HelpAuthCheckMethods.click_button(reg_log_btn)
     login_button = HelpNavigateCheckMethods.get_element_navigate(driver, HelpAuthData.click_main.BUTTON_LOGIN)
     login_button.is_displayed()
     login_button.is_enabled()
     HelpNavigateCheckMethods.element_click(driver, login_button)
示例#14
0
 def get_restore_password_by_email_success(driver):
     """ Получить элементы формы восстановления пароля по емайл, письмо тправлено
     :param driver: ссылка на драйвер
     :return: словарь со ссылками на элементы формы восстановления пароля
     """
     restore_email = {
         "restore_title": Navigate.get_element_navigate(driver, Navigate.check_restore.TITLE_INPUT_PASS_PAGE),
         "restore_text": Navigate.get_element_navigate(driver, Navigate.check_restore.TEXT_NEW_PASS_SET),
         "start_work_btn": Navigate.get_element_navigate(driver, Navigate.click_restore.BTN_START_WORK),
     }
     service_log.put("Get elements form restore %s" % str(restore_email))
     return restore_email
示例#15
0
 def get_restore_email_sent_form(driver):
     """ Получить элементы формы восстановления пароля по емайл, письмо тправлено
     :param driver: ссылка на драйвер
     :return: словарь со ссылками на элементы формы восстановления пароля
     """
     restore_email = {
         "restore_title": Navigate.get_element_navigate(driver, Navigate.check_restore.TITLE_RESTORE_PAGE),
         "restore_text": Navigate.get_element_navigate(driver, Navigate.check_restore.TEXT_SENT_TO_EMAIL),
         "to_main_btn": Navigate.get_element_navigate(driver, Navigate.click_restore.BTN_TO_MAIN),
     }
     service_log.put("Get elements form restore %s" % str(restore_email))
     return restore_email
示例#16
0
 def check_user_store(self, driver, link_db, user):
     sh = lambda u: 0 if u['shop_id'] is None else u['shop_id']
     st = link_db.accounting.get_shop_details_by_shop_id(sh(user))
     store = self.get_store_list(st)
     path_fg = Navigate.check_user_contact.USER_STORE
     service_log.put("Start checking user store in active contact by user_id='%s'" % user['id'])
     Navigate.get_element_navigate(driver, path_fg, sleep=1, mode=None, e_msg="Не найден блок инфо о магазине")
     self.get_user_store_photo_in_cont(driver, path_fg, Navigate.check_user_contact.US_LOGO, store['logo_id'])
     self.get_user_store_name(driver, path_fg, Navigate.check_user_contact.US_NAME, store["name"])
     self.get_user_store_address(driver, path_fg, Navigate.check_user_contact.US_ADDRESS, store["address"])
     self.get_user_store_description(driver, path_fg, Navigate.check_user_contact.US_DESCRIPTION, store["description"])
     Navigate.get_element_navigate(driver, Navigate.click_user_contact.IN_SHOP % user['id'])
示例#17
0
 def get_user_store_description(driver, path, name_xpath, description):
     p = False
     if description is None:
         try:
             Navigate.get_element_navigate(driver, path + name_xpath % '', sleep=0.1, mode=None)
             p = True
         except Exception:
             pass
         assert p is False, "Найдено поле описание, в базе поле описание пусто, поля не должно быть"
     else:
         p = Navigate.get_element_navigate(driver, path + name_xpath % description, sleep=0.1, mode=None)
     return p
示例#18
0
 def get_restore_email_form(driver):
     """ Получить элементы формы восстановления пароля по емайл
     :param driver: ссылка на драйвер
     :return: словарь со ссылками на элементы формы восстановления пароля
     """
     restore_email = {
         "restore_title": Navigate.get_element_navigate(driver, Navigate.check_restore.TITLE_RESTORE_PAGE),
         "email_label": Navigate.get_element_navigate(driver, Navigate.check_restore.LABEL_EMAIL),
         "email_input": Navigate.get_element_navigate(driver, Navigate.input_restore.INPUT_EMAIL),
         "restore_btn": Navigate.get_element_navigate(driver, Navigate.click_restore.BTN_RESTORE),
     }
     service_log.put("Get elements form restore %s" % str(restore_email))
     return restore_email
示例#19
0
 def check_delete_first_user_in_cl(self, driver, user_id, fav_usr, link_db):
     fav_users_list_old = link_db.accounting.get_fav_user_in_cl_user(user_id, fav_usr["id"])
     self.assertNotEqual(len(fav_users_list_old), 0 , "Пользователя нет в БД контактах")
     self.delete_first_user_in_cl(driver, fav_usr)
     fav_users_list_new = link_db.accounting.get_fav_user_in_cl_user(user_id, fav_usr["id"])
     self.assertEqual(len(fav_users_list_new), 0, "Пользователь есть в БД контактах: '%s'" % fav_users_list_new)
     HelpUserContactsCheckMethods.check_user_no_in_cl(self, driver, fav_usr["id"])
     driver.refresh()
     Navigate.progress(driver)
     HelpUserContactsCheckMethods.check_user_no_in_cl(self, driver, fav_usr["id"])
     Navigate.get_page(driver, Navigate.path_buyer.URL_BUYER % fav_usr["id"])
     Navigate.get_element_navigate(driver, Navigate.click_user_contact.IN_CONTACT_USER, sleep=0.1, mode=None)
     driver.back()
示例#20
0
 def set_email(driver, email):
     """
     Вводим емайл и сохраняем
     :param email:
     :return:
     """
     input_email = HNCM.get_element_navigate(driver, HNCM.input_settings.EMAIL_ABSTRACT)
     input_email.click()
     ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).key_down(Keys.DELETE).\
         key_up(Keys.DELETE).perform()
     input_email.send_keys(email)
     submit_btn = HNCM.get_element_navigate(driver, HNCM.path_settings.PATH_COMMON_INFO +
                                            HNCM.click_settings.SAVE_BUTTON)
     HelpAuthCheckMethods.click_button(submit_btn, sleep=3)
示例#21
0
 def get_breadcrumbs(driver, xpath_breads=HelpNavigateCheckMethods.click_good.BREADCRUMBS):
     """
     Получить названия хлебных крошек
     :param driver:
     :return:
     """
     service_log.put("Get breadcrumbs.")
     bread_dict_value = {
         "root_cat": HelpNavigateCheckMethods.get_element_navigate(driver, xpath_breads % 1).text.encode("utf-8"),
         "cat": HelpNavigateCheckMethods.get_element_navigate(driver, xpath_breads % 2).text.encode("utf-8"),
         "final_cat": HelpNavigateCheckMethods.get_element_navigate(driver, xpath_breads % 3).text.encode("utf-8"),
     }
     service_log.put("Get breadcrumbs - successful")
     return bread_dict_value
示例#22
0
 def check_menu_profile_widget_total(self, driver, display_name, sleep=5):
     """ Проверка меню профиля.
     :param driver: ссылка на драйвер
     :param display_name: имя пользователя
     """
     disp_name = None
     try:
         disp_name = HelpNavigateCheckMethods.get_element_navigate(driver, self.set_text_xpath_by_menu(display_name))
     except UnicodeEncodeError:
         name_encode = display_name.encode("utf-8")
         disp_name = HelpNavigateCheckMethods.get_element_navigate(driver, self.set_text_xpath_by_menu(name_encode))
     self.assertIsNotNone(disp_name)
     self.assertIsNotNone(HelpNavigateCheckMethods.get_element_navigate(driver, self.MENU_PROFILE_SETTINGS))
     self.assertIsNotNone(HelpNavigateCheckMethods.get_element_navigate(driver, self.MENU_PROFILE_ACTION_HEADER))
示例#23
0
 def check_main_menu_section(self, driver, section_tree, section_menu_name=None):
     """ Проверка главного меню на наличие нужных разделов и остутсвие ненужных
     :param driver:
     :param section_tree:
     """
     xpath = lambda sn, snm: self.xpath_section_menu % sn if sn == snm else self.xpath_section % sn
     # Проверка, что из апи пришли разделы и они есть в главном меню
     for section in section_tree:
         section_name = section.localizedName
         Navigate.get_element_navigate(driver, xpath(section_name, section_menu_name), mode=None)
     # Проверка количества возвращенных апи и показанных разделов
     count_ui_sections = len(self.get_sections(driver))
     count_db_sections = len(section_tree)
     err_msg = "Количество разделов в главном меню='%d' не совпало с количеством разделов из БД='%d'"
     self.assertEqual(count_ui_sections, count_db_sections, err_msg % (count_ui_sections, count_db_sections))
示例#24
0
 def check_users(self, driver, pages, users_account, stop_test_pages=None):
     """
     Проверка всей информации в бек-офисе о пользователе построчно
     :param driver:
     :param pages:
     :param users_account:
     :return:
     """
     count_page = 0
     for page in range(pages):
         count_page += 1
         ids = driver.find_elements_by_xpath(HNCK.check_back_users.IDS)
         for id in ids:
             id = id.text.encode('utf-8')[4:]
             user = databases.db1.accounting.get_user_by_account_id(id)[0]
             self.check_user_in_db_query(user, users_account)
             user_account = databases.db1.accounting.get_user_account_info_by_id(user["id"])[0]
             count = self.get_info_line(driver, user)
             msg_count = "Найдено %s строк с упоминанием ID %s"
             self.assertEqual(len(count), 1, msg_count % (len(count), user["id"]))
             info_user_back = self.get_info_user_by_line(driver, count[0])
             user_roles = databases.db1.accounting.get_user_role_by_id(user_id=user["id"])
             info_user_db = self.get_info_user_by_db(user, user_account, HPSCM.get_user_role_ui(user_roles))
             msg_check = "Данные из бэк офиса: '%s' не совпали с данными и базы: '%s'"
             self.assertEqual(info_user_back, info_user_db, msg_check % (info_user_back, info_user_db))
         if stop_test_pages == count_page:
             break
         if pages > 1:
             next_pag = HNCK.get_element_navigate(driver, HNCK.click_back_users.PAG_NEXT)
             FrontAuthCheckMethods.click_button(next_pag)
示例#25
0
 def get_select_param(driver, param=''):
     """
     Получить параметр для поиска пользователя
     :param driver:
     :return:
     """
     return HNCK.get_element_navigate(driver, HNCK.click_back_users.SELECT_PARAM % param)
示例#26
0
 def get_select_role(driver, role=''):
     """
     Получить роль для поиска пользователя
     :param driver:
     :return:
     """
     return HNCK.get_element_navigate(driver, HNCK.click_back_users.SELECT_ROLE % role)
示例#27
0
 def check_success_create(self, driver, user_id):
     """
     Проверка успешного создания пользователя
     :param driver:
     :return:
     """
     return HNCK.get_element_navigate(driver, HNCK.check_back_users.CREATED_USER_ID % user_id)
示例#28
0
 def cat_sub_cat(self, driver, name_ui, category_dict, section, section_name):
     """
     Проверка подкатегории у которой родительская категория - категория
     :param driver:
     :param name_ui:
     :param category_dict:
     :param section:
     :param section_name:
     :return:
     """
     # Получаем категории раздела
     category_id_list = self.get_categories_list(section)
     category_tree = self.get_categories_tree(category_dict, category_id_list)
     # Проверка, что из апи пришли категории которые принадлежат секции меню
     for name in name_ui:
         service_log.put("CHECK. Sub-category in category '%s'" % name)
         cat_clk = Navigate.get_element_navigate(driver, self.xpath_category % name, mode=None)
         Auth.click_button(cat_clk)
         category = [cat for cat in category_tree if cat.localizedName == name]
         # Получаем подкатегории из категории раздела
         sub_id_list = self.get_categories_list(category[0])
         sub_tree = self.get_categories_tree(category_dict, sub_id_list)
         sub_name_list = [sub.localizedName for sub in sub_tree]
         # Проверка возвращенных апи и показанных подкатегорий
         obj_ui_sub = self.get_sub_categories(driver)
         name_ui_sub = [obj.text.encode('utf-8') for obj in obj_ui_sub]
         # Получаем названия подкатегорий UI, которых нет в списке подкатегорий полученном из БД
         sub = lambda db, ui: filter(lambda x: x not in db, ui)
         sub_cat = sub(sub_name_list, name_ui_sub)
         err_msg = "В '%s -> %s' содержится подкатегория '%s', которой нет в ответе АПИ: %s"
         self.assertFalse(sub_cat, err_msg % (section_name, name, sub_cat, sub_name_list))
         service_log.put("PASS. Sub-category in category '%s'" % name)
示例#29
0
 def get_input_field_find(driver):
     """
     Получить строку поиска
     :param driver:
     :return:
     """
     return HNCK.get_element_navigate(driver, HNCK.input_back_users.FIELD_FIND)
示例#30
0
 def get_last_msg2(driver):
     """ Получить последние сообщение чата (не удаляем пробелы и переносы строки)
     :param driver: ссфлка на драйвер
     :return:
     """
     link_msg = Navigate.check_chat.LAST_MSG
     return Navigate.get_element_navigate(driver, link_msg).text.encode('utf-8')