def test_related_group(self): group1 = factory.make_UserGroup() group2 = factory.make_UserGroup() role = factory.make_Role() role.groups.add(group1) role.groups.add(group2) self.assertCountEqual(role.groups.all(), [group1, group2])
def test_get_remote_group_names(self): remote1 = factory.make_UserGroup(local=False) remote2 = factory.make_UserGroup(local=False) factory.make_UserGroup(local=True) self.assertEqual( UserGroup.objects.get_remote_group_names(), {remote1.name, remote2.name})
def test_revoke_group_with_machine_other_group_access(self): user = factory.make_User() group1 = factory.make_UserGroup(users=[user]) group2 = factory.make_UserGroup(users=[user]) pool = factory.make_ResourcePool(groups=[group1, group2]) factory.make_Node(owner=user, pool=pool) pool.revoke_group(group1) self.assertIn(pool, ResourcePool.objects.get_user_resource_pools(user))
def test_remove_user_with_other_group_access_to_machine_same_role(self): user = factory.make_User() group1 = factory.make_UserGroup(users=[user]) group2 = factory.make_UserGroup(users=[user]) pool = factory.make_ResourcePool() factory.make_Role(pools=[pool], groups=[group1, group2]) factory.make_Node(owner=user, pool=pool) group1.remove(user) self.assertTrue(ResourcePool.objects.user_can_access_pool(user, pool))
def test_delete_with_other_group_access(self): user = factory.make_User() group1 = factory.make_UserGroup(users=[user]) group2 = factory.make_UserGroup(users=[user]) node = factory.make_Node(owner=user) pool = factory.make_ResourcePool(groups=[group1, group2], nodes=[node]) group1.delete() self.assertIn( pool, ResourcePool.objects.get_user_resource_pools(user))
def test_delete_user_unrelated_resources(self): user = factory.make_User() group1 = factory.make_UserGroup(users=[user]) group2 = factory.make_UserGroup(users=[user]) node = factory.make_Node(owner=user) factory.make_ResourcePool(groups=[group1]) pool2 = factory.make_ResourcePool(groups=[group2], nodes=[node]) group1.delete() self.assertIn( pool2, ResourcePool.objects.get_user_resource_pools(user))
def test_creates_pool_users_groups(self): user1 = factory.make_User() user2 = factory.make_User() group1 = factory.make_UserGroup() group2 = factory.make_UserGroup() data = { 'name': factory.make_name('pool'), 'users': [user1.id, user2.id], 'groups': [group1.id, group2.id]} form = ResourcePoolForm(data=data) pool = form.save() self.assertCountEqual(pool.users, [user1, user2]) self.assertCountEqual(pool.groups, [group1, group2])
def test_remove_user_with_direct_access_to_machine(self): user = factory.make_User() group = factory.make_UserGroup(users=[user]) pool = factory.make_ResourcePool(users=[user]) factory.make_Role(pools=[pool], groups=[group]) group.remove(user) self.assertTrue(ResourcePool.objects.user_can_access_pool(user, pool))
def test_remove_user_would_lose_machine_access(self): user = factory.make_User() group = factory.make_UserGroup(users=[user]) pool = factory.make_ResourcePool() factory.make_Role(pools=[pool], groups=[group]) factory.make_Node(owner=user, pool=pool) self.assertRaises(ValidationError, group.remove, user)
def test_renames_group(self): group = factory.make_UserGroup() new_name = factory.make_name('group') form = UserGroupForm(data={'name': new_name}, instance=group) form.save() group = reload_object(group) self.assertEqual(group.name, new_name)
def test_revoke_user_with_machine_access_via_group(self): user = factory.make_User() group = factory.make_UserGroup(users=[user]) pool = factory.make_ResourcePool(groups=[group], users=[user]) factory.make_Node(owner=user, pool=pool) pool.revoke_user(user) self.assertIn(pool, ResourcePool.objects.get_user_resource_pools(user))
def test_updates_pool_users_groups(self): user1 = factory.make_User() user2 = factory.make_User() user3 = factory.make_User() group1 = factory.make_UserGroup() group2 = factory.make_UserGroup() group3 = factory.make_UserGroup() pool = factory.make_ResourcePool( users=[user1, user2], groups=[group1, group2]) data = { 'users': [user1.id, user3.id], 'groups': [group1.id, group3.id]} form = ResourcePoolForm(data=data, instance=pool) pool = form.save() self.assertCountEqual(pool.users, [user1, user3]) self.assertCountEqual(pool.groups, [group1, group3])
def test_update_usergroup_not_local_no_change(self): group = factory.make_UserGroup(local=False) form = UserGroupForm(data={'name': factory.make_name()}, instance=group) self.assertFalse(form.is_valid()) self.assertEqual(form.errors['__all__'].as_data()[0].message, "Can't edit non-local group")
def test_revoke_group(self): user = factory.make_User() group = factory.make_UserGroup(users=[user]) pool = factory.make_ResourcePool(groups=[group]) pool.revoke_group(group) self.assertNotIn(pool, ResourcePool.objects.get_user_resource_pools(user))
def test_updates_usergroup(self): group = factory.make_UserGroup() new_description = factory.make_string() form = UserGroupForm(data={'description': new_description}, instance=group) form.save() group = reload_object(group) self.assertEqual(group.description, new_description)
def test_get_user_resource_pools_role_direct_and_via_group(self): user = factory.make_User() group = factory.make_UserGroup(users=[user]) default_pool = ResourcePool.objects.get_default_resource_pool() pool1 = factory.make_ResourcePool() pool2 = factory.make_ResourcePool() factory.make_Role(users=[user], pools=[pool1]) factory.make_Role(groups=[group], pools=[pool2]) self.assertCountEqual( ResourcePool.objects.get_user_resource_pools(user), [default_pool, pool1, pool2])
def test_get_user_resource_pools_user_group_in_role(self): user = factory.make_User() default_pool = ResourcePool.objects.get_default_resource_pool() pool1 = factory.make_ResourcePool() pool2 = factory.make_ResourcePool() factory.make_ResourcePool() # a pool the user doesn't have access to group = factory.make_UserGroup(users=[user]) factory.make_Role(groups=[group], pools=[pool1, pool2]) self.assertCountEqual( ResourcePool.objects.get_user_resource_pools(user), [default_pool, pool1, pool2])
def test_update_usergroup_no_change_local(self): group = factory.make_UserGroup() form = UserGroupForm(data={'local': False}, instance=group) self.assertFalse(form.is_valid()) self.assertEqual(form.errors['local'].as_data()[0].message, "Can't change user group type")
def test_add_user_already_in_group(self): user = factory.make_User() group = factory.make_UserGroup(users=[user]) group.add(user) self.assertCountEqual(group.users.all(), [user])
def test_remove_user(self): user1 = factory.make_User() user2 = factory.make_User() group = factory.make_UserGroup(users=[user1, user2]) group.remove(user1) self.assertCountEqual(group.users.all(), [user2])
def test_get_default_usergroup_ignores_other_groups(self): factory.make_UserGroup() self.assertEqual( UserGroup.objects.get_default_usergroup().name, DEFAULT_USERGROUP_NAME)
def test_revoke_group_with_owned_machine_fail(self): user = factory.make_User() group = factory.make_UserGroup(users=[user]) pool = factory.make_ResourcePool(groups=[group]) factory.make_Node(owner=user, pool=pool) self.assertRaises(ValidationError, pool.revoke_group, group)
def test_is_default_false(self): self.assertFalse(factory.make_UserGroup().is_default())
def test_groups(self): group1 = factory.make_UserGroup() group2 = factory.make_UserGroup() factory.make_UserGroup() pool = factory.make_ResourcePool(groups=[group1, group2]) self.assertCountEqual(pool.groups, [group1, group2])
def test_delete_with_user_losing_access_fails(self): user = factory.make_User() group = factory.make_UserGroup(users=[user]) node = factory.make_Node(owner=user) factory.make_ResourcePool(groups=[group], nodes=[node]) self.assertRaises(ValidationError, group.delete)
def test_delete(self): group = factory.make_UserGroup() group.delete() self.assertIsNone(reload_object(group))