@@ -210,6 +210,30 @@ def test_jwt_missing_claims(app):
210210 assert response .get_json () == {'msg' : 'Missing claim: identity' }
211211
212212
213+ def test_jwt_invalid_audience (app ):
214+ url = '/protected'
215+ jwtM = get_jwt_manager (app )
216+ test_client = app .test_client ()
217+
218+ # No audience claim expected or provided - OK
219+ access_token = encode_token (app , {'identity' : 'me' })
220+ response = test_client .get (url , headers = make_headers (access_token ))
221+ assert response .status_code == 200
222+
223+ # Audience claim expected and not provided - not OK
224+ app .config ['JWT_DECODE_AUDIENCE' ] = 'my_audience'
225+ access_token = encode_token (app , {'identity' : 'me' })
226+ response = test_client .get (url , headers = make_headers (access_token ))
227+ assert response .status_code == 422
228+ assert response .get_json () == {'msg' : 'Token is missing the "aud" claim' }
229+
230+ # Audience claim still expected and wrong one provided - not OK
231+ access_token = encode_token (app , {'aud' : 'different_audience' , 'identity' : 'me' })
232+ response = test_client .get (url , headers = make_headers (access_token ))
233+ assert response .status_code == 422
234+ assert response .get_json () == {'msg' : 'Invalid audience' }
235+
236+
213237def test_expired_token (app ):
214238 url = '/protected'
215239 jwtM = get_jwt_manager (app )
0 commit comments