예제 #1
0
 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])
예제 #2
0
 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})
예제 #3
0
 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))
예제 #4
0
 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))
예제 #5
0
 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))
예제 #6
0
 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))
예제 #7
0
 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])
예제 #8
0
 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))
예제 #9
0
 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)
예제 #10
0
 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)
예제 #11
0
 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))
예제 #12
0
 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])
예제 #13
0
 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")
예제 #14
0
 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))
예제 #15
0
 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)
예제 #16
0
 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])
예제 #17
0
 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])
예제 #18
0
 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")
예제 #19
0
 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])
예제 #20
0
 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])
예제 #21
0
 def test_get_default_usergroup_ignores_other_groups(self):
     factory.make_UserGroup()
     self.assertEqual(
         UserGroup.objects.get_default_usergroup().name,
         DEFAULT_USERGROUP_NAME)
예제 #22
0
 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)
예제 #23
0
 def test_is_default_false(self):
     self.assertFalse(factory.make_UserGroup().is_default())
예제 #24
0
 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])
예제 #25
0
 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)
예제 #26
0
 def test_delete(self):
     group = factory.make_UserGroup()
     group.delete()
     self.assertIsNone(reload_object(group))