Пример #1
0
    def test_userid_in_query(self, db_session):
        fred = models.User(
            authority="example.net", username="******", email="*****@*****.**"
        )
        alice = models.User(
            authority="foobar.com", username="******", email="*****@*****.**"
        )
        db_session.add_all([fred, alice])
        db_session.flush()

        result = (
            db_session.query(models.User)
            .filter(
                models.User.userid.in_(
                    [
                        "acct:[email protected]",
                        "acct:[email protected]",
                        "acct:[email protected]",
                    ]
                )
            )
            .all()
        )

        assert len(result) == 2
        assert fred in result
        assert alice in result
Пример #2
0
def test_cannot_create_dot_variant_of_user(db_session):
    fred = models.User(authority='example.com',
                       username='******',
                       email='*****@*****.**')
    fred2 = models.User(authority='example.com',
                        username='******',
                        email='*****@*****.**')

    db_session.add(fred)
    db_session.add(fred2)
    with pytest.raises(exc.IntegrityError):
        db_session.flush()
Пример #3
0
    def test_cannot_create_dot_variant_of_user(self, db_session):
        fred = models.User(authority="example.com",
                           username="******",
                           email="*****@*****.**")
        fred2 = models.User(authority="example.com",
                            username="******",
                            email="*****@*****.**")

        db_session.add(fred)
        db_session.add(fred2)
        with pytest.raises(exc.IntegrityError):
            db_session.flush()
Пример #4
0
    def test_cannot_create_case_variant_of_user(self, db_session):
        bob = models.User(authority="example.com",
                          username="******",
                          email="*****@*****.**")
        bob2 = models.User(authority="example.com",
                           username="******",
                           email="*****@*****.**")

        db_session.add(bob)
        db_session.add(bob2)
        with pytest.raises(exc.IntegrityError):
            db_session.flush()
Пример #5
0
def test_cannot_create_case_variant_of_user(db_session):
    bob = models.User(authority='example.com',
                      username='******',
                      email='*****@*****.**')
    bob2 = models.User(authority='example.com',
                       username='******',
                       email='*****@*****.**')

    db_session.add(bob)
    db_session.add(bob2)
    with pytest.raises(exc.IntegrityError):
        db_session.flush()
Пример #6
0
 def group(self):
     creator = models.User(username='******', authority='example.com')
     group = models.Group(name='test-group',
                          authority='example.com',
                          creator=creator)
     group.pubid = 'test-group'
     return group
Пример #7
0
 def group(self):
     creator = models.User(username="******", authority="example.com")
     group = models.Group(name="test-group",
                          authority="example.com",
                          creator=creator)
     group.pubid = "test-group"
     return group
Пример #8
0
        def on_success(appstruct):
            svc = self.request.find_service(name='group')

            # Create the new group.
            creator = appstruct['creator']
            authority = appstruct['authority']
            description = appstruct['description']
            name = appstruct['name']
            origins = appstruct['origins']
            type_ = appstruct['group_type']

            userid = models.User(username=creator, authority=authority).userid

            if type_ == 'open':
                group = svc.create_open_group(name=name, userid=userid,
                                              origins=origins, description=description)
            elif type_ == 'restricted':
                group = svc.create_restricted_group(name=name, userid=userid,
                                                    origins=origins, description=description)
            else:
                raise Exception('Unsupported group type {}'.format(type_))

            # Flush changes to allocate group a pubid
            self.request.db.flush(objects=[group])

            group_url = self.request.route_url('group_read', pubid=group.pubid, slug=group.slug)
            self.request.session.flash(Markup('Created new group <a href="{url}">{name}</a>'.format(
                                        name=name, url=group_url)), queue='success')

            # Direct the user back to the admin page.
            return HTTPFound(location=self.request.route_url('admin_groups'))
