86 lines
2.8 KiB
Python
86 lines
2.8 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from django.test import TestCase
|
|
from django.utils.six import text_type
|
|
from django.utils.translation import override as override_language
|
|
|
|
from oidc_provider.lib.claims import ScopeClaims, StandardScopeClaims, STANDARD_CLAIMS
|
|
from oidc_provider.tests.app.utils import create_fake_user, create_fake_client, create_fake_token
|
|
|
|
|
|
class ClaimsTestCase(TestCase):
|
|
|
|
def setUp(self):
|
|
self.user = create_fake_user()
|
|
self.scopes = ['openid', 'address', 'email', 'phone', 'profile', 'foo']
|
|
self.client = create_fake_client('code')
|
|
self.token = create_fake_token(self.user, self.scopes, self.client)
|
|
self.scopeClaims = ScopeClaims(self.token)
|
|
|
|
def test_empty_standard_claims(self):
|
|
for v in [v for k, v in STANDARD_CLAIMS.items() if k != 'address']:
|
|
self.assertEqual(v, '')
|
|
|
|
for v in STANDARD_CLAIMS['address'].values():
|
|
self.assertEqual(v, '')
|
|
|
|
def test_clean_dic(self):
|
|
""" assert that _clean_dic function returns a clean dictionnary
|
|
(no empty claims) """
|
|
dict_to_clean = {
|
|
'phone_number_verified': '',
|
|
'middle_name': '',
|
|
'name': 'John Doe',
|
|
'website': '',
|
|
'profile': '',
|
|
'family_name': 'Doe',
|
|
'birthdate': '',
|
|
'preferred_username': '',
|
|
'picture': '',
|
|
'zoneinfo': '',
|
|
'locale': '',
|
|
'gender': '',
|
|
'updated_at': '',
|
|
'address': {},
|
|
'given_name': 'John',
|
|
'email_verified': '',
|
|
'nickname': '',
|
|
'email': u'johndoe@example.com',
|
|
'phone_number': '',
|
|
}
|
|
clean_dict = self.scopeClaims._clean_dic(dict_to_clean)
|
|
self.assertEquals(
|
|
clean_dict,
|
|
{
|
|
'family_name': 'Doe',
|
|
'given_name': 'John',
|
|
'name': 'John Doe',
|
|
'email': u'johndoe@example.com'
|
|
}
|
|
)
|
|
|
|
def test_locale(self):
|
|
with override_language('fr'):
|
|
self.assertEqual(text_type(StandardScopeClaims.info_profile[0]), 'Profil de base')
|
|
|
|
def test_scopeclaims_class_inheritance(self):
|
|
# Generate example class that will be used for `OIDC_EXTRA_SCOPE_CLAIMS` setting.
|
|
class CustomScopeClaims(ScopeClaims):
|
|
|
|
info_foo = ('Title', 'Description')
|
|
|
|
def scope_foo(self):
|
|
dic = {'test': self.user.id}
|
|
return dic
|
|
|
|
info_notadd = ('Title', 'Description')
|
|
|
|
def scope_notadd(self):
|
|
dic = {'test': self.user.id}
|
|
return dic
|
|
|
|
claims = CustomScopeClaims(self.token)
|
|
response = claims.create_response_dic()
|
|
|
|
self.assertTrue('test' in response.keys())
|
|
self.assertFalse('notadd' in response.keys())
|