authentik.sources.scim.tests.test_auth

Test SCIM Auth

 1"""Test SCIM Auth"""
 2
 3from django.urls import reverse
 4from rest_framework.test import APITestCase
 5
 6from authentik.core.models import Token, TokenIntents
 7from authentik.core.tests.utils import create_test_admin_user
 8from authentik.lib.generators import generate_id
 9from authentik.sources.scim.models import SCIMSource
10
11
12class TestSCIMAuth(APITestCase):
13    """Test SCIM Auth view"""
14
15    def setUp(self) -> None:
16        self.user = create_test_admin_user()
17        self.token3 = Token.objects.create(
18            user=self.user,
19            identifier=generate_id(),
20            intent=TokenIntents.INTENT_API,
21        )
22        self.source = SCIMSource.objects.create(name=generate_id(), slug=generate_id())
23        self.source2 = SCIMSource.objects.create(name=generate_id(), slug=generate_id())
24
25    def test_auth_ok(self):
26        """Test successful auth"""
27        response = self.client.get(
28            reverse(
29                "authentik_sources_scim:v2-schema",
30                kwargs={
31                    "source_slug": self.source.slug,
32                },
33            ),
34            HTTP_AUTHORIZATION=f"Bearer {self.source.token.key}",
35        )
36        self.assertEqual(response.status_code, 200)
37
38    def test_auth_missing(self):
39        """Test without header"""
40        response = self.client.get(
41            reverse(
42                "authentik_sources_scim:v2-schema",
43                kwargs={
44                    "source_slug": self.source.slug,
45                },
46            ),
47        )
48        self.assertEqual(response.status_code, 403)
49
50    def test_auth_wrong_token(self):
51        """Test with wrong token"""
52        # Token for wrong source
53        response = self.client.get(
54            reverse(
55                "authentik_sources_scim:v2-schema",
56                kwargs={
57                    "source_slug": self.source.slug,
58                },
59            ),
60            HTTP_AUTHORIZATION=f"Bearer {self.source2.token.key}",
61        )
62        self.assertEqual(response.status_code, 403)
63        # Token for no source
64        response = self.client.get(
65            reverse(
66                "authentik_sources_scim:v2-schema",
67                kwargs={
68                    "source_slug": self.source.slug,
69                },
70            ),
71            HTTP_AUTHORIZATION=f"Bearer {self.token3.key}",
72        )
73        self.assertEqual(response.status_code, 403)
class TestSCIMAuth(rest_framework.test.APITestCase):
13class TestSCIMAuth(APITestCase):
14    """Test SCIM Auth view"""
15
16    def setUp(self) -> None:
17        self.user = create_test_admin_user()
18        self.token3 = Token.objects.create(
19            user=self.user,
20            identifier=generate_id(),
21            intent=TokenIntents.INTENT_API,
22        )
23        self.source = SCIMSource.objects.create(name=generate_id(), slug=generate_id())
24        self.source2 = SCIMSource.objects.create(name=generate_id(), slug=generate_id())
25
26    def test_auth_ok(self):
27        """Test successful auth"""
28        response = self.client.get(
29            reverse(
30                "authentik_sources_scim:v2-schema",
31                kwargs={
32                    "source_slug": self.source.slug,
33                },
34            ),
35            HTTP_AUTHORIZATION=f"Bearer {self.source.token.key}",
36        )
37        self.assertEqual(response.status_code, 200)
38
39    def test_auth_missing(self):
40        """Test without header"""
41        response = self.client.get(
42            reverse(
43                "authentik_sources_scim:v2-schema",
44                kwargs={
45                    "source_slug": self.source.slug,
46                },
47            ),
48        )
49        self.assertEqual(response.status_code, 403)
50
51    def test_auth_wrong_token(self):
52        """Test with wrong token"""
53        # Token for wrong source
54        response = self.client.get(
55            reverse(
56                "authentik_sources_scim:v2-schema",
57                kwargs={
58                    "source_slug": self.source.slug,
59                },
60            ),
61            HTTP_AUTHORIZATION=f"Bearer {self.source2.token.key}",
62        )
63        self.assertEqual(response.status_code, 403)
64        # Token for no source
65        response = self.client.get(
66            reverse(
67                "authentik_sources_scim:v2-schema",
68                kwargs={
69                    "source_slug": self.source.slug,
70                },
71            ),
72            HTTP_AUTHORIZATION=f"Bearer {self.token3.key}",
73        )
74        self.assertEqual(response.status_code, 403)

Test SCIM Auth view

def setUp(self) -> None:
16    def setUp(self) -> None:
17        self.user = create_test_admin_user()
18        self.token3 = Token.objects.create(
19            user=self.user,
20            identifier=generate_id(),
21            intent=TokenIntents.INTENT_API,
22        )
23        self.source = SCIMSource.objects.create(name=generate_id(), slug=generate_id())
24        self.source2 = SCIMSource.objects.create(name=generate_id(), slug=generate_id())

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

def test_auth_ok(self):
26    def test_auth_ok(self):
27        """Test successful auth"""
28        response = self.client.get(
29            reverse(
30                "authentik_sources_scim:v2-schema",
31                kwargs={
32                    "source_slug": self.source.slug,
33                },
34            ),
35            HTTP_AUTHORIZATION=f"Bearer {self.source.token.key}",
36        )
37        self.assertEqual(response.status_code, 200)

Test successful auth

def test_auth_missing(self):
39    def test_auth_missing(self):
40        """Test without header"""
41        response = self.client.get(
42            reverse(
43                "authentik_sources_scim:v2-schema",
44                kwargs={
45                    "source_slug": self.source.slug,
46                },
47            ),
48        )
49        self.assertEqual(response.status_code, 403)

Test without header

def test_auth_wrong_token(self):
51    def test_auth_wrong_token(self):
52        """Test with wrong token"""
53        # Token for wrong source
54        response = self.client.get(
55            reverse(
56                "authentik_sources_scim:v2-schema",
57                kwargs={
58                    "source_slug": self.source.slug,
59                },
60            ),
61            HTTP_AUTHORIZATION=f"Bearer {self.source2.token.key}",
62        )
63        self.assertEqual(response.status_code, 403)
64        # Token for no source
65        response = self.client.get(
66            reverse(
67                "authentik_sources_scim:v2-schema",
68                kwargs={
69                    "source_slug": self.source.slug,
70                },
71            ),
72            HTTP_AUTHORIZATION=f"Bearer {self.token3.key}",
73        )
74        self.assertEqual(response.status_code, 403)

Test with wrong token