def test_remove_groups(self): """Test the removal of groups according to a name""" name = "Foo" create_groups(name) remove_groups(name) community_groups = Group.objects.filter(name__startswith=name) self.assertEqual(list(community_groups), [])
def test_get_groups(self): """Test getting groups according to community name""" groups = get_groups("Foo") self.assertSequenceEqual(groups, []) name = "Bar" create_groups(name) community_groups = Group.objects.all() groups = get_groups("Bar") self.assertCountEqual(community_groups, groups) create_groups("New") groups = get_groups("Bar") self.assertCountEqual(community_groups, groups)
def manage_community_groups(sender, instance, created, **kwargs): """Manage user groups and user permissions for a particular Community""" name = instance.name if created: groups = create_groups(name, groups_templates) assign_permissions( instance, groups, groups_templates, group_permissions) community_admin_group = next( g for g in groups if g.name == COMMUNITY_ADMIN.format(name)) instance.admin.join_group(community_admin_group) instance.add_member(instance.admin) instance.save() else: if name != instance.original_name and instance.original_name: rename_groups(instance.original_name, instance.name) if instance.admin != instance.original_admin and \ instance.original_admin is not None: community_admin_group = \ get_object_or_404(Group, name=COMMUNITY_ADMIN.format(name)) instance.original_admin.leave_group( community_admin_group) instance.admin.join_group(community_admin_group) if instance.admin not in instance.members.all(): instance.add_member(instance.admin) instance.save()
def test_rename_groups(self): """Test the renaming of groups according to a new name""" old_name = "Foo" new_name = "Bar" create_groups(old_name) groups = rename_groups(old_name, new_name) expected_group_names = [] for key, group_name in groups_templates.items(): expected_group_names.append(group_name.format(new_name)) group_names = [] for group in groups: group_names.append(group.name) self.assertCountEqual(expected_group_names, group_names) community_groups = Group.objects.filter(name__startswith=new_name) self.assertCountEqual(community_groups, groups) old_community_groups = Group.objects.filter(name__startswith=old_name) self.assertSequenceEqual(old_community_groups, [])
def test_leave_groups(self): """Test SystersUser leaving all Community groups""" name = "Baz" self.systers_user.leave_groups(name) self.assertSequenceEqual(self.systers_user.user.groups.all(), []) create_groups(name) content_manager_group = Group.objects.get(name="Baz: Content Manager") self.systers_user.join_group(content_manager_group) self.assertSequenceEqual(self.systers_user.user.groups.all(), [content_manager_group]) self.systers_user.leave_groups(name) self.assertSequenceEqual(self.systers_user.user.groups.all(), []) other_name = "Foo" create_groups(other_name) admin_group = Group.objects.get(name="Foo: Community Admin") self.systers_user.join_group(admin_group) self.systers_user.join_group(content_manager_group) self.assertCountEqual(list(self.systers_user.user.groups.all()), [content_manager_group, admin_group]) self.systers_user.leave_groups(name) self.assertSequenceEqual(self.systers_user.user.groups.all(), [admin_group])
def test_create_groups(self): """Test the creation of groups according to a name""" name = "Foo" groups = create_groups(name) expected_group_names = [] for key, group_name in groups_templates.items(): expected_group_names.append(group_name.format(name)) group_names = [] for group in groups: group_names.append(group.name) self.assertCountEqual(list(expected_group_names), group_names) community_groups = Group.objects.filter(name__startswith=name) self.assertCountEqual(community_groups, groups)
def test_assign_permissions(self): """Test assignment of permissions to community groups""" User.objects.create(username='******', password='******') systers_user = SystersUser.objects.get() community = Community.objects.create(name="Foo", slug="foo", order=1, admin=systers_user) name = community.name groups = create_groups(name) assign_permissions(community, groups) for key, value in group_permissions.items(): group = Group.objects.get(name=groups_templates[key].format(name)) group_perms = [p.codename for p in list(group.permissions.all())] group_perms += get_perms(group, community) self.assertCountEqual(group_perms, value)
def test_get_member_groups(self): """Test getting groups of which the user is a member""" groups = create_groups("Bar") self.assertEqual(self.systers_user.get_member_groups(groups), []) first_group = groups[0] self.systers_user.join_group(first_group) self.assertSequenceEqual(self.systers_user.get_member_groups(groups), [first_group]) last_group = groups[-1] self.systers_user.join_group(last_group) self.assertCountEqual(self.systers_user.get_member_groups(groups), [first_group, last_group]) group = Group.objects.create(name="Dummy") self.systers_user.join_group(group) self.assertCountEqual(self.systers_user.get_member_groups(groups), [first_group, last_group])
def test_get_member_groups(self): """Test getting groups of which the user is a member""" groups = create_groups("Bar") self.assertEqual(self.systers_user.get_member_groups(groups), []) first_group = groups[0] self.systers_user.join_group(first_group) self.assertSequenceEqual(self.systers_user.get_member_groups(groups), [first_group]) last_group = groups[-1] self.systers_user.join_group(last_group) self.assertSequenceEqual(self.systers_user.get_member_groups(groups), [first_group, last_group]) group = Group.objects.create(name="Dummy") self.systers_user.join_group(group) self.assertSequenceEqual(self.systers_user.get_member_groups(groups), [first_group, last_group])
def test_assign_permissions(self): """Test assignment of permissions to community""" self.user = User.objects.create(username='******', password='******') systers_user = SystersUser.objects.get(user=self.user) country = Country.objects.create(name='Bar', continent='AS') location = City.objects.create(name='Foo', display_name='Foo', country=country) community = Community.objects.create(name="Foo", slug="foo", order=1, location=location, admin=systers_user) name = community.name groups = create_groups(name, groups_templates) assign_permissions(community, groups, groups_templates, group_permissions) for key, value in group_permissions.items(): group = Group.objects.get(name=groups_templates[key].format(name)) group_perms = [p.codename for p in list(group.permissions.all())] group_perms += get_perms(group, community) self.assertCountEqual(group_perms, value)
def manage_community_groups(sender, instance, created, **kwargs): """Manage user groups and user permissions for a particular Community""" name = instance.name if created: groups = create_groups(name) assign_permissions(instance, groups) community_admin_group = next(g for g in groups if g.name == COMMUNITY_ADMIN.format(name)) instance.admin.join_group(community_admin_group) instance.add_member(instance.admin) instance.save() else: if name != instance.original_name and instance.original_name: rename_groups(instance.original_name, instance.name) if instance.admin != instance.original_admin and \ instance.original_admin is not None: community_admin_group = \ get_object_or_404(Group, name=COMMUNITY_ADMIN.format(name)) instance.original_admin.leave_group(community_admin_group) instance.admin.join_group(community_admin_group) if instance.admin not in instance.members.all(): instance.add_member(instance.admin) instance.save()