@@ -157,7 +157,7 @@ def test_decode_jwt(self):
157157 'user_claims' : {'foo' : 'bar' },
158158 }
159159 encoded_token = jwt .encode (token_data , 'secret' , 'HS256' ).decode ('utf-8' )
160- data = decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False )
160+ data = decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False , identity_claim = 'identity' )
161161 self .assertIn ('exp' , data )
162162 self .assertIn ('iat' , data )
163163 self .assertIn ('nbf' , data )
@@ -188,7 +188,7 @@ def test_decode_jwt(self):
188188 'type' : 'refresh' ,
189189 }
190190 encoded_token = jwt .encode (token_data , 'secret' , 'HS256' ).decode ('utf-8' )
191- data = decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False )
191+ data = decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False , identity_claim = 'identity' )
192192 self .assertIn ('exp' , data )
193193 self .assertIn ('iat' , data )
194194 self .assertIn ('nbf' , data )
@@ -210,7 +210,7 @@ def test_decode_invalid_jwt(self):
210210 'exp' : datetime .utcnow () - timedelta (minutes = 5 ),
211211 }
212212 encoded_token = jwt .encode (token_data , 'secret' , 'HS256' ).decode ('utf-8' )
213- decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False )
213+ decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False , identity_claim = 'identity' )
214214
215215 # Missing jti
216216 with self .assertRaises (JWTDecodeError ):
@@ -220,7 +220,7 @@ def test_decode_invalid_jwt(self):
220220 'type' : 'refresh'
221221 }
222222 encoded_token = jwt .encode (token_data , 'secret' , 'HS256' ).decode ('utf-8' )
223- decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False )
223+ decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False , identity_claim = 'identity' )
224224
225225 # Missing identity
226226 with self .assertRaises (JWTDecodeError ):
@@ -230,7 +230,17 @@ def test_decode_invalid_jwt(self):
230230 'type' : 'refresh'
231231 }
232232 encoded_token = jwt .encode (token_data , 'secret' , 'HS256' ).decode ('utf-8' )
233- decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False )
233+ decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False , identity_claim = 'identity' )
234+
235+ # Non-matching identity claim
236+ with self .assertRaises (JWTDecodeError ):
237+ token_data = {
238+ 'exp' : datetime .utcnow () + timedelta (minutes = 5 ),
239+ 'identity' : 'banana' ,
240+ 'type' : 'refresh'
241+ }
242+ encoded_token = jwt .encode (token_data , 'secret' , 'HS256' ).decode ('utf-8' )
243+ decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False , identity_claim = 'sub' )
234244
235245 # Missing type
236246 with self .assertRaises (JWTDecodeError ):
@@ -240,7 +250,7 @@ def test_decode_invalid_jwt(self):
240250 'exp' : datetime .utcnow () + timedelta (minutes = 5 ),
241251 }
242252 encoded_token = jwt .encode (token_data , 'secret' , 'HS256' ).decode ('utf-8' )
243- decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False )
253+ decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False , identity_claim = 'identity' )
244254
245255 # Missing fresh in access token
246256 with self .assertRaises (JWTDecodeError ):
@@ -252,7 +262,7 @@ def test_decode_invalid_jwt(self):
252262 'user_claims' : {}
253263 }
254264 encoded_token = jwt .encode (token_data , 'secret' , 'HS256' ).decode ('utf-8' )
255- decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False )
265+ decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False , identity_claim = 'identity' )
256266
257267 # Missing user claims in access token
258268 with self .assertRaises (JWTDecodeError ):
@@ -264,7 +274,7 @@ def test_decode_invalid_jwt(self):
264274 'fresh' : True
265275 }
266276 encoded_token = jwt .encode (token_data , 'secret' , 'HS256' ).decode ('utf-8' )
267- decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False )
277+ decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False , identity_claim = 'identity' )
268278
269279 # Bad token type
270280 with self .assertRaises (JWTDecodeError ):
@@ -277,7 +287,7 @@ def test_decode_invalid_jwt(self):
277287 'user_claims' : 'banana'
278288 }
279289 encoded_token = jwt .encode (token_data , 'secret' , 'HS256' ).decode ('utf-8' )
280- decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False )
290+ decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = False , identity_claim = 'identity' )
281291
282292 # Missing csrf in csrf enabled token
283293 with self .assertRaises (JWTDecodeError ):
@@ -290,7 +300,7 @@ def test_decode_invalid_jwt(self):
290300 'user_claims' : 'banana'
291301 }
292302 encoded_token = jwt .encode (token_data , 'secret' , 'HS256' ).decode ('utf-8' )
293- decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = True )
303+ decode_jwt (encoded_token , 'secret' , 'HS256' , csrf = True , identity_claim = 'identity' )
294304
295305 def test_create_jwt_with_object (self ):
296306 # Complex object to test building a JWT from. Normally if you are using
@@ -322,12 +332,15 @@ def user_identity_lookup(user):
322332 user = TestUser (username = 'foo' , roles = ['bar' , 'baz' ])
323333 access_token = create_access_token (identity = user )
324334 refresh_token = create_refresh_token (identity = user )
335+ identity = 'identity'
325336
326337 # Decode the tokens and make sure the values are set properly
327338 access_token_data = decode_jwt (access_token , app .secret_key ,
328- app .config ['JWT_ALGORITHM' ], csrf = False )
339+ app .config ['JWT_ALGORITHM' ], csrf = False ,
340+ identity_claim = identity )
329341 refresh_token_data = decode_jwt (refresh_token , app .secret_key ,
330- app .config ['JWT_ALGORITHM' ], csrf = False )
331- self .assertEqual (access_token_data ['identity' ], 'foo' )
342+ app .config ['JWT_ALGORITHM' ], csrf = False ,
343+ identity_claim = identity )
344+ self .assertEqual (access_token_data [identity ], 'foo' )
332345 self .assertEqual (access_token_data ['user_claims' ]['roles' ], ['bar' , 'baz' ])
333- self .assertEqual (refresh_token_data [' identity' ], 'foo' )
346+ self .assertEqual (refresh_token_data [identity ], 'foo' )
0 commit comments