@@ -79,17 +79,52 @@ def test_paseto_required(client, Authorize):
7979 assert response .json () == {"hello" : "world" }
8080
8181
82- def test_paseto_optional (client , Authorize ):
83- url = "/paseto-optional"
84- # if header not define return anonym user
85- response = client .get (url )
86- assert response .status_code == 200
82+ def test_paseto_optional (client , Authorize ):
83+ url = "/paseto-optional"
84+ # if header not define return anonym user
85+ response = client .get (url )
86+ assert response .status_code == 200
8787 assert response .json () == {"hello" : "anonym" }
8888
8989 token = Authorize .create_access_token (subject = "test" )
90- response = client .get (url , headers = {"Authorization" : f"Bearer { token } " })
91- assert response .status_code == 200
92- assert response .json () == {"hello" : "world" }
90+ response = client .get (url , headers = {"Authorization" : f"Bearer { token } " })
91+ assert response .status_code == 200
92+ assert response .json () == {"hello" : "world" }
93+
94+
95+ def test_paseto_optional_does_not_leak_previous_subject (client , Authorize ):
96+ url = "/paseto-optional"
97+ token = Authorize .create_access_token (subject = "test" )
98+
99+ authorized_response = client .get (
100+ url ,
101+ headers = {"Authorization" : f"Bearer { token } " },
102+ )
103+ assert authorized_response .status_code == 200
104+ assert authorized_response .json () == {"hello" : "world" }
105+
106+ anonymous_response = client .get (url )
107+ assert anonymous_response .status_code == 200
108+ assert anonymous_response .json () == {"hello" : "anonym" }
109+
110+
111+ def test_paseto_optional_invalid_token_does_not_leak_previous_subject (client , Authorize ):
112+ url = "/paseto-optional"
113+ token = Authorize .create_access_token (subject = "test" )
114+
115+ authorized_response = client .get (
116+ url ,
117+ headers = {"Authorization" : f"Bearer { token } " },
118+ )
119+ assert authorized_response .status_code == 200
120+ assert authorized_response .json () == {"hello" : "world" }
121+
122+ invalid_response = client .get (
123+ url ,
124+ headers = {"Authorization" : "Bearer invalid" },
125+ )
126+ assert invalid_response .status_code == 200
127+ assert invalid_response .json () == {"hello" : "anonym" }
93128
94129
95130def test_refresh_required (client , Authorize ):
0 commit comments