Skip to content

Commit 6e3186a

Browse files
committed
Get back to 100% test coverage
1 parent ad09c9f commit 6e3186a

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

tests/test_protected_endpoints.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import json
22
import time
33
import unittest
4-
from datetime import timedelta
4+
from datetime import datetime, timedelta
55

66
from flask import Flask, jsonify
7+
import jwt
8+
79
from flask_jwt_extended.utils import _encode_access_token, get_jwt_claims, \
810
get_jwt_identity, set_refresh_cookies, set_access_cookies
911
from 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

Comments
 (0)