예제 #1
0
    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']
예제 #2
0
 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
예제 #3
0
    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"
예제 #4
0
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"
예제 #5
0
 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
예제 #6
0
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
예제 #7
0
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)"
예제 #8
0
    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']
예제 #9
0
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
예제 #10
0
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
예제 #11
0
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
예제 #12
0
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
예제 #13
0
    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()
예제 #14
0
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
예제 #15
0
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