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])
def test_set_and_verify_new_phone_when_phone_verified(self): result = self.service.set_new_phone(self.phone_credentials, "+79212225577") verification_code = result["verification"]["send_code"] new_phone_credentials = Credentials() new_phone_credentials.phone = "+79212225577" new_phone_credentials.password = self.phone_credentials.password self.assertRaises(IncorrectLogin, lambda: self.service.authenticate(new_phone_credentials)) self.service.authenticate(self.phone_credentials) self.service.verify_phone(self.phone_credentials, verification_code) self.service.authenticate(new_phone_credentials) self.assertRaises(IncorrectLogin, lambda: self.service.authenticate(self.phone_credentials))
def test_fail_phone_verification_and_delete_account(self): credentials = Credentials() credentials.phone = "+79263435016" credentials.password = "******" register_result = self.service.register(credentials) verification_code = register_result["verification"]["send_code"] self.assertRaises(IncorrectVerificationCode, lambda: self.service.verify_phone(credentials, "blablabla")) self.assertRaises(IncorrectVerificationCode, lambda: self.service.verify_phone(credentials, "blablabla")) self.assertRaises(IncorrectVerificationCode, lambda: self.service.verify_phone(credentials, "blablabla")) self.assertRaises(IncorrectVerificationCodeFatal, lambda: self.service.verify_phone(credentials, "blablabla")) self.assertRaises(IncorrectLogin, lambda: self.service.verify_phone(credentials, "blablabla")) self.assertRaises(IncorrectLogin, lambda: self.service.verify_phone(credentials, verification_code))
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
def test_phone_verification_with_third_attempt(self): credentials = Credentials() credentials.phone = "+79263435016" credentials.password = "******" register_result = self.service.register(credentials) verification_code = register_result["verification"]["send_code"] self.assertRaises(IncorrectVerificationCode, lambda: self.service.verify_phone(credentials, "blablabla")) self.assertRaises(IncorrectVerificationCode, lambda: self.service.verify_phone(credentials, "blablabla")) self.assertTrue(self.service.verify_phone(credentials, verification_code)) auth_result = self.service.authenticate(credentials) self.assertTrue(isinstance(auth_result, tuple)) self.assertEqual(1, auth_result[0]) self.assertEqual(32, len(auth_result[1]))
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
def test_fail_to_verify_phone_when_email_verified_doesnt_remove_credentials(self): result = self.service.set_new_phone(self.email_credentials, "+79164143212") verification_code = result["verification"]["send_code"] self.assertRaises(IncorrectVerificationCode, self.service.verify_phone, self.email_credentials, "bla") self.assertRaises(IncorrectVerificationCode, self.service.verify_phone, self.email_credentials, "bla") self.assertRaises(IncorrectVerificationCode, self.service.verify_phone, self.email_credentials, "bla") self.assertRaises(IncorrectVerificationCodeFatal, self.service.verify_phone, self.email_credentials, "bla") self.assertRaises(NoVerificationProcess, self.service.verify_phone, self.email_credentials, verification_code) self.service.authenticate(self.email_credentials) result = self.service.set_new_phone(self.email_credentials, "+79164143212") verification_code = result["verification"]["send_code"] self.service.verify_phone(self.email_credentials, verification_code) new_phone_credentials = Credentials() new_phone_credentials.phone = "+79164143212" new_phone_credentials.password = self.email_credentials.password auth_result = self.service.authenticate(new_phone_credentials) self.assertTrue(isinstance(auth_result, tuple)) self.assertEqual(1, auth_result[0])
def test_init_registration_process_with_phone(self): credentials = Credentials() credentials.phone = "+79263435016" credentials.password = "******" register_result = self.service.register(credentials) self.assertTrue(isinstance(register_result, dict)) self.assertTrue("verification" in register_result) self.assertTrue("send_code" in register_result["verification"]) self.assertTrue("send_via" in register_result["verification"]) self.assertTrue("send_address" in register_result["verification"]) self.assertEqual("phone", register_result["verification"]["send_via"]) self.assertEqual("+79263435016", register_result["verification"]["send_address"]) verification_code = register_result["verification"]["send_code"] self.assertRaises(IncorrectLogin, lambda: self.service.authenticate(credentials)) self.assertTrue(self.service.verify_phone(credentials, verification_code)) auth_result = self.service.authenticate(credentials) self.assertTrue(isinstance(auth_result, tuple)) self.assertEqual(1, auth_result[0]) self.assertEqual(32, len(auth_result[1]))