authentik.sources.oauth.tests.test_client

 1from django.test import RequestFactory, TestCase
 2from guardian.shortcuts import get_anonymous_user
 3
 4from authentik.lib.generators import generate_id
 5from authentik.sources.oauth.clients.oauth2 import OAuth2Client
 6from authentik.sources.oauth.models import AuthorizationCodeAuthMethod, OAuthSource
 7from authentik.sources.oauth.types.oidc import OpenIDConnectClient
 8
 9
10class TestOAuthClient(TestCase):
11    """OAuth Source tests"""
12
13    def setUp(self):
14        self.source = OAuthSource.objects.create(
15            name="test",
16            slug="test",
17            provider_type="openidconnect",
18            authorization_url="",
19            profile_url="",
20            consumer_key=generate_id(),
21        )
22        self.factory = RequestFactory()
23
24    def test_client_post_body_auth(self):
25        """Test login_challenge"""
26        self.source.provider_type = "apple"
27        self.source.save()
28        request = self.factory.get("/")
29        request.session = {}
30        request.user = get_anonymous_user()
31        client = OAuth2Client(self.source, request)
32        self.assertIsNone(client.get_access_token_auth())
33        args = client.get_access_token_args("", "")
34        self.assertIn("client_id", args)
35        self.assertIn("client_secret", args)
36
37    def test_client_basic_auth(self):
38        """Test login_challenge"""
39        self.source.provider_type = "reddit"
40        self.source.save()
41        request = self.factory.get("/")
42        request.session = {}
43        request.user = get_anonymous_user()
44        client = OAuth2Client(self.source, request)
45        self.assertIsNotNone(client.get_access_token_auth())
46        args = client.get_access_token_args("", "")
47        self.assertNotIn("client_id", args)
48        self.assertNotIn("client_secret", args)
49
50    def test_client_openid_auth(self):
51        """Test login_challenge"""
52        request = self.factory.get("/")
53        request.session = {}
54        request.user = get_anonymous_user()
55        client = OpenIDConnectClient(self.source, request)
56
57        self.assertIsNotNone(client.get_access_token_auth())
58        args = client.get_access_token_args("", "")
59        self.assertNotIn("client_id", args)
60        self.assertNotIn("client_secret", args)
61
62        self.source.authorization_code_auth_method = AuthorizationCodeAuthMethod.POST_BODY
63        self.source.save()
64        client = OpenIDConnectClient(self.source, request)
65
66        self.assertIsNone(client.get_access_token_auth())
67        args = client.get_access_token_args("", "")
68        self.assertIn("client_id", args)
69        self.assertIn("client_secret", args)
class TestOAuthClient(django.test.testcases.TestCase):
11class TestOAuthClient(TestCase):
12    """OAuth Source tests"""
13
14    def setUp(self):
15        self.source = OAuthSource.objects.create(
16            name="test",
17            slug="test",
18            provider_type="openidconnect",
19            authorization_url="",
20            profile_url="",
21            consumer_key=generate_id(),
22        )
23        self.factory = RequestFactory()
24
25    def test_client_post_body_auth(self):
26        """Test login_challenge"""
27        self.source.provider_type = "apple"
28        self.source.save()
29        request = self.factory.get("/")
30        request.session = {}
31        request.user = get_anonymous_user()
32        client = OAuth2Client(self.source, request)
33        self.assertIsNone(client.get_access_token_auth())
34        args = client.get_access_token_args("", "")
35        self.assertIn("client_id", args)
36        self.assertIn("client_secret", args)
37
38    def test_client_basic_auth(self):
39        """Test login_challenge"""
40        self.source.provider_type = "reddit"
41        self.source.save()
42        request = self.factory.get("/")
43        request.session = {}
44        request.user = get_anonymous_user()
45        client = OAuth2Client(self.source, request)
46        self.assertIsNotNone(client.get_access_token_auth())
47        args = client.get_access_token_args("", "")
48        self.assertNotIn("client_id", args)
49        self.assertNotIn("client_secret", args)
50
51    def test_client_openid_auth(self):
52        """Test login_challenge"""
53        request = self.factory.get("/")
54        request.session = {}
55        request.user = get_anonymous_user()
56        client = OpenIDConnectClient(self.source, request)
57
58        self.assertIsNotNone(client.get_access_token_auth())
59        args = client.get_access_token_args("", "")
60        self.assertNotIn("client_id", args)
61        self.assertNotIn("client_secret", args)
62
63        self.source.authorization_code_auth_method = AuthorizationCodeAuthMethod.POST_BODY
64        self.source.save()
65        client = OpenIDConnectClient(self.source, request)
66
67        self.assertIsNone(client.get_access_token_auth())
68        args = client.get_access_token_args("", "")
69        self.assertIn("client_id", args)
70        self.assertIn("client_secret", args)

OAuth Source tests

def setUp(self):
14    def setUp(self):
15        self.source = OAuthSource.objects.create(
16            name="test",
17            slug="test",
18            provider_type="openidconnect",
19            authorization_url="",
20            profile_url="",
21            consumer_key=generate_id(),
22        )
23        self.factory = RequestFactory()

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

def test_client_post_body_auth(self):
25    def test_client_post_body_auth(self):
26        """Test login_challenge"""
27        self.source.provider_type = "apple"
28        self.source.save()
29        request = self.factory.get("/")
30        request.session = {}
31        request.user = get_anonymous_user()
32        client = OAuth2Client(self.source, request)
33        self.assertIsNone(client.get_access_token_auth())
34        args = client.get_access_token_args("", "")
35        self.assertIn("client_id", args)
36        self.assertIn("client_secret", args)

Test login_challenge

def test_client_basic_auth(self):
38    def test_client_basic_auth(self):
39        """Test login_challenge"""
40        self.source.provider_type = "reddit"
41        self.source.save()
42        request = self.factory.get("/")
43        request.session = {}
44        request.user = get_anonymous_user()
45        client = OAuth2Client(self.source, request)
46        self.assertIsNotNone(client.get_access_token_auth())
47        args = client.get_access_token_args("", "")
48        self.assertNotIn("client_id", args)
49        self.assertNotIn("client_secret", args)

Test login_challenge

def test_client_openid_auth(self):
51    def test_client_openid_auth(self):
52        """Test login_challenge"""
53        request = self.factory.get("/")
54        request.session = {}
55        request.user = get_anonymous_user()
56        client = OpenIDConnectClient(self.source, request)
57
58        self.assertIsNotNone(client.get_access_token_auth())
59        args = client.get_access_token_args("", "")
60        self.assertNotIn("client_id", args)
61        self.assertNotIn("client_secret", args)
62
63        self.source.authorization_code_auth_method = AuthorizationCodeAuthMethod.POST_BODY
64        self.source.save()
65        client = OpenIDConnectClient(self.source, request)
66
67        self.assertIsNone(client.get_access_token_auth())
68        args = client.get_access_token_args("", "")
69        self.assertIn("client_id", args)
70        self.assertIn("client_secret", args)

Test login_challenge