authentik.providers.scim.tests.test_filter_groups

SCIM Group Filters tests

 1"""SCIM Group Filters tests"""
 2
 3from django.test import TestCase
 4
 5from authentik.blueprints.tests import apply_blueprint
 6from authentik.core.models import Application, Group, User
 7from authentik.lib.generators import generate_id
 8from authentik.providers.scim.models import SCIMMapping, SCIMProvider
 9
10
11class SCIMFilterGroupsTests(TestCase):
12    """SCIM Group Filters tests"""
13
14    @apply_blueprint("system/providers-scim.yaml")
15    def setUp(self) -> None:
16        # Delete all users and groups as to only have the test users and groups
17        User.objects.all().exclude_anonymous().delete()
18        Group.objects.all().delete()
19
20        self.provider: SCIMProvider = SCIMProvider.objects.create(
21            name=generate_id(),
22            url="https://localhost",
23            token=generate_id(),
24            exclude_users_service_account=True,
25        )
26        self.provider.property_mappings.add(
27            SCIMMapping.objects.get(managed="goauthentik.io/providers/scim/user")
28        )
29        self.provider.property_mappings_group.add(
30            SCIMMapping.objects.get(managed="goauthentik.io/providers/scim/group")
31        )
32
33        self.app: Application = Application.objects.create(
34            name=generate_id(),
35            slug=generate_id(),
36        )
37        self.app.backchannel_providers.add(self.provider)
38
39        # Create test groups
40        self.group1 = Group.objects.create(name="group-1")
41        self.group2 = Group.objects.create(name="group-2")
42        self.group3 = Group.objects.create(name="group-3")
43
44    def test_no_group_filters(self):
45        """Test with no group filters set"""
46        group_qs = self.provider.get_object_qs(Group)
47
48        self.assertEqual(
49            set([self.group1.pk, self.group2.pk, self.group3.pk]),
50            set(group_qs.values_list("pk", flat=True)),
51        )
52
53    def test_single_group_filter(self):
54        """Test with one group filter set"""
55        self.provider.group_filters.add(self.group1)
56
57        group_qs = self.provider.get_object_qs(Group)
58
59        self.assertEqual(
60            set([self.group1.pk]),
61            set(group_qs.values_list("pk", flat=True)),
62        )
63
64    def test_multiple_group_filters(self):
65        """Test with multiple group filters set"""
66        self.provider.group_filters.add(self.group1)
67        self.provider.group_filters.add(self.group2)
68
69        group_qs = self.provider.get_object_qs(Group)
70
71        self.assertEqual(
72            set([self.group1.pk, self.group2.pk]),
73            set(group_qs.values_list("pk", flat=True)),
74        )
class SCIMFilterGroupsTests(django.test.testcases.TestCase):
12class SCIMFilterGroupsTests(TestCase):
13    """SCIM Group Filters tests"""
14
15    @apply_blueprint("system/providers-scim.yaml")
16    def setUp(self) -> None:
17        # Delete all users and groups as to only have the test users and groups
18        User.objects.all().exclude_anonymous().delete()
19        Group.objects.all().delete()
20
21        self.provider: SCIMProvider = SCIMProvider.objects.create(
22            name=generate_id(),
23            url="https://localhost",
24            token=generate_id(),
25            exclude_users_service_account=True,
26        )
27        self.provider.property_mappings.add(
28            SCIMMapping.objects.get(managed="goauthentik.io/providers/scim/user")
29        )
30        self.provider.property_mappings_group.add(
31            SCIMMapping.objects.get(managed="goauthentik.io/providers/scim/group")
32        )
33
34        self.app: Application = Application.objects.create(
35            name=generate_id(),
36            slug=generate_id(),
37        )
38        self.app.backchannel_providers.add(self.provider)
39
40        # Create test groups
41        self.group1 = Group.objects.create(name="group-1")
42        self.group2 = Group.objects.create(name="group-2")
43        self.group3 = Group.objects.create(name="group-3")
44
45    def test_no_group_filters(self):
46        """Test with no group filters set"""
47        group_qs = self.provider.get_object_qs(Group)
48
49        self.assertEqual(
50            set([self.group1.pk, self.group2.pk, self.group3.pk]),
51            set(group_qs.values_list("pk", flat=True)),
52        )
53
54    def test_single_group_filter(self):
55        """Test with one group filter set"""
56        self.provider.group_filters.add(self.group1)
57
58        group_qs = self.provider.get_object_qs(Group)
59
60        self.assertEqual(
61            set([self.group1.pk]),
62            set(group_qs.values_list("pk", flat=True)),
63        )
64
65    def test_multiple_group_filters(self):
66        """Test with multiple group filters set"""
67        self.provider.group_filters.add(self.group1)
68        self.provider.group_filters.add(self.group2)
69
70        group_qs = self.provider.get_object_qs(Group)
71
72        self.assertEqual(
73            set([self.group1.pk, self.group2.pk]),
74            set(group_qs.values_list("pk", flat=True)),
75        )

SCIM Group Filters tests

@apply_blueprint('system/providers-scim.yaml')
def setUp(self) -> None:
15    @apply_blueprint("system/providers-scim.yaml")
16    def setUp(self) -> None:
17        # Delete all users and groups as to only have the test users and groups
18        User.objects.all().exclude_anonymous().delete()
19        Group.objects.all().delete()
20
21        self.provider: SCIMProvider = SCIMProvider.objects.create(
22            name=generate_id(),
23            url="https://localhost",
24            token=generate_id(),
25            exclude_users_service_account=True,
26        )
27        self.provider.property_mappings.add(
28            SCIMMapping.objects.get(managed="goauthentik.io/providers/scim/user")
29        )
30        self.provider.property_mappings_group.add(
31            SCIMMapping.objects.get(managed="goauthentik.io/providers/scim/group")
32        )
33
34        self.app: Application = Application.objects.create(
35            name=generate_id(),
36            slug=generate_id(),
37        )
38        self.app.backchannel_providers.add(self.provider)
39
40        # Create test groups
41        self.group1 = Group.objects.create(name="group-1")
42        self.group2 = Group.objects.create(name="group-2")
43        self.group3 = Group.objects.create(name="group-3")

Hook method for setting up the test fixture before exercising it.

def test_no_group_filters(self):
45    def test_no_group_filters(self):
46        """Test with no group filters set"""
47        group_qs = self.provider.get_object_qs(Group)
48
49        self.assertEqual(
50            set([self.group1.pk, self.group2.pk, self.group3.pk]),
51            set(group_qs.values_list("pk", flat=True)),
52        )

Test with no group filters set

def test_single_group_filter(self):
54    def test_single_group_filter(self):
55        """Test with one group filter set"""
56        self.provider.group_filters.add(self.group1)
57
58        group_qs = self.provider.get_object_qs(Group)
59
60        self.assertEqual(
61            set([self.group1.pk]),
62            set(group_qs.values_list("pk", flat=True)),
63        )

Test with one group filter set

def test_multiple_group_filters(self):
65    def test_multiple_group_filters(self):
66        """Test with multiple group filters set"""
67        self.provider.group_filters.add(self.group1)
68        self.provider.group_filters.add(self.group2)
69
70        group_qs = self.provider.get_object_qs(Group)
71
72        self.assertEqual(
73            set([self.group1.pk, self.group2.pk]),
74            set(group_qs.values_list("pk", flat=True)),
75        )

Test with multiple group filters set