11import json
22import time
33import unittest
4- from datetime import timedelta
4+ from datetime import datetime , timedelta
55
66from flask import Flask , jsonify
7+ import jwt
8+
79from flask_jwt_extended .utils import _encode_access_token , get_jwt_claims , \
810 get_jwt_identity , set_refresh_cookies , set_access_cookies
911from flask_jwt_extended import JWTManager , create_refresh_token , \
@@ -16,6 +18,7 @@ class TestEndpoints(unittest.TestCase):
1618 def setUp (self ):
1719 self .app = Flask (__name__ )
1820 self .app .secret_key = 'super=secret'
21+ self .app .config ['JWT_ALGORITHM' ] = 'HS256'
1922 self .app .config ['JWT_ACCESS_TOKEN_EXPIRES' ] = timedelta (seconds = 1 )
2023 self .app .config ['JWT_REFRESH_TOKEN_EXPIRES' ] = timedelta (seconds = 1 )
2124 self .jwt_manager = JWTManager (self .app )
@@ -251,6 +254,18 @@ def test_bad_tokens(self):
251254 self .assertEqual (status_code , 422 )
252255 self .assertIn ('msg' , data )
253256
257+ # Test with valid token that is missing required claims
258+ now = datetime .utcnow ()
259+ token_data = {'exp' : now + timedelta (minutes = 5 )}
260+ encoded_token = jwt .encode (token_data , self .app .config ['SECRET_KEY' ],
261+ self .app .config ['JWT_ALGORITHM' ]).decode ('utf-8' )
262+ auth_header = "Bearer {}" .format (encoded_token )
263+ response = self .client .get ('/protected' , headers = {'Authorization' : auth_header })
264+ data = json .loads (response .get_data (as_text = True ))
265+ status_code = response .status_code
266+ self .assertEqual (status_code , 422 )
267+ self .assertIn ('msg' , data )
268+
254269 def test_jwt_identity_claims (self ):
255270 # Setup custom claims
256271 @self .jwt_manager .user_claims_loader
0 commit comments