1
1
import unittest
2
- from unittest .mock import patch
2
+ from unittest .mock import patch , MagicMock
3
3
from flask import Flask , jsonify , request
4
4
import jwt
5
- from jwt_proxy .api import validate_jwt
6
5
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"
8
12
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"
14
13
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 ):
19
15
20
- self .app = app
16
+ def setUp (self ):
17
+ app .testing = True
21
18
self .client = app .test_client ()
22
19
23
- @patch ('jwt_proxy.api.proxy_request' ) # Adjust the import path for proxy_request
20
+ @patch ('jwt_proxy.api.proxy_request' )
24
21
def test_path_whitelist (self , mock_proxy_request ):
25
22
# 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' )
27
24
response = self .client .get ("/allowed_path" )
28
25
self .assertEqual (response .status_code , 200 )
29
26
self .assertEqual (response .json , {"message" : "request proxied" })
30
27
31
- @patch ('jwt_proxy.api.proxy_request' ) # Adjust the import path for proxy_request
28
+ @patch ('jwt_proxy.api.proxy_request' )
32
29
@patch ('jwt.PyJWKClient' )
33
30
@patch ('jwt.decode' )
34
31
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' )
36
33
mock_jwks_client .return_value .get_signing_key_from_jwt .return_value .key = "test-key"
37
34
mock_decode .
return_value = {
"email" :
"[email protected] " }
38
35
@@ -41,15 +38,15 @@ def test_valid_token(self, mock_decode, mock_jwks_client, mock_proxy_request):
41
38
self .assertEqual (response .status_code , 200 )
42
39
self .assertEqual (response .json , {"message" : "request proxied" })
43
40
44
- @patch ('jwt_proxy.api.proxy_request' ) # Adjust the import path for proxy_request
41
+ @patch ('jwt_proxy.api.proxy_request' )
45
42
@patch ('jwt.PyJWKClient' )
46
43
@patch ('jwt.decode' )
47
44
def test_missing_token (self , mock_decode , mock_jwks_client , mock_proxy_request ):
48
45
response = self .client .get ("/some_path" )
49
46
self .assertEqual (response .status_code , 400 )
50
47
self .assertEqual (response .json , {"message" : "token missing" })
51
48
52
- @patch ('jwt_proxy.api.proxy_request' ) # Adjust the import path for proxy_request
49
+ @patch ('jwt_proxy.api.proxy_request' )
53
50
@patch ('jwt.PyJWKClient' )
54
51
@patch ('jwt.decode' )
55
52
def test_expired_token (self , mock_decode , mock_jwks_client , mock_proxy_request ):
0 commit comments