11import jwt
22import pytest
33from datetime import datetime , timedelta
4+ import warnings
45
56from flask import Flask
67from jwt import ExpiredSignatureError , InvalidSignatureError , InvalidAudienceError
@@ -136,25 +137,36 @@ def test_encode_decode_callback_values(app, default_access_token):
136137 jwtM = get_jwt_manager (app )
137138 app .config ['JWT_SECRET_KEY' ] = 'foobarbaz'
138139 with app .test_request_context ():
139- assert jwtM ._decode_key_callback ({}) == 'foobarbaz'
140+ assert jwtM ._decode_key_callback ({}, {} ) == 'foobarbaz'
140141 assert jwtM ._encode_key_callback ({}) == 'foobarbaz'
141142
142143 @jwtM .encode_key_loader
143144 def get_encode_key_1 (identity ):
144145 return 'different secret'
145146 assert jwtM ._encode_key_callback ('' ) == 'different secret'
146147
147- # test decode key callback with two arguments (preferred)
148148 @jwtM .decode_key_loader
149149 def get_decode_key_1 (claims , headers ):
150150 return 'different secret'
151151 assert jwtM ._decode_key_callback ({}, {}) == 'different secret'
152152
153+
154+ def test_legacy_decode_key_callback (app , default_access_token ):
155+ jwtM = get_jwt_manager (app )
156+ app .config ['JWT_SECRET_KEY' ] = 'foobarbaz'
157+
153158 # test decode key callback with one argument (backwards compatibility)
154- @jwtM .decode_key_loader
155- def get_decode_key_2 (claims ):
156- return 'different secret'
157- assert jwtM ._decode_key_callback ({}) == 'different secret'
159+ with warnings .catch_warnings (record = True ) as w :
160+ warnings .simplefilter ("always" )
161+
162+ @jwtM .decode_key_loader
163+ def get_decode_key_legacy (claims ):
164+ return 'foobarbaz'
165+ with app .test_request_context ():
166+ token = encode_token (app , default_access_token )
167+ decode_token (token )
168+ assert len (w ) == 1
169+ assert issubclass (w [- 1 ].category , DeprecationWarning )
158170
159171
160172def test_custom_encode_decode_key_callbacks (app , default_access_token ):
@@ -176,7 +188,7 @@ def get_encode_key_1(identity):
176188 decode_token (token )
177189
178190 @jwtM .decode_key_loader
179- def get_decode_key_1 (claims ):
191+ def get_decode_key_1 (claims , headers ):
180192 assert claims ['identity' ] == 'username'
181193 return 'different secret'
182194
0 commit comments