103 lines
3.4 KiB
Python
103 lines
3.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import absolute_import, unicode_literals
|
|
|
|
import json
|
|
|
|
from django.test.client import RequestFactory
|
|
from django.test.utils import override_settings
|
|
|
|
from allauth.socialaccount.tests import OAuth2TestsMixin
|
|
from allauth.tests import MockedResponse, TestCase
|
|
|
|
from .provider import AuthentiqProvider
|
|
from .views import AuthentiqOAuth2Adapter
|
|
|
|
|
|
class AuthentiqTests(OAuth2TestsMixin, TestCase):
|
|
provider_id = AuthentiqProvider.id
|
|
|
|
def get_mocked_response(self):
|
|
return MockedResponse(
|
|
200,
|
|
json.dumps(
|
|
{
|
|
"sub": "ZLARGMFT1M",
|
|
"email": "jane@email.invalid",
|
|
"email_verified": True,
|
|
"given_name": "Jane",
|
|
"family_name": "Doe",
|
|
}
|
|
),
|
|
)
|
|
|
|
def test_default_scopes_no_email(self):
|
|
scopes = self.provider.get_default_scope()
|
|
self.assertIn("aq:name", scopes)
|
|
self.assertNotIn("email", scopes)
|
|
|
|
@override_settings(
|
|
SOCIALACCOUNT_QUERY_EMAIL=True,
|
|
)
|
|
def test_default_scopes_email(self):
|
|
scopes = self.provider.get_default_scope()
|
|
self.assertIn("aq:name", scopes)
|
|
self.assertIn("email", scopes)
|
|
|
|
def test_scopes(self):
|
|
request = RequestFactory().get(AuthentiqOAuth2Adapter.authorize_url)
|
|
scopes = self.provider.get_scope(request)
|
|
self.assertIn("openid", scopes)
|
|
self.assertIn("aq:name", scopes)
|
|
|
|
def test_dynamic_scopes(self):
|
|
request = RequestFactory().get(
|
|
AuthentiqOAuth2Adapter.authorize_url, dict(scope="foo")
|
|
)
|
|
scopes = self.provider.get_scope(request)
|
|
self.assertIn("openid", scopes)
|
|
self.assertIn("aq:name", scopes)
|
|
self.assertIn("foo", scopes)
|
|
|
|
@override_settings(
|
|
SOCIALACCOUNT_QUERY_EMAIL=True,
|
|
SOCIALACCOUNT_EMAIL_REQUIRED=True,
|
|
SOCIALACCOUNT_EMAIL_VERIFICATION=True,
|
|
)
|
|
def test_scopes_required_verified_email(self):
|
|
request = RequestFactory().get(AuthentiqOAuth2Adapter.authorize_url)
|
|
scopes = self.provider.get_scope(request)
|
|
self.assertIn("email~rs", scopes)
|
|
self.assertNotIn("email", scopes)
|
|
|
|
@override_settings(
|
|
SOCIALACCOUNT_QUERY_EMAIL=True,
|
|
SOCIALACCOUNT_EMAIL_REQUIRED=False,
|
|
SOCIALACCOUNT_EMAIL_VERIFICATION=True,
|
|
)
|
|
def test_scopes_optional_verified_email(self):
|
|
request = RequestFactory().get(AuthentiqOAuth2Adapter.authorize_url)
|
|
scopes = self.provider.get_scope(request)
|
|
self.assertIn("email~s", scopes)
|
|
self.assertNotIn("email", scopes)
|
|
|
|
@override_settings(
|
|
SOCIALACCOUNT_QUERY_EMAIL=True,
|
|
SOCIALACCOUNT_EMAIL_REQUIRED=True,
|
|
SOCIALACCOUNT_EMAIL_VERIFICATION=False,
|
|
)
|
|
def test_scopes_required_email(self):
|
|
request = RequestFactory().get(AuthentiqOAuth2Adapter.authorize_url)
|
|
scopes = self.provider.get_scope(request)
|
|
self.assertIn("email~r", scopes)
|
|
self.assertNotIn("email", scopes)
|
|
|
|
@override_settings(
|
|
SOCIALACCOUNT_QUERY_EMAIL=True,
|
|
SOCIALACCOUNT_EMAIL_REQUIRED=False,
|
|
SOCIALACCOUNT_EMAIL_VERIFICATION=False,
|
|
)
|
|
def test_scopes_optional_email(self):
|
|
request = RequestFactory().get(AuthentiqOAuth2Adapter.authorize_url)
|
|
scopes = self.provider.get_scope(request)
|
|
self.assertIn("email", scopes)
|