Merge pull request #114 from fjouatte/develop

[FIX] #113: Claim Name SHOULD be omitted from the JSON object when not returned
This commit is contained in:
Juan Ignacio Fiorentino 2016-08-17 09:56:54 -03:00 committed by GitHub
commit d159a63dc1
2 changed files with 51 additions and 2 deletions

View file

@ -60,8 +60,11 @@ class ScopeClaims(object):
if value is None or value == '': if value is None or value == '':
del aux_dic[key] del aux_dic[key]
elif type(value) is dict: elif type(value) is dict:
aux_dic[key] = self._clean_dic(value) cleaned_dict = self._clean_dic(value)
if not cleaned_dict:
del aux_dic[key]
continue
aux_dic[key] = cleaned_dict
return aux_dic return aux_dic
@classmethod @classmethod

View file

@ -0,0 +1,46 @@
from django.test import TestCase
from oidc_provider.lib.claims import ScopeClaims
from oidc_provider.tests.app.utils import create_fake_user
class ClaimsTestCase(TestCase):
def setUp(self):
self.user = create_fake_user()
self.scopes = ['openid', 'address', 'email', 'phone', 'profile']
self.scopeClaims = ScopeClaims(self.user, self.scopes)
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'
}
)