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_change_password(self): credentials = Credentials() credentials.token = self.email_account_token self.assertRaises(IncorrectPassword, self.service.set_new_password, credentials, "blabla", "123", "456") self.assertRaises(NewPasswordsMismatch, self.service.set_new_password, credentials, "qwerty123", "123", "456") change_password_result = self.service.set_new_password(credentials, "qwerty123", "12345", "12345") self.assertTrue(isinstance(change_password_result, dict)) self.assertTrue("new_password" in change_password_result) self.assertEqual("email", change_password_result["new_password"]["send_via"]) self.assertEqual("*****@*****.**", change_password_result["new_password"]["send_address"]) self.assertEqual("12345", change_password_result["new_password"]["send_password"]) credentials = Credentials() credentials.token = self.phone_account_token self.assertRaises(IncorrectPassword, self.service.set_new_password, credentials, "blabla", "123", "456") self.assertRaises(NewPasswordsMismatch, self.service.set_new_password, credentials, "qwerty123", "123", "456") change_password_result = self.service.set_new_password(credentials, "qwerty123", "12345", "12345") self.assertTrue(isinstance(change_password_result, dict)) self.assertTrue("new_password" in change_password_result) self.assertEqual("phone", change_password_result["new_password"]["send_via"]) self.assertEqual("+79263435016", change_password_result["new_password"]["send_address"]) self.assertEqual("12345", change_password_result["new_password"]["send_password"])
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 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_auth_by_token(self): auth_result = self.service.authenticate(self.email_credentials) self.assertTrue(isinstance(auth_result, tuple)) self.assertEqual(1, auth_result[0]) self.assertEqual(32, len(auth_result[1])) token = auth_result[1] new_credentials = Credentials() new_credentials.token = token auth_result = self.service.authenticate(new_credentials) self.assertTrue(isinstance(auth_result, tuple)) self.assertEqual(1, auth_result[0]) self.assertEqual(token, token) # При авторизации по токену, токен не меняется: auth_result = self.service.authenticate(new_credentials) self.assertTrue(isinstance(auth_result, tuple)) self.assertEqual(1, auth_result[0]) self.assertEqual(token, token)
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])
def test_auth_by_domain_specific_token(self): self.email_credentials.token_name = "test" auth_result = self.service.authenticate(self.email_credentials) self.assertTrue(isinstance(auth_result, dict)) self.assertEqual(1, auth_result["authentication"]["id"]) self.assertEqual(32, len(auth_result["authentication"]["testtoken"])) token = auth_result["authentication"]["testtoken"] new_credentials = Credentials() new_credentials.token = token new_credentials.token_name = "test" auth_result = self.service.authenticate(new_credentials) self.assertTrue(isinstance(auth_result, dict)) self.assertEqual(1, auth_result["authentication"]["id"]) self.assertEqual(32, len(auth_result["authentication"]["testtoken"])) # При авторизации по токену, токен не меняется: auth_result = self.service.authenticate(new_credentials) self.assertTrue(isinstance(auth_result, dict)) self.assertEqual(1, auth_result["authentication"]["id"]) self.assertEqual(token, auth_result["authentication"]["testtoken"])
def test_test(self): """ Регрессионный тест Странная особенность - если при повторной попытке зарегистрироваться указана недействительная кука - то ограничение по уникальности логина не срабатывает, получаются дубли Такого быть не должно. Данный тест проверяет, что в системе предусмотрена жесткая проверка на наличие указанного логина перед вставкой новых записей :return: """ credentials1 = Credentials() credentials1.email = "*****@*****.**" credentials1.password = "******" register_result1 = self.service.register(credentials1) verification_code1 = register_result1["verification"]["send_code"] self.service.verify_email(credentials1, verification_code1) credentials2 = Credentials() credentials2.email = "*****@*****.**" credentials2.token = "blablbalblabdlablblad" credentials2.password = "******" self.assertRaises(AlreadyRegistred, lambda: self.service.register(credentials2))