def test_registration_with_autogenerated_password(self): credentials = Credentials() self.assertRaises(IncorrectLogin, lambda: self.service.register(credentials)) credentials.email = "*****@*****.**" register_result = self.service.register(credentials) self.assertTrue(isinstance(register_result, dict)) self.assertTrue("verification" in register_result) self.assertTrue("id" in register_result["verification"]) self.assertTrue("password" in register_result["verification"]) 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(1, register_result["verification"]["id"]) self.assertEqual(8, len(register_result["verification"]["password"])) self.assertEqual("email", register_result["verification"]["send_via"]) self.assertEqual("*****@*****.**", register_result["verification"]["send_address"]) verification_code = register_result["verification"]["send_code"] credentials2 = Credentials() credentials2.email = "*****@*****.**" self.assertRaises(IncorrectLogin, lambda: self.service.authenticate(credentials2)) verification_result = self.service.verify_email(credentials2, verification_code) self.assertTrue(isinstance(verification_result, dict)) self.assertTrue("verification" in verification_result) self.assertTrue("result" in verification_result["verification"]) self.assertEqual(True, verification_result["verification"]["result"]) self.assertTrue("password" in verification_result["verification"]) self.assertEqual(8, len(verification_result["verification"]["password"])) self.assertRaises(IncorrectPassword, lambda : self.service.authenticate(credentials2)) credentials2.password = verification_result["verification"]["password"] auth_result = self.service.authenticate(credentials2) self.assertTrue(isinstance(auth_result, dict)) self.assertEqual(1, auth_result["authentication"]["id"]) self.assertEqual(32, len(auth_result["authentication"]["token"]))
def test_second_attempt_to_start_registration_process(self): credentials1 = Credentials() credentials1.email = "*****@*****.**" credentials1.password = "******" register_result1 = self.service.register(credentials1) verification_code1 = register_result1["verification"]["send_code"] credentials2 = Credentials() credentials2.email = "*****@*****.**" credentials2.password = "******" register_result2 = self.service.register(credentials2) verification_code2 = register_result2["verification"]["send_code"] self.assertNotEqual(verification_code1, verification_code2) self.assertTrue(self.service.verify_email(credentials2, verification_code2)) auth_result = self.service.authenticate(credentials2) self.assertTrue(isinstance(auth_result, dict)) self.assertEqual(1, auth_result["authentication"]["id"]) self.assertEqual(32, len(auth_result["authentication"]["token"]))
def test_set_and_verify_email_when_phone_verified(self): result = self.service.set_new_email(self.phone_credentials, "*****@*****.**") verification_code = result["verification"]["send_code"] new_email_credentials = Credentials() new_email_credentials.email = "*****@*****.**" new_email_credentials.password = self.phone_credentials.password self.assertRaises(IncorrectLogin, lambda: self.service.authenticate(new_email_credentials)) self.service.authenticate(self.phone_credentials) self.service.verify_email(self.phone_credentials, verification_code) self.service.authenticate(new_email_credentials) self.service.authenticate(self.phone_credentials)
def test_fail_email_verification_and_delete_account(self): credentials = Credentials() credentials.email = "*****@*****.**" credentials.password = "******" register_result = self.service.register(credentials) verification_code = register_result["verification"]["send_code"] self.assertRaises(IncorrectVerificationCode, lambda: self.service.verify_email(credentials, "blablabla")) self.assertRaises(IncorrectVerificationCode, lambda: self.service.verify_email(credentials, "blablabla")) self.assertRaises(IncorrectVerificationCode, lambda: self.service.verify_email(credentials, "blablabla")) self.assertRaises(IncorrectVerificationCodeFatal, lambda: self.service.verify_email(credentials, "blablabla")) self.assertRaises(IncorrectLogin, lambda: self.service.verify_email(credentials, "blablabla")) self.assertRaises(IncorrectLogin, lambda: self.service.verify_email(credentials, verification_code))
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))
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_email_verification_with_third_attempt(self): credentials = Credentials() credentials.email = "*****@*****.**" credentials.password = "******" register_result = self.service.register(credentials) verification_code = register_result["verification"]["send_code"] self.assertRaises(IncorrectVerificationCode, lambda: self.service.verify_email(credentials, "blablabla")) self.assertRaises(IncorrectVerificationCode, lambda: self.service.verify_email(credentials, "blablabla")) self.assertTrue(self.service.verify_email(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_init_registration_process_with_email(self): credentials = Credentials() self.assertRaises(IncorrectLogin, lambda: self.service.register(credentials)) credentials.email = "*****@*****.**" 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("email", register_result["verification"]["send_via"]) self.assertEqual("*****@*****.**", 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_email(credentials, verification_code)) auth_result = self.service.authenticate(credentials) self.assertTrue(isinstance(auth_result, dict)) self.assertEqual(1, auth_result["authentication"]["id"]) self.assertEqual(32, len(auth_result["authentication"]["token"]))