11import unittest
2- from unittest .mock import patch
2+ from unittest .mock import patch , MagicMock
33from flask import Flask , jsonify , request
44import jwt
5- from jwt_proxy .api import validate_jwt
65
7- class TestValidateJWT (unittest .TestCase ):
6+ # Assume blueprint and validate_jwt function are defined in your application
7+ # For testing purposes, we'll use a simple Flask app
8+ app = Flask (__name__ )
9+ app .config ["PATH_WHITELIST" ] = ["/allowed_path" ]
10+ app .config ["UPSTREAM_SERVER" ] = "http://upstream-server"
11+ app .config ["JWKS_URL" ] = "http://jwks-url"
812
9- def setUp (self ):
10- app = Flask (__name__ )
11- app .config ["PATH_WHITELIST" ] = ["/allowed_path" ]
12- app .config ["UPSTREAM_SERVER" ] = "http://upstream-server"
13- app .config ["JWKS_URL" ] = "http://jwks-url"
1413
15- @app .route ("/" , defaults = {"relative_path" : "" }, methods = ["GET" , "POST" ])
16- @app .route ("/<path:relative_path>" , methods = ["GET" , "POST" ])
17- def validate_jwt_route (relative_path ):
18- return validate_jwt (relative_path )
14+ class TestValidateJWT (unittest .TestCase ):
1915
20- self .app = app
16+ def setUp (self ):
17+ app .testing = True
2118 self .client = app .test_client ()
2219
23- @patch ('jwt_proxy.api.proxy_request' ) # Adjust the import path for proxy_request
20+ @patch ('jwt_proxy.api.proxy_request' )
2421 def test_path_whitelist (self , mock_proxy_request ):
2522 # Mock response as a Flask Response object directly
26- mock_proxy_request .return_value = jsonify ( message = "request proxied" )
23+ mock_proxy_request .return_value = self . client . get ( '/allowed_path' )
2724 response = self .client .get ("/allowed_path" )
2825 self .assertEqual (response .status_code , 200 )
2926 self .assertEqual (response .json , {"message" : "request proxied" })
3027
31- @patch ('jwt_proxy.api.proxy_request' ) # Adjust the import path for proxy_request
28+ @patch ('jwt_proxy.api.proxy_request' )
3229 @patch ('jwt.PyJWKClient' )
3330 @patch ('jwt.decode' )
3431 def test_valid_token (self , mock_decode , mock_jwks_client , mock_proxy_request ):
35- mock_proxy_request .return_value = jsonify ( message = "request proxied" )
32+ mock_proxy_request .return_value = self . client . get ( '/some_path' )
3633 mock_jwks_client .return_value .get_signing_key_from_jwt .return_value .key = "test-key"
3734 mock_decode .
return_value = {
"email" :
"[email protected] " }
3835
@@ -41,15 +38,15 @@ def test_valid_token(self, mock_decode, mock_jwks_client, mock_proxy_request):
4138 self .assertEqual (response .status_code , 200 )
4239 self .assertEqual (response .json , {"message" : "request proxied" })
4340
44- @patch ('jwt_proxy.api.proxy_request' ) # Adjust the import path for proxy_request
41+ @patch ('jwt_proxy.api.proxy_request' )
4542 @patch ('jwt.PyJWKClient' )
4643 @patch ('jwt.decode' )
4744 def test_missing_token (self , mock_decode , mock_jwks_client , mock_proxy_request ):
4845 response = self .client .get ("/some_path" )
4946 self .assertEqual (response .status_code , 400 )
5047 self .assertEqual (response .json , {"message" : "token missing" })
5148
52- @patch ('jwt_proxy.api.proxy_request' ) # Adjust the import path for proxy_request
49+ @patch ('jwt_proxy.api.proxy_request' )
5350 @patch ('jwt.PyJWKClient' )
5451 @patch ('jwt.decode' )
5552 def test_expired_token (self , mock_decode , mock_jwks_client , mock_proxy_request ):
0 commit comments