@@ -56,16 +56,16 @@ def create_mock_session():
5656def create_mock_session_holder ():
5757 """Helper to create a mocked SessionHolder."""
5858 holder = MagicMock (spec = SessionHolder )
59- holder .session = create_mock_session ()
59+ holder .get_session . return_value = create_mock_session ()
6060 return holder
6161
6262
6363class TestHandleErrorResponse :
6464 """Test cases for the _handle_error_response function."""
6565
6666 @pytest .mark .asyncio
67- async def test_handle_error_response_marks_refresh_on_401 (self ):
68- """401 response marks the session holder for refresh ."""
67+ async def test_handle_error_response_logs_401 (self ):
68+ """401 response is handled without error ."""
6969 request = httpx .Request ('POST' , 'https://example.com/mcp' )
7070 response = httpx .Response (
7171 status_code = 401 ,
@@ -77,11 +77,9 @@ async def test_handle_error_response_marks_refresh_on_401(self):
7777
7878 await _handle_error_response (holder , response )
7979
80- holder .mark_needs_refresh .assert_called_once ()
81-
8280 @pytest .mark .asyncio
83- async def test_handle_error_response_marks_refresh_on_403 (self ):
84- """403 response marks the session holder for refresh ."""
81+ async def test_handle_error_response_logs_403 (self ):
82+ """403 response is handled without error ."""
8583 request = httpx .Request ('POST' , 'https://example.com/mcp' )
8684 response = httpx .Response (
8785 status_code = 403 ,
@@ -93,25 +91,6 @@ async def test_handle_error_response_marks_refresh_on_403(self):
9391
9492 await _handle_error_response (holder , response )
9593
96- holder .mark_needs_refresh .assert_called_once ()
97-
98- @pytest .mark .asyncio
99- async def test_handle_error_response_does_not_mark_refresh_on_other_errors (self ):
100- """Non-auth error codes (400, 404, 500) do not mark refresh."""
101- for status_code in (400 , 404 , 500 ):
102- request = httpx .Request ('POST' , 'https://example.com/mcp' )
103- response = httpx .Response (
104- status_code = status_code ,
105- headers = {'content-type' : 'text/plain' },
106- content = b'Error' ,
107- request = request ,
108- )
109- holder = create_mock_session_holder ()
110-
111- await _handle_error_response (holder , response )
112-
113- holder .mark_needs_refresh .assert_not_called ()
114-
11594 @pytest .mark .asyncio
11695 async def test_handle_error_response_with_json_error (self ):
11796 """Test error handling with JSON error response."""
@@ -401,15 +380,15 @@ class TestSignRequestHook:
401380 """Test cases for sign_request_hook function."""
402381
403382 @pytest .mark .asyncio
404- async def test_sign_request_hook_calls_refresh_if_needed (self ):
405- """Signing hook calls refresh_if_needed before signing ."""
383+ async def test_sign_request_hook_calls_get_session (self ):
384+ """Signing hook calls get_session to read fresh credentials ."""
406385 holder = create_mock_session_holder ()
407386 request_body = b'{"test": "data"}'
408387 request = httpx .Request ('POST' , 'https://example.com/mcp' , content = request_body )
409388
410389 await _sign_request_hook ('us-east-1' , 'execute-api' , holder , False , request )
411390
412- holder .refresh_if_needed .assert_called_once ()
391+ holder .get_session .assert_called_once ()
413392
414393 @pytest .mark .asyncio
415394 async def test_sign_request_hook_signs_request (self ):
@@ -482,7 +461,7 @@ async def test_sign_request_hook_with_partial_application(self):
482461 async def test_sign_request_hook_skips_signing_when_skip_auth (self ):
483462 """Request is sent unsigned when credentials are unavailable and skip_auth is True."""
484463 holder = create_mock_session_holder ()
485- holder .session .get_credentials .return_value = None
464+ holder .get_session . return_value .get_credentials .return_value = None
486465
487466 request_body = b'{"test": "data"}'
488467 request = httpx .Request ('POST' , 'https://example.com/mcp' , content = request_body )
@@ -497,7 +476,7 @@ async def test_sign_request_hook_skips_signing_when_skip_auth(self):
497476 async def test_sign_request_hook_raises_when_no_credentials_and_no_skip_auth (self ):
498477 """ValueError is raised when credentials are unavailable and skip_auth is False."""
499478 holder = create_mock_session_holder ()
500- holder .session .get_credentials .return_value = None
479+ holder .get_session . return_value .get_credentials .return_value = None
501480
502481 request_body = b'{"test": "data"}'
503482 request = httpx .Request ('POST' , 'https://example.com/mcp' , content = request_body )
@@ -506,25 +485,25 @@ async def test_sign_request_hook_raises_when_no_credentials_and_no_skip_auth(sel
506485 await _sign_request_hook ('us-east-1' , 'execute-api' , holder , False , request )
507486
508487 @pytest .mark .asyncio
509- async def test_sign_request_hook_no_credentials_still_refreshes (self ):
510- """refresh_if_needed is called even when credentials end up None."""
488+ async def test_sign_request_hook_no_credentials_still_calls_get_session (self ):
489+ """get_session is called even when credentials end up None."""
511490 holder = create_mock_session_holder ()
512- holder .session .get_credentials .return_value = None
491+ holder .get_session . return_value .get_credentials .return_value = None
513492
514493 request_body = b'test'
515494 request = httpx .Request ('POST' , 'https://example.com/mcp' , content = request_body )
516495
517496 with pytest .raises (ValueError ):
518497 await _sign_request_hook ('us-east-1' , 'execute-api' , holder , False , request )
519498
520- holder .refresh_if_needed .assert_called_once ()
499+ holder .get_session .assert_called_once ()
521500
522501 @pytest .mark .asyncio
523502 @patch ('mcp_proxy_for_aws.sigv4_helper.SigV4HTTPXAuth' )
524503 async def test_sign_request_hook_no_credentials_does_not_create_auth (self , mock_auth_class ):
525504 """SigV4HTTPXAuth is never instantiated when credentials are None and skip_auth is True."""
526505 holder = create_mock_session_holder ()
527- holder .session .get_credentials .return_value = None
506+ holder .get_session . return_value .get_credentials .return_value = None
528507
529508 request_body = b'test'
530509 request = httpx .Request ('POST' , 'https://example.com/mcp' , content = request_body )
0 commit comments