Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
    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", "*****@*****.**")
Exemple #4
0
    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", "*****@*****.**")
Exemple #5
0
    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="/")