Esempio n. 1
0
    def test_vk_auth_after_normal_registartion(self):
        os.environ["VK_APP_SECRET_KEY"] = "12345"
        vk_id = 42
        vk_concated_string = "blablabla=1&blabla=2"
        sig = md5(vk_concated_string.replace("&", "") + "12345")

        # Обычная регистрация, получаем токен:
        credentials = Credentials()
        credentials.phone = "+79263435016"
        credentials.password = "******"
        register_result = self.service.register(credentials)
        verification_code = register_result["verification"]["send_code"]
        self.service.verify_phone(credentials, verification_code)
        auth_result = self.service.authenticate(credentials)
        self.assertEqual(1, auth_result[0])
        token = auth_result[1]

        # Используем токен и укажем vk_id:
        new_credentials = Credentials()
        new_credentials.token = token
        new_credentials.vk_id = vk_id
        vk_auth_result = self.service.authenticate_vk(new_credentials, vk_concated_string, sig)
        self.assertTrue(isinstance(vk_auth_result, tuple))
        self.assertEqual(1, vk_auth_result[0])
        self.assertEqual(token, vk_auth_result[1])

        # Теперь можно и без токена:
        new_credentials = Credentials()
        new_credentials.vk_id = vk_id
        vk_auth_result = self.service.authenticate_vk(new_credentials, vk_concated_string, sig)
        self.assertTrue(isinstance(vk_auth_result, tuple))
        self.assertEqual(1, vk_auth_result[0])
        self.assertEqual(32, len(vk_auth_result[1]))
        self.assertNotEqual(token, vk_auth_result[1])
Esempio n. 2
0
 def test_vk_auth_fail(self):
     os.environ["VK_APP_SECRET_KEY"] = "12345"
     vk_id = 42
     vk_concated_string = "blablabla=1&blabla=2"
     sig = md5(vk_concated_string.replace("&", "") + "12345")
     credentials = Credentials()
     credentials.vk_id = vk_id
     self.assertRaises(
         IncorrectOAuthSignature,
         self.service.authenticate_vk, credentials, vk_concated_string, sig+"1"
     )
Esempio n. 3
0
 def build_credentials(cls, request: Request):
     """ Метод для создания экземпляра класса Credentials на основе предоставленного объекта Request
     :param request:
     :return:
     """
     credentials = Credentials()
     credentials.email = request.get("email").lower() if request.get("email", None) else None
     credentials.phone = normalize_phone_number(request.get("phone")) if request.get("phone", False) else None
     credentials.token_name = request.get("token_name", "")
     credentials.token = request.get("%stoken" % credentials.token_name, None)
     credentials.password = request.get("password", None)
     credentials.vk_id = request.get("vk_id", None)
     return credentials
Esempio n. 4
0
 def test_authenticate_vk(self):
     os.environ["VK_APP_SECRET_KEY"] = "12345"
     vk_id = 42
     vk_concated_string = "blablabla=1&blabla=2"
     sig = md5(vk_concated_string.replace("&", "") + "12345")
     credentials = Credentials()
     credentials.vk_id = vk_id
     response = self.app.get(
         "/v1/authenticate_vk/", {"vk_id": "42", "vk_concated_string": vk_concated_string, "signature": sig}
     )
     response = json.loads(response.body.decode())
     self.assertTrue(isinstance(response, list))
     self.assertTrue(len(response), 2)
     self.assertEqual(1, response[0])
     self.assertEqual(32, len(response[1]))
Esempio n. 5
0
 def build_credentials(cls, request: Request):
     """ Метод для создания экземпляра класса Credentials на основе предоставленного объекта Request
     :param request:
     :return:
     """
     credentials = Credentials()
     credentials.email = request.get("email").lower() if request.get(
         "email", None) else None
     credentials.phone = normalize_phone_number(
         request.get("phone")) if request.get("phone", False) else None
     credentials.token_name = request.get("token_name", "")
     credentials.token = request.get("%stoken" % credentials.token_name,
                                     None)
     credentials.password = request.get("password", None)
     credentials.vk_id = request.get("vk_id", None)
     return credentials
Esempio n. 6
0
    def test_init_registration_with_vk(self):
        os.environ["VK_APP_SECRET_KEY"] = "12345"
        vk_id = 42
        vk_concated_string = "blablabla=1&blabla=2"
        sig = md5(vk_concated_string.replace("&", "") + "12345")
        credentials = Credentials()
        credentials.vk_id = vk_id
        result = self.service.authenticate_vk(credentials, vk_concated_string, sig)
        self.assertTrue(isinstance(result, tuple))
        self.assertEqual(1, result[0])
        self.assertEqual(32, len(result[1]))
        token = result[1]

        # Используя токен, полученный при регистрации через вк авторизуемся стандартным путем:
        credentials.token = token
        auth_result = self.service.authenticate(credentials)
        self.assertTrue(isinstance(auth_result, tuple))
        self.assertEqual(1, auth_result[0])
        self.assertEqual(token, auth_result[1])