@@ -259,14 +259,14 @@ async def test_proxy_websocket_request(self, mocker):
259
259
"matlab_proxy_manager.web.app._get_backend_server" ,
260
260
return_value = {"absolute_url" : "http://server1" },
261
261
)
262
- mock_handle_websocket = mocker .patch (
263
- "matlab_proxy_manager.web.app._handle_websocket_request " ,
262
+ mock_forward_websocket = mocker .patch (
263
+ "matlab_proxy_manager.web.app._forward_websocket_request " ,
264
264
return_value = web .WebSocketResponse (),
265
265
)
266
266
267
267
await app .proxy (mock_req )
268
268
269
- mock_handle_websocket .assert_called_once ()
269
+ mock_forward_websocket .assert_called_once ()
270
270
271
271
async def test_proxy_http_request (self , mocker ):
272
272
"""
@@ -284,16 +284,16 @@ async def test_proxy_http_request(self, mocker):
284
284
285
285
mocker .patch (
286
286
"matlab_proxy_manager.web.app._get_backend_server" ,
287
- return_value = {"absolute_url" : "http://server" },
287
+ return_value = {"absolute_url" : "http://server" , "headers" : {} },
288
288
)
289
- mock_handle_http = mocker .patch (
290
- "matlab_proxy_manager.web.app._handle_http_request " ,
289
+ mock_forward_http = mocker .patch (
290
+ "matlab_proxy_manager.web.app._forward_http_request " ,
291
291
return_value = web .Response (),
292
292
)
293
293
294
294
await app .proxy (mock_req )
295
295
296
- mock_handle_http .assert_called_once ()
296
+ mock_forward_http .assert_called_once ()
297
297
298
298
async def test_proxy_server_disconnected (self , mocker ):
299
299
"""
@@ -310,10 +310,10 @@ async def test_proxy_server_disconnected(self, mocker):
310
310
311
311
mocker .patch (
312
312
"matlab_proxy_manager.web.app._get_backend_server" ,
313
- return_value = {"absolute_url" : "http://backend" },
313
+ return_value = {"absolute_url" : "http://backend" , "headers" : {} },
314
314
)
315
315
mocker .patch (
316
- "matlab_proxy_manager.web.app._handle_http_request " ,
316
+ "matlab_proxy_manager.web.app._forward_http_request " ,
317
317
side_effect = client_exceptions .ServerDisconnectedError ,
318
318
)
319
319
@@ -339,13 +339,55 @@ async def test_proxy_unexpected_exception(self, mocker):
339
339
return_value = {"absolute_url" : "http://backend" },
340
340
)
341
341
mocker .patch (
342
- "matlab_proxy_manager.web.app._handle_http_request " ,
342
+ "matlab_proxy_manager.web.app._forward_http_request " ,
343
343
side_effect = Exception ("Unexpected error" ),
344
344
)
345
345
346
346
with pytest .raises (web .HTTPNotFound ):
347
347
await app .proxy (mock_req )
348
348
349
+ async def test_proxy_correct_req_headers_are_forwarded (self , mocker ):
350
+ """
351
+ Test that the correct request headers are forwarded to the backend server.
352
+
353
+ This test ensures that the proxy function correctly forwards the necessary
354
+ headers to the backend server, including the MWI-MPM-CONTEXT header.
355
+ """
356
+ mock_req = mocker .AsyncMock ()
357
+ mock_req .read = mocker .AsyncMock (return_value = b"request_body" )
358
+ mock_req .rel_url = "/matlab/default/some/path"
359
+ mock_req .headers = {
360
+ "JSESSION-ID" : "123456789" ,
361
+ "MWI-MPM-CONTEXT" : "test_context" ,
362
+ }
363
+ mock_req .method = "GET"
364
+
365
+ mocker .patch (
366
+ "matlab_proxy_manager.web.app._get_backend_server" ,
367
+ return_value = {
368
+ "absolute_url" : "http://server1" ,
369
+ "headers" : {"MWI-AUTH-TOKEN" : "token" },
370
+ },
371
+ )
372
+ mock_forward_http = mocker .patch (
373
+ "matlab_proxy_manager.web.app._forward_http_request" ,
374
+ return_value = web .Response (),
375
+ )
376
+ await app .proxy (mock_req )
377
+ mock_forward_http .assert_called_once_with (
378
+ mock_req ,
379
+ b"request_body" ,
380
+ "http://server1/some/path" ,
381
+ {
382
+ ** mock_req .headers ,
383
+ ** {
384
+ "MWI-AUTH-TOKEN" : "token" ,
385
+ "Content-Length" : "12" ,
386
+ "X-Forwarded-Proto" : "http" ,
387
+ },
388
+ },
389
+ )
390
+
349
391
350
392
@pytest .fixture
351
393
def patch_env_vars (monkeypatch ):
0 commit comments