@@ -93,6 +93,17 @@ def do_POST(self):
93
93
logging .debug ("POST finish" )
94
94
95
95
96
+ class AuthorizationHeaderHandler (ContentDispoHandler ):
97
+ def do_GET (self ):
98
+ if self .headers .get ("Authorization" ) != "Bearer toto" :
99
+ self .send_response (403 )
100
+ self .end_headers ()
101
+ self .wfile .close ()
102
+ return
103
+
104
+ super (AuthorizationHeaderHandler , self ).do_GET ()
105
+
106
+
96
107
def run_server (handler , func ):
97
108
server = HTTPServer (("localhost" , 0 ), handler )
98
109
try :
@@ -220,3 +231,28 @@ def func(server, url):
220
231
run_server (MultiPartPostHandler , func )
221
232
222
233
run_server (ServerErrorHandler , outter_func )
234
+
235
+ def test_authorization_header (self , socket_enabled ):
236
+ def func (server , base_url ):
237
+ with HTTPSession () as session :
238
+ # first test with no authorization header
239
+ try :
240
+ result = session .download_file (
241
+ base_url + "dummy" , dest = "." , exception_on_error = True
242
+ )
243
+ raise AssertionError ("exception not raised" )
244
+ except HTTPError as e :
245
+ assert e .status == 403
246
+ # second test with authorization header
247
+ result = session .download_file (
248
+ base_url + "dummy" ,
249
+ dest = "." ,
250
+ exception_on_error = True ,
251
+ headers = {"Authorization" : "Bearer toto" },
252
+ )
253
+ with open (result , "rb" ) as fd :
254
+ content = fd .read ()
255
+ assert content == b"Dummy!"
256
+ assert os .path .basename (result ) == "dummy.txt"
257
+
258
+ run_server (AuthorizationHeaderHandler , func )
0 commit comments