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
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()
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()
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()
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()
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
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
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'))
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')
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)
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
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')
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')
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
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)
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
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
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
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
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)
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
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
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
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
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
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
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
def test_can_change_email_to_null(self): user = models.User(email="*****@*****.**") user.email = None
def test_can_create_user_with_null_email(self): models.User(email=None)
def test_cannot_create_user_with_too_long_email(self): with pytest.raises(ValueError): models.User(email="bob@b" + "o" * 100 + "b.com")