Skip to content

Commit 53d10fa

Browse files
committed
tests: stop depending on the values of S3 endpoints
They seem to differ between botocore versions, so specify them manually or mock `get_s3_endpoint` in the tests that need them.
1 parent 7e0e7b7 commit 53d10fa

File tree

2 files changed

+23
-28
lines changed

2 files changed

+23
-28
lines changed

stacker/tests/actions/test_base.py

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
from __future__ import print_function
22
from __future__ import division
33
from __future__ import absolute_import
4+
from future import standard_library
5+
standard_library.install_aliases()
6+
47
import unittest
58

6-
from botocore.stub import Stubber, ANY
9+
import mock
10+
711
import botocore.exceptions
12+
from botocore.stub import Stubber, ANY
813

914
from stacker.actions.base import (
1015
BaseAction
1116
)
12-
13-
from stacker.providers.aws.default import Provider
1417
from stacker.blueprints.base import Blueprint
18+
from stacker.providers.aws.default import Provider
1519
from stacker.session_cache import get_session
1620

1721
from stacker.tests.factories import (
@@ -121,30 +125,27 @@ def test_ensure_cfn_forbidden(self):
121125
action.ensure_cfn_bucket()
122126

123127
def test_stack_template_url(self):
124-
test_cases = (
125-
("us-east-1", "s3.amazonaws.com"),
126-
("us-west-1", "s3.us-west-1.amazonaws.com"),
127-
("eu-west-1", "s3.eu-west-1.amazonaws.com"),
128-
("sa-east-1", "s3.sa-east-1.amazonaws.com"),
129-
)
130128
context = mock_context("mynamespace")
131129
blueprint = TestBlueprint(name="myblueprint", context=context)
132130

133-
for region, endpoint in test_cases:
134-
session = get_session(region)
135-
provider = Provider(session)
136-
action = BaseAction(
137-
context=context,
138-
provider_builder=MockProviderBuilder(provider, region=region)
139-
)
131+
region = "us-east-1"
132+
endpoint = "https://example.com"
133+
session = get_session(region)
134+
provider = Provider(session)
135+
action = BaseAction(
136+
context=context,
137+
provider_builder=MockProviderBuilder(provider, region=region)
138+
)
139+
140+
with mock.patch('stacker.actions.base.get_s3_endpoint', autospec=True,
141+
return_value=endpoint):
140142
self.assertEqual(
141143
action.stack_template_url(blueprint),
142-
"https://%s/%s/stack_templates/%s/%s-%s.json" % (
144+
"%s/%s/stack_templates/%s/%s-%s.json" % (
143145
endpoint,
144146
"stacker-mynamespace",
145147
"mynamespace-myblueprint",
146148
"myblueprint",
147149
MOCK_VERSION
148-
149150
)
150151
)

stacker/tests/test_util.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -129,16 +129,10 @@ def test_get_client_region(self):
129129
self.assertEqual(get_client_region(client), region)
130130

131131
def test_get_s3_endpoint(self):
132-
endpoint_map = {
133-
"us-east-1": "https://s3.amazonaws.com",
134-
"us-west-1": "https://s3.us-west-1.amazonaws.com",
135-
"eu-west-1": "https://s3.eu-west-1.amazonaws.com",
136-
"sa-east-1": "https://s3.sa-east-1.amazonaws.com",
137-
}
138-
139-
for region in endpoint_map:
140-
client = boto3.client("s3", region_name=region)
141-
self.assertEqual(get_s3_endpoint(client), endpoint_map[region])
132+
endpoint_url = "https://example.com"
133+
client = boto3.client("s3", region_name="us-east-1",
134+
endpoint_url=endpoint_url)
135+
self.assertEqual(get_s3_endpoint(client), endpoint_url)
142136

143137
def test_s3_bucket_location_constraint(self):
144138
tests = (

0 commit comments

Comments
 (0)