def confirm_auth(self): """ Подтверждение логина. Parameters ---------- - DeviceToken - AkbarsOnlineLoginOperationId - OtpCode (если NeedOtp равен true). В ответе получили RefreshToken.""" if self.session['NeedOtp'] == True: data = { "AkbarsOnlineLoginOperationId": self.session['AkbarsLoginOperationId'], "DeviceToken": self.session['DeviceToken'], "OtpCode": self.session['OtpCode'] } else: data = { "AkbarsOnlineLoginOperationId": self.session['AkbarsLoginOperationId'], "DeviceToken": self.session['DeviceToken'] } r = parametrized_post(endpoint=akbars_online_auth_login_confirm, body_payload=data) self.session['RefreshToken'] = r.json()['Result']['RefreshToken']
def test_credits_params(session): resp = http.parametrized_post( host=session['host'], endpoint=endpoints.url['creditapplications_parameters_v3'], header_payload={ 'SessionToken': session['sessiontoken'], 'Content-Type': r'application/json; charset=UTF-8' }) return resp
def send_otp(self): """ Отправка кода OTP, тут же проверка что у клиента есть номер телефона. Parameters ---------- - AkbarsOnlineLoginOperationId, который равен AkbarsLoginOperationId из get_auth""" data = { 'AkbarsOnlineLoginOperationId': self.session['AkbarsLoginOperationId'] } r = parametrized_post(endpoint=akbars_online_send_otp, body_payload=data) assert r.json()['Result']['Phone'] is not None, "Otp don't send"
def test_set_notification_settings(session): header_payload = { 'SessionToken': session.session_key, 'Content-Type': 'application/json; charset=utf-8', 'User-Agent': default_user_agent } body_payload = { 'SendOperationsCodesWithPush': True, 'SendMarketingNotificationWithPush': True, 'SendCardOperationsWithPush': True } r = parametrized_post(endpoint=notifications_settings, body_payload=body_payload, header_payload=header_payload) assert r.json()['Success'] == True, "Notification method didn't change"
def test_find_address(session): resp = http.parametrized_post(host=session['host'], endpoint=endpoints.url['find_address'], body_payload={ 'SearchTerm': 'г Казань ул Чистопольская 11', 'MaxCount': 5 }, header_payload={ 'SessionToken': session['sessiontoken'], 'Content-Type': r'application/json; charset=UTF-8' }) return resp
def send_otp(session): """ Функция для отправки отп Используется, если LoginInit вернул флаг "NeedOtp": true :param session: На вход принимает dict с атрибутами сессии пользователя :return: Возвращает json с телом респонса """ resp = http.parametrized_post( host=session['host'], endpoint=endpoints.url['sendOtp'], body_payload={'AkbarsOnlineLoginOperationId': session['operationid']}, header_payload={'Content-Type': r'application/json; charset=UTF-8'}) return resp
def test_get_address(session): r = parametrized_post(endpoint=find_address, body_payload=address_1, header_payload={ 'SessionToken': session.session_key, 'Content-Type': 'application/json; charset=utf-8', 'User-Agent': default_user_agent }) assert r.json()['Result'][0][ 'StreetFias'] == "63b26927-9a86-4b80-bba9-02b37135c686", "Request of address isn't pass or fias is changed " assert r.json()['Result'][0]['House'] == "11", "Incorrect house number" assert r.json()['Result'][0][ 'Value'] == "г Казань, ул Чистопольская, д 11", "Incorrect address" assert r.json()['Result'][0][ 'Granularity'] == 8, "Incorrect granularity (completeness of address)"
def get_token(self): """ Получение SessionToken. Parameters ---------- - DeviceToken - RefreshToken В ответе получаем заветный SessionToken""" data = { "DeviceToken": self.session['DeviceToken'], "GeoLocation": {}, "RefreshToken": self.session['RefreshToken'] } r = parametrized_post(endpoint=auth_create_session, body_payload=data) self.session_key = r.json()['Result']['SessionToken']
def remove_push_token(session): """ Функция для выхода пользователя из АБО Делает пуш токен невалидным, наверное :param session: На вход принимает dict с атрибутами сессии пользователя :return: Возвращает json с телом респонса """ resp = http.parametrized_post( host=session['host'], endpoint=endpoints.url['removePushToken'], data='{"PushToken":"' + session['pushtoken'] + '","DeviceToken":"' + session['devicetoken'] + '"}', header_payload={'Content-Type': r'application/json'}) return resp
def set_pin(session): """ Функция для установки пин-кода "девайса" В теле запроса передаётся refreshtoken, devicetoken, pin :param session: На вход принимает dict с атрибутами сессии пользователя :return: Возвращает json с телом респонса """ resp = http.parametrized_post(host=session['host'], endpoint=endpoints.url['setPin'], body_payload={ 'RefreshToken': session['refreshtoken'], 'Pin': session['testuser']['pin'], 'DeviceToken': session['devicetoken'] }) return resp
def create_session(session): """ Функция для создания токена сессии В теле запроса передаётся refreshtoken и pin :param session: На вход принимает dict с атрибутами сессии пользователя :return: Возвращает json с телом респонса """ resp = http.parametrized_post(host=session['host'], endpoint=endpoints.url['createSession'], body_payload={ 'RefreshToken': session['refreshtoken'], 'Pin': session['testuser']['pin'] }) session['sessiontoken'] = resp['Result']['SessionToken'] session['optime'] = datetime.now() return resp
def logout(session): """ Функция для выхода пользователя из АБО Затирает токен сессии :param session: На вход принимает dict с атрибутами сессии пользователя :return: Возвращает json с телом респонса """ resp = http.parametrized_post(host=session['host'], endpoint=endpoints.url['logout'], data='{"SessionToken":"' + session['sessiontoken'] + '"}', header_payload={ 'DeviceToken': session['devicetoken'], 'SessionToken': session['sessiontoken'], 'Content-Type': r'application/json' }) session['sessiontoken'] = '' return resp
def get_auth(self): """ Получение AkbarsLoginOperationId для использования в методе send_otp. Parameters ---------- - login - password Если параметр NeedOtp пришел true в ответе, то вызываем последотвательно методы send_otp и get_otp. Параметр AkbarsLoginOperationId из ответа записываем в словарь session """ data = { 'Login': self.current_user['Login'], 'Password': self.current_user['Password'] } r = parametrized_post(endpoint=akbars_online_auth_login_init, body_payload=data) self.session['AkbarsLoginOperationId'] = r.json( )['Result']['AkbarsLoginOperationId'] self.session['NeedOtp'] = r.json()['Result']['NeedOtp'] if self.session['NeedOtp'] == True: self.send_otp() self.get_otp()
def login_confirm(session): """ Подтверждение В теле запроса передаётся operationid, devicetoken и otp если нужно :param session: На вход принимает dict с атрибутами сессии пользователя :return: Возвращает json с телом респонса """ resp = http.parametrized_post(host=session['host'], endpoint=endpoints.url['loginConfirm'], body_payload={ 'AkbarsOnlineLoginOperationId': session['operationid'], 'DeviceToken': session['devicetoken'], 'otpCode': session['otp'] }) session['refreshtoken'] = resp['Result']['RefreshToken'] return resp
def login_init(session): """ Инициализация авторизации пользователя, приходит флаг для понимания, нужен ли ввод отп В теле передаёт логин и пароль пользователя :param session: На вход принимает dict с атрибутами сессии пользователя :return: Возвращает json с телом респонса """ resp = http.parametrized_post(host=session['host'], endpoint=endpoints.url['loginInit'], body_payload={ 'login': session['testuser']['login'], 'password': session['testuser']['password'] }) session['operationid'] = resp['Result']['AkbarsLoginOperationId'] session['needotp'] = resp['Result']['NeedOtp'] if session['needotp'] is True: send_otp(session) get_otp(session) return resp