Пример #9
0
def test_check_password_validates_old_style_passwords():
    user = models.User(username='******')
    user.salt = 'somesalt'
    # Generated with passlib.hash.bcrypt.encrypt('foobar' + 'somesalt', rounds=10)
    user._password = '******'

    assert user.check_password('foobar')
    assert not user.check_password('somethingelse')
Пример #10
0
def test_check_password_upgrades_new_style_passwords():
    user = models.User(username='******')
    # Generated with passlib.hash.bcrypt.encrypt('foobar', rounds=4, ident='2b')
    user._password = '******'

    user.check_password('foobar')

    assert not password_context.needs_update(user._password)
Пример #11
0
    def user(self, db_session):
        user = models.User(authority="example.com",
                           username="******",
                           email="*****@*****.**")
        user.activation = models.Activation()
        db_session.add(user)
        db_session.flush()

        return user
Пример #12
0
def test_setting_password_unsets_salt():
    user = models.User(username='******')
    user.salt = 'somesalt'
    user._password = '******'

    user.password = '******'

    assert user.salt is None
    assert user.check_password('flibble')
Пример #13
0
def test_check_password_works_after_upgrade():
    user = models.User(username='******')
    user.salt = 'somesalt'
    # Generated with passlib.hash.bcrypt.encrypt('foobar' + 'somesalt', rounds=10)
    user._password = '******'

    user.check_password('foobar')

    assert user.check_password('foobar')
Пример #14
0
    def test_filtering_by_username_matches_dot_variant_of_user(self, db_session):
        fred = models.User(
            authority="example.com", username="******", email="*****@*****.**"
        )
        db_session.add(fred)
        db_session.flush()

        result = db_session.query(models.User).filter_by(username="******").one()

        assert result == fred
Пример #15
0
def test_check_password_only_upgrades_when_password_is_correct():
    user = models.User(username='******')
    user.salt = 'somesalt'
    # Generated with passlib.hash.bcrypt.encrypt('foobar' + 'somesalt', rounds=10)
    user._password = '******'

    user.check_password('donkeys')

    assert user.salt is not None
    assert password_context.needs_update(user._password)
Пример #16
0
    def test_userid_in_query(self, db_session):
        fred = models.User(authority='example.net',
                           username='******',
                           email='*****@*****.**')
        alice = models.User(authority='foobar.com',
                            username='******',
                            email='*****@*****.**')
        db_session.add_all([fred, alice])
        db_session.flush()

        result = (db_session.query(models.User).filter(
            models.User.userid.in_([
                'acct:[email protected]', 'acct:[email protected]',
                'acct:[email protected]'
            ])).all())

        assert len(result) == 2
        assert fred in result
        assert alice in result
Пример #17
0
    def test_filtering_by_username_matches_case_variant_of_user(self, db_session):
        fred = models.User(authority='example.com',
                           username='******',
                           email='*****@*****.**')
        db_session.add(fred)
        db_session.flush()

        result = db_session.query(models.User).filter_by(username='******').one()

        assert result == fred
Пример #18
0
def test_userid_equals_query(db_session):
    fred = models.User(authority='example.net',
                       username='******',
                       email='*****@*****.**')
    db_session.add(fred)
    db_session.flush()

    result = (db_session.query(
        models.User).filter_by(userid='acct:[email protected]').one())

    assert result == fred
Пример #19
0
    def test_userid_equals_query(self, db_session):
        fred = models.User(authority="example.net",
                           username="******",
                           email="*****@*****.**")
        db_session.add(fred)
        db_session.flush()

        result = (db_session.query(
            models.User).filter_by(userid="acct:[email protected]").one())

        assert result == fred
Пример #20
0
    def upsert_user(self, user_data):
        user = models.User.get_by_username(self.db, user_data["username"],
                                           user_data["authority"])

        if not user:
            user = models.User()
            self.db.add(user)

        password = user_data.pop("password")
        self.user_password_service.update_password(user, password)

        self.setattrs(user, user_data)
