Skip to content

Commit cfbf360

Browse files
committed
Add test for websocket aws-cn fix
1 parent 5c22a14 commit cfbf360

File tree

3 files changed

+32
-4
lines changed

3 files changed

+32
-4
lines changed

chalice/app.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -611,9 +611,13 @@ def configure_from_api_id(self, api_id, stage):
611611
region_name = self._get_region()
612612

613613
if region_name.startswith("cn-"):
614-
domain_name_template = '{api_id}.execute-api.{region}.amazonaws.com.cn'
614+
domain_name_template = (
615+
'{api_id}.execute-api.{region}.amazonaws.com.cn'
616+
)
615617
else:
616-
domain_name_template = '{api_id}.execute-api.{region}.amazonaws.com'
618+
domain_name_template = (
619+
'{api_id}.execute-api.{region}.amazonaws.com'
620+
)
617621

618622
domain_name = domain_name_template.format(
619623
api_id=api_id, region=region_name)

tests/unit/conftest.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,11 +183,13 @@ def create_event_inner(uri, method, path, content_type='application/json'):
183183

184184
@fixture
185185
def create_websocket_event():
186-
def create_event_inner(route_key, body=''):
186+
def create_event_inner(
187+
route_key, body='',
188+
endpoint='abcd1234.execute-api.us-west-2.amazonaws.com'):
187189
return {
188190
'requestContext': {
189191
'routeKey': route_key,
190-
'domainName': 'abcd1234.execute-api.us-west-2.amazonaws.com',
192+
'domainName': endpoint,
191193
'stage': 'api',
192194
'connectionId': 'ABCD1234=',
193195
'apiId': 'abcd1234',

tests/unit/test_app.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2824,6 +2824,28 @@ def test_can_configure_client_on_connect(sample_websocket_app,
28242824
]
28252825

28262826

2827+
def test_can_configure_non_aws_partition_clients(sample_websocket_app,
2828+
create_websocket_event,
2829+
monkeypatch):
2830+
# tests/conftest.py already monkeypatches out environment variables,
2831+
# so if we want a test with a specific region we have to use the
2832+
# same approach and monkeypatch the os.environ.
2833+
monkeypatch.setenv('AWS_REGION', 'cn-north-1')
2834+
demo, _ = sample_websocket_app
2835+
client = FakeClient()
2836+
demo.websocket_api.session = FakeSession(client)
2837+
event = create_websocket_event(
2838+
'$connect',
2839+
endpoint='abcd1234.execute-api.cn-north-1.amazonaws.com.cn')
2840+
handler = websocket_handler_for_route('$connect', demo)
2841+
handler(event, context=None)
2842+
2843+
assert demo.websocket_api.session.calls == [
2844+
('apigatewaymanagementapi',
2845+
'https://abcd1234.execute-api.cn-north-1.amazonaws.com.cn/api'),
2846+
]
2847+
2848+
28272849
def test_uses_api_id_not_domain_name(sample_websocket_app,
28282850
create_websocket_event):
28292851
demo, calls = sample_websocket_app

0 commit comments

Comments
 (0)