1818from aws_mcp_proxy .utils import (
1919 create_transport_with_sigv4 ,
2020 determine_service_name ,
21+ determine_aws_region ,
2122)
2223from fastmcp .client .transports import StreamableHttpTransport
2324from unittest .mock import MagicMock , patch
@@ -35,8 +36,9 @@ def test_create_transport_with_sigv4(self, mock_create_sigv4_client):
3536 url = 'https://eks-mcp.us-west-2.api.aws/mcp'
3637 service = 'eks-mcp'
3738 profile = 'test-profile'
39+ region = 'us-east-1'
3840
39- result = create_transport_with_sigv4 (url , service , profile )
41+ result = create_transport_with_sigv4 (url , service , profile , region )
4042
4143 # Verify result is StreamableHttpTransport
4244 assert isinstance (result , StreamableHttpTransport )
@@ -54,6 +56,7 @@ def test_create_transport_with_sigv4(self, mock_create_sigv4_client):
5456 mock_create_sigv4_client .assert_called_once_with (
5557 service = service ,
5658 profile = profile ,
59+ region = region ,
5760 headers = {'test' : 'header' },
5861 timeout = Timeout (30.0 ),
5962 auth = None ,
@@ -77,7 +80,7 @@ def test_create_transport_with_sigv4_no_profile(self, mock_create_sigv4_client):
7780 factory (headers = None , timeout = None , auth = None )
7881
7982 mock_create_sigv4_client .assert_called_once_with (
80- service = service , profile = None , headers = None , timeout = None , auth = None
83+ service = service , profile = None , region = None , headers = None , timeout = None , auth = None
8184 )
8285 else :
8386 # If we can't access the factory directly, just verify the transport was created
@@ -144,3 +147,45 @@ def test_validate_service_name_invalid_url_failure(self):
144147 assert 'Could not determine AWS service name' in str (exc_info .value )
145148 assert endpoint in str (exc_info .value )
146149 assert '--service argument' in str (exc_info .value )
150+
151+
152+ class TestDetermineRegion :
153+ """Test cases for determine_aws_region function."""
154+
155+ def test_determine_region_with_region (self ):
156+ """Test determination when region is provided."""
157+ endpoint = 'https://mcp.us-east-1.api.aws/mcp'
158+ region = 'custom-region'
159+
160+ result = determine_aws_region (endpoint , region )
161+
162+ assert result == region
163+
164+ def test_determine_region_without_region_success (self ):
165+ """Test determination when region is not provided but can be parsed."""
166+ endpoint = 'https://mcp.us-east-1.api.aws/mcp'
167+ expected_region = 'us-east-1'
168+
169+ result = determine_aws_region (endpoint )
170+
171+ assert result == expected_region
172+
173+ def test_determine_region_with_complex_service_name (self ):
174+ """Test parsing region from endpoint with complex service name."""
175+ endpoint = 'https://eks-mcp-beta.us-west-2.api.aws/mcp'
176+ expected_region = 'us-west-2'
177+
178+ result = determine_aws_region (endpoint )
179+
180+ assert result == expected_region
181+
182+ def test_determine_region_without_region_failure (self ):
183+ """Test determination when region cannot be determined."""
184+ endpoint = 'https://service.example.com'
185+
186+ with pytest .raises (ValueError ) as exc_info :
187+ determine_aws_region (endpoint )
188+
189+ assert 'Could not determine AWS region' in str (exc_info .value )
190+ assert endpoint in str (exc_info .value )
191+ assert '--region argument' in str (exc_info .value )
0 commit comments