authentik.sources.oauth.tests.test_type_google
google Type tests
1"""google Type tests""" 2 3from django.test import TestCase 4 5from authentik.core.tests.utils import RequestFactory 6from authentik.sources.oauth.models import OAuthSource 7from authentik.sources.oauth.types.google import ( 8 GoogleOAuthRedirect, 9 GoogleType, 10) 11 12# https://developers.google.com/identity/protocols/oauth2/openid-connect?hl=en 13GOOGLE_USER = { 14 "id": "1324813249123401234", 15 "email": "foo@bar.baz", 16 "verified_email": True, 17 "name": "foo bar", 18 "given_name": "foo", 19 "family_name": "bar", 20 "picture": "", 21 "locale": "en", 22} 23 24 25class TestTypeGoogle(TestCase): 26 """OAuth Source tests""" 27 28 def setUp(self): 29 self.source: OAuthSource = OAuthSource.objects.create( 30 name="test", 31 slug="test", 32 provider_type="google", 33 authorization_url="", 34 profile_url="", 35 consumer_key="foo", 36 ) 37 self.request_factory = RequestFactory() 38 39 def test_enroll_context(self): 40 """Test Google Enrollment context""" 41 ak_context = GoogleType().get_base_user_properties(source=self.source, info=GOOGLE_USER) 42 self.assertEqual(ak_context["email"], GOOGLE_USER["email"]) 43 self.assertEqual(ak_context["name"], GOOGLE_USER["name"]) 44 45 def test_authorize_url(self): 46 """Test authorize URL""" 47 request = self.request_factory.get("/") 48 redirect = GoogleOAuthRedirect(request=request).get_redirect_url( 49 source_slug=self.source.slug 50 ) 51 self.assertEqual( 52 redirect, 53 ( 54 f"https://accounts.google.com/o/oauth2/auth?client_id={self.source.consumer_key}&re" 55 "direct_uri=http%3A%2F%2Ftestserver%2Fsource%2Foauth%2Fcallback%2Ftest%2F&response_" 56 f"type=code&state={request.session['oauth-client-test-request-state']}&scope=" 57 "email%20profile" 58 ), 59 ) 60 61 def test_authorize_url_additional(self): 62 """Test authorize URL""" 63 request = self.request_factory.get("/") 64 self.source.additional_scopes = "foo" 65 self.source.save() 66 redirect = GoogleOAuthRedirect(request=request).get_redirect_url( 67 source_slug=self.source.slug 68 ) 69 self.assertEqual( 70 redirect, 71 ( 72 f"https://accounts.google.com/o/oauth2/auth?client_id={self.source.consumer_key}&re" 73 "direct_uri=http%3A%2F%2Ftestserver%2Fsource%2Foauth%2Fcallback%2Ftest%2F&response_" 74 f"type=code&state={request.session['oauth-client-test-request-state']}&scope=" 75 "email%20foo%20profile" 76 ), 77 ) 78 79 def test_authorize_url_additional_replace(self): 80 """Test authorize URL""" 81 request = self.request_factory.get("/") 82 self.source.additional_scopes = "*foo" 83 self.source.save() 84 redirect = GoogleOAuthRedirect(request=request).get_redirect_url( 85 source_slug=self.source.slug 86 ) 87 self.assertEqual( 88 redirect, 89 ( 90 f"https://accounts.google.com/o/oauth2/auth?client_id={self.source.consumer_key}&re" 91 "direct_uri=http%3A%2F%2Ftestserver%2Fsource%2Foauth%2Fcallback%2Ftest%2F&response_" 92 f"type=code&state={request.session['oauth-client-test-request-state']}&scope=" 93 "foo" 94 ), 95 )
GOOGLE_USER =
{'id': '1324813249123401234', 'email': 'foo@bar.baz', 'verified_email': True, 'name': 'foo bar', 'given_name': 'foo', 'family_name': 'bar', 'picture': '', 'locale': 'en'}
class
TestTypeGoogle(django.test.testcases.TestCase):
26class TestTypeGoogle(TestCase): 27 """OAuth Source tests""" 28 29 def setUp(self): 30 self.source: OAuthSource = OAuthSource.objects.create( 31 name="test", 32 slug="test", 33 provider_type="google", 34 authorization_url="", 35 profile_url="", 36 consumer_key="foo", 37 ) 38 self.request_factory = RequestFactory() 39 40 def test_enroll_context(self): 41 """Test Google Enrollment context""" 42 ak_context = GoogleType().get_base_user_properties(source=self.source, info=GOOGLE_USER) 43 self.assertEqual(ak_context["email"], GOOGLE_USER["email"]) 44 self.assertEqual(ak_context["name"], GOOGLE_USER["name"]) 45 46 def test_authorize_url(self): 47 """Test authorize URL""" 48 request = self.request_factory.get("/") 49 redirect = GoogleOAuthRedirect(request=request).get_redirect_url( 50 source_slug=self.source.slug 51 ) 52 self.assertEqual( 53 redirect, 54 ( 55 f"https://accounts.google.com/o/oauth2/auth?client_id={self.source.consumer_key}&re" 56 "direct_uri=http%3A%2F%2Ftestserver%2Fsource%2Foauth%2Fcallback%2Ftest%2F&response_" 57 f"type=code&state={request.session['oauth-client-test-request-state']}&scope=" 58 "email%20profile" 59 ), 60 ) 61 62 def test_authorize_url_additional(self): 63 """Test authorize URL""" 64 request = self.request_factory.get("/") 65 self.source.additional_scopes = "foo" 66 self.source.save() 67 redirect = GoogleOAuthRedirect(request=request).get_redirect_url( 68 source_slug=self.source.slug 69 ) 70 self.assertEqual( 71 redirect, 72 ( 73 f"https://accounts.google.com/o/oauth2/auth?client_id={self.source.consumer_key}&re" 74 "direct_uri=http%3A%2F%2Ftestserver%2Fsource%2Foauth%2Fcallback%2Ftest%2F&response_" 75 f"type=code&state={request.session['oauth-client-test-request-state']}&scope=" 76 "email%20foo%20profile" 77 ), 78 ) 79 80 def test_authorize_url_additional_replace(self): 81 """Test authorize URL""" 82 request = self.request_factory.get("/") 83 self.source.additional_scopes = "*foo" 84 self.source.save() 85 redirect = GoogleOAuthRedirect(request=request).get_redirect_url( 86 source_slug=self.source.slug 87 ) 88 self.assertEqual( 89 redirect, 90 ( 91 f"https://accounts.google.com/o/oauth2/auth?client_id={self.source.consumer_key}&re" 92 "direct_uri=http%3A%2F%2Ftestserver%2Fsource%2Foauth%2Fcallback%2Ftest%2F&response_" 93 f"type=code&state={request.session['oauth-client-test-request-state']}&scope=" 94 "foo" 95 ), 96 )
OAuth Source tests
def
setUp(self):
29 def setUp(self): 30 self.source: OAuthSource = OAuthSource.objects.create( 31 name="test", 32 slug="test", 33 provider_type="google", 34 authorization_url="", 35 profile_url="", 36 consumer_key="foo", 37 ) 38 self.request_factory = RequestFactory()
Hook method for setting up the test fixture before exercising it.
def
test_enroll_context(self):
40 def test_enroll_context(self): 41 """Test Google Enrollment context""" 42 ak_context = GoogleType().get_base_user_properties(source=self.source, info=GOOGLE_USER) 43 self.assertEqual(ak_context["email"], GOOGLE_USER["email"]) 44 self.assertEqual(ak_context["name"], GOOGLE_USER["name"])
Test Google Enrollment context