def test_group_permissions(self): """ Retrieve a group's permissions from database """ g1 = Group('brotatos') g2 = Group('sharkfest') p1 = GroupPermission('pkg1', 'brotatos', True, False) p2 = GroupPermission('pkg1', 'sharkfest', True, True) self.db.add_all([g1, g2, p1, p2]) transaction.commit() perms = self.access.group_permissions('pkg1', 'brotatos') self.assertEqual(perms, ['read'])
def test_user_groups(self): """ Retrieve a user's groups from database """ user = make_user('foo', 'bar', False) g1 = Group('brotatos') g2 = Group('sharkfest') user.groups.update([g1, g2]) self.db.add_all([user, g1, g2]) transaction.commit() groups = self.access.groups('foo') self.assertItemsEqual(groups, ['brotatos', 'sharkfest'])
def test_groups(self): """ Retrieve all groups from database """ user = make_user('foo', 'bar', False) g1 = Group('brotatos') g2 = Group('sharkfest') user.groups.add(g1) user.groups.add(g2) self.db.add(user) transaction.commit() groups = self.access.groups() self.assertItemsEqual(groups, ['brotatos', 'sharkfest'])
def test_grant_group_bad_permission(self): """ Attempting to grant a bad permission raises ValueError """ g = Group('foo') self.db.add(g) transaction.commit() with self.assertRaises(ValueError): self.access.edit_group_permission('pkg1', 'foo', 'wiggle', True)
def test_add_user_to_group(self): """ Can add a user to a group """ user = make_user('foo', 'bar', False) group = Group('g1') self.db.add_all([user, group]) transaction.commit() self.access.edit_user_group('foo', 'g1', True) transaction.commit() self.db.add(user) self.assertEqual([g.name for g in user.groups], ['g1'])
def test_revoke_group_permission(self): """ Can revoke group permissions on a package """ g = Group('foo') perm = GroupPermission('pkg1', 'foo', read=True) self.db.add_all([g, perm]) transaction.commit() self.access.edit_group_permission('pkg1', 'foo', 'read', False) transaction.commit() self.db.add(g) self.assertEqual(len(g.permissions), 0)
def test_remove_user_from_group(self): """ Can remove a user from a group """ user = make_user('foo', 'bar', False) group = Group('g1') user.groups.add(group) self.db.add_all([user, group]) transaction.commit() self.access.edit_user_group('foo', 'g1', False) transaction.commit() self.db.add(user) self.assertEqual(len(user.groups), 0)
def test_group_members(self): """ Fetch all members of a group """ u1 = make_user('u1', 'bar', False) u2 = make_user('u2', 'bar', False) u3 = make_user('u3', 'bar', False) g1 = Group('g1') g1.users.update([u1, u2]) self.db.add_all([u1, u2, u3, g1]) transaction.commit() users = self.access.group_members('g1') self.assertItemsEqual(users, ['u1', 'u2'])
def test_group_package_perms(self): """ Fetch all packages a group has permissions on """ g1 = Group('foo') p1 = GroupPermission('pkg1', 'foo', True, False) p2 = GroupPermission('pkg2', 'foo', True, True) self.db.add_all([g1, p1, p2]) transaction.commit() perms = self.access.group_package_permissions('foo') self.assertEqual(perms, [ {'package': 'pkg1', 'permissions': ['read']}, {'package': 'pkg2', 'permissions': ['read', 'write']}, ])
def test_grant_group_write_permission(self): """ Can give groups write permissions on a package """ g = Group('foo') self.db.add(g) transaction.commit() self.access.edit_group_permission('pkg1', 'foo', 'write', True) transaction.commit() self.db.add(g) self.assertEqual(len(g.permissions), 1) perm = g.permissions[0] self.assertEqual(perm.package, 'pkg1') self.assertFalse(perm.read) self.assertTrue(perm.write)
def test_delete_group(self): """ Can delete groups """ user = make_user('foo', 'bar') group = Group('foobar') user.groups.add(group) self.db.add_all([user, group]) transaction.commit() self.access.delete_group('foobar') transaction.commit() count = self.db.query(Group).count() self.assertEqual(count, 0) count = self.db.query(association_table).count() self.assertEqual(count, 0)
def test_delete_user(self): """ Can delete users """ user = make_user('foo', 'bar', False) group = Group('foobar') user.groups.add(group) self.db.add_all([user, group]) transaction.commit() self.access.delete_user('foo') transaction.commit() user = self.db.query(User).first() self.assertIsNone(user) count = self.db.query(association_table).count() self.assertEqual(count, 0)
def test_single_user_data(self): """ Retrieve a single user's data """ u1 = make_user('foo', 'bar', False) u1.admin = True g1 = Group('foobars') u1.groups.add(g1) self.db.add_all([u1, g1]) transaction.commit() user = self.access.user_data('foo') self.assertEqual(user, { 'username': '******', 'admin': True, 'groups': ['foobars'], })
def test_user_data(self): """ Retrieve all users """ u1 = make_user('foo', 'bar', False) u1.admin = True u2 = make_user('bar', 'bar', False) g1 = Group('foobars') u2.groups.add(g1) self.db.add_all([u1, u2, g1]) transaction.commit() users = self.access.user_data() self.assertItemsEqual(users, [ {'username': '******', 'admin': True}, {'username': '******', 'admin': False}, ])