Skip to content

Commit

Permalink
Unknown regions - bug in caching mechanism (#4895)
Browse files Browse the repository at this point in the history
  • Loading branch information
bblommers committed Feb 27, 2022
1 parent 9ab0ac4 commit b3bc419
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 5 deletions.
2 changes: 2 additions & 0 deletions moto/core/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,8 @@ def __contains__(self, item):
return item in self.regions or item in self.keys()

def __getitem__(self, item):
if item in self.keys():
return super().__getitem__(item)
# Create the backend for a specific region
if item in self.regions and item not in self.keys():
super().__setitem__(item, self.fn(item))
Expand Down
8 changes: 4 additions & 4 deletions moto/s3control/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@


url_paths = {
"{0}/v20180820/configuration/publicAccessBlock$": S3ControlResponseInstance.public_access_block,
"{0}/v20180820/accesspoint/(?P<name>[\w_:%-]+)$": S3ControlResponseInstance.access_point,
"{0}/v20180820/accesspoint/(?P<name>[\w_:%-]+)/policy$": S3ControlResponseInstance.access_point_policy,
"{0}/v20180820/accesspoint/(?P<name>[\w_:%-]+)/policyStatus$": S3ControlResponseInstance.access_point_policy_status,
r"{0}/v20180820/configuration/publicAccessBlock$": S3ControlResponseInstance.public_access_block,
r"{0}/v20180820/accesspoint/(?P<name>[\w_:%-]+)$": S3ControlResponseInstance.access_point,
r"{0}/v20180820/accesspoint/(?P<name>[\w_:%-]+)/policy$": S3ControlResponseInstance.access_point_policy,
r"{0}/v20180820/accesspoint/(?P<name>[\w_:%-]+)/policyStatus$": S3ControlResponseInstance.access_point_policy_status,
}
19 changes: 18 additions & 1 deletion tests/test_core/test_mock_regions.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import mock
import os
import pytest
from moto import mock_sns, settings
from moto import mock_dynamodb2, mock_sns, settings
from unittest import SkipTest


Expand Down Expand Up @@ -42,3 +42,20 @@ def test_use_unknown_region_from_env_but_allow_it():
raise SkipTest("Cannot set environemnt variables in ServerMode")
client = boto3.client("sns")
client.list_platform_applications()["PlatformApplications"].should.equal([])


@mock_dynamodb2
@mock.patch.dict(os.environ, {"MOTO_ALLOW_NONEXISTENT_REGION": "trUe"})
def test_use_unknown_region_from_env_but_allow_it__dynamo():
if settings.TEST_SERVER_MODE:
raise SkipTest("Cannot set environemnt variables in ServerMode")
dynamo_db = boto3.resource("dynamodb", region_name="test")
dynamo_db.create_table(
TableName="test_table",
KeySchema=[{"AttributeName": "key", "KeyType": "HASH"}],
AttributeDefinitions=[{"AttributeName": "key", "AttributeType": "S"}],
BillingMode="PAY_PER_REQUEST",
)
tables = list(dynamo_db.tables.all())
tables.should.have.length_of(1)
[table.name for table in tables].should.equal(["test_table"])

0 comments on commit b3bc419

Please sign in to comment.