55from django .contrib .auth .backends import ModelBackend
66
77try :
8- from urlparse import parse_qs , urlsplit
8+ from urlparse import parse_qs
9+ from urlparse import urlsplit
910except ImportError :
10- from urllib .parse import parse_qs , urlsplit
11+ from urllib .parse import parse_qs
12+ from urllib .parse import urlsplit
1113
12- from django .utils import timezone
1314from django .contrib .auth .models import User
15+ from django .utils import timezone
1416
15- from oidc_provider .models import (
16- Client ,
17- Code ,
18- Token ,
19- ResponseType )
20-
17+ from oidc_provider .lib .claims import ScopeClaims
18+ from oidc_provider .models import Client
19+ from oidc_provider .models import Code
20+ from oidc_provider .models import ResponseType
21+ from oidc_provider .models import Token
2122
22- FAKE_NONCE = 'cb584e44c43ed6bd0bc2d9c7e242837d'
23- FAKE_RANDOM_STRING = '' .join (
24- random .choice (string .ascii_uppercase + string .digits ) for _ in range (32 ))
25- FAKE_CODE_CHALLENGE = 'YlYXEqXuRm-Xgi2BOUiK50JW1KsGTX6F1TDnZSC8VTg'
26- FAKE_CODE_VERIFIER = 'SmxGa0XueyNh5bDgTcSrqzAh2_FmXEqU8kDT6CuXicw'
23+ FAKE_NONCE = "cb584e44c43ed6bd0bc2d9c7e242837d"
24+ FAKE_RANDOM_STRING = "" .join (
25+ random .choice (string .ascii_uppercase + string .digits ) for _ in range (32 )
26+ )
27+ FAKE_CODE_CHALLENGE = "YlYXEqXuRm-Xgi2BOUiK50JW1KsGTX6F1TDnZSC8VTg"
28+ FAKE_CODE_VERIFIER = "SmxGa0XueyNh5bDgTcSrqzAh2_FmXEqU8kDT6CuXicw"
2729
2830
2931def create_fake_user ():
@@ -33,11 +35,11 @@ def create_fake_user():
3335 Return a User object.
3436 """
3537 user = User ()
36- user .username = ' johndoe'
37- user .email = ' johndoe@example.com'
38- user .first_name = ' John'
39- user .last_name = ' Doe'
40- user .set_password (' 1234' )
38+ user .username = " johndoe"
39+ user .email = " johndoe@example.com"
40+ user .first_name = " John"
41+ user .last_name = " Doe"
42+ user .set_password (" 1234" )
4143
4244 user .save ()
4345
@@ -52,20 +54,20 @@ def create_fake_client(response_type, is_public=False, require_consent=True):
5254 Return a Client object.
5355 """
5456 client = Client ()
55- client .name = ' Some Client'
57+ client .name = " Some Client"
5658 client .client_id = str (random .randint (1 , 999999 )).zfill (6 )
5759 if is_public :
58- client .client_type = ' public'
59- client .client_secret = ''
60+ client .client_type = " public"
61+ client .client_secret = ""
6062 else :
6163 client .client_secret = str (random .randint (1 , 999999 )).zfill (6 )
62- client .redirect_uris = [' http://example.com/' ]
64+ client .redirect_uris = [" http://example.com/" ]
6365 client .require_consent = require_consent
64- client .scope = [' openid' , ' email' ]
66+ client .scope = [" openid" , " email" ]
6567 client .save ()
6668
6769 # check if response_type is a string in a python 2 and 3 compatible way
68- if isinstance (response_type , ("" .__class__ , u "" .__class__ )):
70+ if isinstance (response_type , ("" .__class__ , "" .__class__ )):
6971 response_type = (response_type ,)
7072 for value in response_type :
7173 client .response_types .add (ResponseType .objects .get (value = value ))
@@ -90,7 +92,7 @@ def is_code_valid(url, user, client):
9092 try :
9193 parsed = urlsplit (url )
9294 params = parse_qs (parsed .query or parsed .fragment )
93- code = params [' code' ][0 ]
95+ code = params [" code" ][0 ]
9496 code = Code .objects .get (code = code )
9597 is_code_ok = (code .client == client ) and (code .user == user )
9698 except Exception :
@@ -103,15 +105,28 @@ def userinfo(claims, user):
103105 """
104106 Fake function for setting OIDC_USERINFO.
105107 """
106- claims [' given_name' ] = ' John'
107- claims [' family_name' ] = ' Doe'
108- claims [' name' ] = ' {0} {1}' .format (claims [' given_name' ], claims [' family_name' ])
109- claims [' email' ] = user .email
110- claims [' email_verified' ] = True
111- claims [' address' ][ ' country' ] = ' Argentina'
108+ claims [" given_name" ] = " John"
109+ claims [" family_name" ] = " Doe"
110+ claims [" name" ] = " {0} {1}" .format (claims [" given_name" ], claims [" family_name" ])
111+ claims [" email" ] = user .email
112+ claims [" email_verified" ] = True
113+ claims [" address" ][ " country" ] = " Argentina"
112114 return claims
113115
114116
117+ class FakeScopeClaims (ScopeClaims ):
118+ info_pizza = (
119+ "Pizza" ,
120+ "Some description for the scope." ,
121+ )
122+
123+ def scope_pizza (self ):
124+ dic = {
125+ "pizza" : "Margherita" ,
126+ }
127+ return dic
128+
129+
115130def fake_sub_generator (user ):
116131 """
117132 Fake function for setting OIDC_IDTOKEN_SUB_GENERATOR.
@@ -123,8 +138,8 @@ def fake_idtoken_processing_hook(id_token, user, **kwargs):
123138 """
124139 Fake function for inserting some keys into token. Testing OIDC_IDTOKEN_PROCESSING_HOOK.
125140 """
126- id_token [' test_idtoken_processing_hook' ] = FAKE_RANDOM_STRING
127- id_token [' test_idtoken_processing_hook_user_email' ] = user .email
141+ id_token [" test_idtoken_processing_hook" ] = FAKE_RANDOM_STRING
142+ id_token [" test_idtoken_processing_hook_user_email" ] = user .email
128143 return id_token
129144
130145
@@ -133,32 +148,31 @@ def fake_idtoken_processing_hook2(id_token, user, **kwargs):
133148 Fake function for inserting some keys into token.
134149 Testing OIDC_IDTOKEN_PROCESSING_HOOK - tuple or list as param
135150 """
136- id_token [' test_idtoken_processing_hook2' ] = FAKE_RANDOM_STRING
137- id_token [' test_idtoken_processing_hook_user_email2' ] = user .email
151+ id_token [" test_idtoken_processing_hook2" ] = FAKE_RANDOM_STRING
152+ id_token [" test_idtoken_processing_hook_user_email2" ] = user .email
138153 return id_token
139154
140155
141156def fake_idtoken_processing_hook3 (id_token , user , token , ** kwargs ):
142157 """
143158 Fake function for checking scope is passed to processing hook.
144159 """
145- id_token [' scope_of_token_passed_to_processing_hook' ] = token .scope
160+ id_token [" scope_of_token_passed_to_processing_hook" ] = token .scope
146161 return id_token
147162
148163
149164def fake_idtoken_processing_hook4 (id_token , user , ** kwargs ):
150165 """
151166 Fake function for checking kwargs passed to processing hook.
152167 """
153- id_token ['kwargs_passed_to_processing_hook' ] = {
154- key : repr (value )
155- for (key , value ) in kwargs .items ()
168+ id_token ["kwargs_passed_to_processing_hook" ] = {
169+ key : repr (value ) for (key , value ) in kwargs .items ()
156170 }
157171 return id_token
158172
159173
160174def fake_introspection_processing_hook (response_dict , client , id_token ):
161- response_dict [' test_introspection_processing_hook' ] = FAKE_RANDOM_STRING
175+ response_dict [" test_introspection_processing_hook" ] = FAKE_RANDOM_STRING
162176 return response_dict
163177
164178
0 commit comments