def test_partial_collision(self): # check that with a colliding username, email is still migrated id1 = User(username="******", email="*****@*****.**").save().id id2 = User(username="******", email="*****@*****.**").save(validate=False).id failures = case_migration.migrate() self.assertEqual(len(User.objects), 2) self.check_user(id1, "user", "*****@*****.**") self.check_user(id2, "USER", "*****@*****.**") self.assertEqual(len(failures), 1)
def test_email_collision(self): # check that colliding email is not modified id1 = User(username="******", email="*****@*****.**").save().id id2 = User(username="******", email="*****@*****.**").save(validate=False).id failures = case_migration.migrate() self.assertEqual(len(User.objects), 2) self.check_user(id1, "user1", "*****@*****.**") self.check_user(id2, "user2", "*****@*****.**") self.assertEqual(len(failures), 1)
def test_no_change_case(self): id = User(username="******", email="*****@*****.**").save().id case_migration.migrate() self.assertEqual(len(User.objects), 1) self.check_user(id, "user", "*****@*****.**")
def test_lowercased(self): id = User(username="******", email="*****@*****.**").save(validate=False).id case_migration.migrate() self.assertEqual(len(User.objects), 1) self.check_user(id, "user", "*****@*****.**")
def post(self, **post): try: data = Bunch(register_form.native(post)[0]) except Exception as e: if config.get('debug', False): raise return 'json:', dict(success=False, message=_("Unable to parse data."), data=post, exc=str(e)) if not data.username or not data.email or not data.password or data.password != data.pass2: return 'json:', dict( success=False, message=_("Missing data or passwords do not match."), data=data) #Make sure that the provided email address is a valid form for an email address v = EmailValidator() email = data.email email, err = v.validate(email) if err: return 'json:', dict(success=False, message=_("Invalid email address provided."), data=data) #If the password isn't strong enough, reject it if (zxcvbn.password_strength(data.password).get("score") < MINIMUM_PASSWORD_STRENGTH): return 'json:', dict( success=False, message= _("Password provided is too weak. please add more characters, or include lowercase, uppercase, and special characters." ), data=data) #Ensures that the provided username and email are lowercase user = User(data.username.lower(), data.email.lower(), active=True) user.password = data.password try: user.save() except ValidationError: return 'json:', dict(success=False, message=_("Invalid email address provided."), data=data) except NotUniqueError: return 'json:', dict( success=False, message= _("Either the username or email address provided is already taken." ), data=data) authenticate(user.username, data.password) return 'json:', dict(success=True, location="/")