@@ -259,14 +259,14 @@ async def test_proxy_websocket_request(self, mocker):
259259 "matlab_proxy_manager.web.app._get_backend_server" ,
260260 return_value = {"absolute_url" : "http://server1" },
261261 )
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 " ,
264264 return_value = web .WebSocketResponse (),
265265 )
266266
267267 await app .proxy (mock_req )
268268
269- mock_handle_websocket .assert_called_once ()
269+ mock_forward_websocket .assert_called_once ()
270270
271271 async def test_proxy_http_request (self , mocker ):
272272 """
@@ -284,16 +284,16 @@ async def test_proxy_http_request(self, mocker):
284284
285285 mocker .patch (
286286 "matlab_proxy_manager.web.app._get_backend_server" ,
287- return_value = {"absolute_url" : "http://server" },
287+ return_value = {"absolute_url" : "http://server" , "headers" : {} },
288288 )
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 " ,
291291 return_value = web .Response (),
292292 )
293293
294294 await app .proxy (mock_req )
295295
296- mock_handle_http .assert_called_once ()
296+ mock_forward_http .assert_called_once ()
297297
298298 async def test_proxy_server_disconnected (self , mocker ):
299299 """
@@ -310,10 +310,10 @@ async def test_proxy_server_disconnected(self, mocker):
310310
311311 mocker .patch (
312312 "matlab_proxy_manager.web.app._get_backend_server" ,
313- return_value = {"absolute_url" : "http://backend" },
313+ return_value = {"absolute_url" : "http://backend" , "headers" : {} },
314314 )
315315 mocker .patch (
316- "matlab_proxy_manager.web.app._handle_http_request " ,
316+ "matlab_proxy_manager.web.app._forward_http_request " ,
317317 side_effect = client_exceptions .ServerDisconnectedError ,
318318 )
319319
@@ -339,13 +339,55 @@ async def test_proxy_unexpected_exception(self, mocker):
339339 return_value = {"absolute_url" : "http://backend" },
340340 )
341341 mocker .patch (
342- "matlab_proxy_manager.web.app._handle_http_request " ,
342+ "matlab_proxy_manager.web.app._forward_http_request " ,
343343 side_effect = Exception ("Unexpected error" ),
344344 )
345345
346346 with pytest .raises (web .HTTPNotFound ):
347347 await app .proxy (mock_req )
348348
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+
349391
350392@pytest .fixture
351393def patch_env_vars (monkeypatch ):
0 commit comments