Пример #21
0
    def test_User_activate_activates_user(self, db_session):  # noqa: N802
        user = models.User(authority='example.com',
                           username='******',
                           email='*****@*****.**')
        activation = models.Activation()
        user.activation = activation
        db_session.add(user)
        db_session.flush()

        user.activate()
        db_session.commit()

        assert user.is_activated
Пример #22
0
def users(db_session):
    from h import models

    staff = ['agnos', 'bojan', 'cristof']
    nonstaff = ['david', 'eva', 'flora']

    users = {}

    for staff in staff:
        users[staff] = models.User(username=staff,
                                   email=staff + '@example.com',
                                   password='******',
                                   staff=True)
    for nonstaff in nonstaff:
        users[nonstaff] = models.User(username=nonstaff,
                                      email=nonstaff + '@example.com',
                                      password='******')

    db_session.add_all(list(users.values()))
    db_session.flush()

    return users
Пример #23
0
def test_cohorts_edit_with_users():
    req = DummyRequest(db=db.Session)
    cohort = models.FeatureCohort(name='FractalCohort')
    user1 = models.User(username='******',
                        password='******',
                        email='*****@*****.**')
    user2 = models.User(username='******',
                        password='******',
                        email='*****@*****.**')
    cohort.members.append(user1)
    cohort.members.append(user2)

    db.Session.add(user1)
    db.Session.add(user2)
    db.Session.add(cohort)
    db.Session.flush()

    req.matchdict['id'] = cohort.id
    result = views.cohorts_edit({}, req)

    assert result['cohort'].id == cohort.id
    assert len(result['cohort'].members) == 2
Пример #24
0
    def test_User_activate_activates_user(self, db_session):
        user = models.User(authority="example.com",
                           username="******",
                           email="*****@*****.**")
        activation = models.Activation()
        user.activation = activation
        db_session.add(user)
        db_session.flush()

        user.activate()
        db_session.commit()

        assert user.is_activated
Пример #25
0
def users(db_session):
    from h import models

    admins = ['agnos', 'bojan', 'cristof']
    nonadmins = ['david', 'eva', 'flora']

    users = {}

    for admin in admins:
        users[admin] = models.User(username=admin,
                                   email=admin + '@example.com',
                                   password='******',
                                   admin=True)
    for nonadmin in nonadmins:
        users[nonadmin] = models.User(username=nonadmin,
                                      email=nonadmin + '@example.com',
                                      password='******')

    db_session.add_all(list(users.values()))
    db_session.flush()

    return users
Пример #26
0
    def test_userid_in_query_with_invalid_userid_mixed_in(self, db_session):
        # This is to ensure that we don't expose the ValueError that could
        # potentially be thrown by split_user.

        fred = models.User(authority="example.net",
                           username="******",
                           email="*****@*****.**")
        db_session.add(fred)
        db_session.flush()

        result = (db_session.query(models.User).filter(
            models.User.userid.in_(["acct:[email protected]",
                                    "invalid"])).all())

        assert len(result) == 1
        assert fred in result
Пример #27
0
def test_cohorts_edit_add_user():
    req = DummyRequest(db=db.Session)
    user = models.User(username='******',
                       password='******',
                       email='*****@*****.**')
    cohort = models.FeatureCohort(name='FractalCohort')

    db.Session.add(user)
    db.Session.add(cohort)
    db.Session.flush()

    req.matchdict['id'] = cohort.id
    req.params['add'] = user.username
    views.cohorts_edit_add(req)

    assert len(cohort.members) == 1
    assert cohort.members[0].username == user.username
Пример #28
0
    def test_can_change_email_to_null(self):
        user = models.User(email="*****@*****.**")

        user.email = None
Пример #29
0
 def test_can_create_user_with_null_email(self):
     models.User(email=None)
Пример #30
0
 def test_cannot_create_user_with_too_long_email(self):
     with pytest.raises(ValueError):
         models.User(email="bob@b" + "o" * 100 + "b.com")