Unknown regions - bug in caching mechanism (#4895)
This commit is contained in:
parent
9ab0ac4fb3
commit
b3bc419843
@ -416,6 +416,8 @@ class BackendDict(dict):
|
|||||||
return item in self.regions or item in self.keys()
|
return item in self.regions or item in self.keys()
|
||||||
|
|
||||||
def __getitem__(self, item):
|
def __getitem__(self, item):
|
||||||
|
if item in self.keys():
|
||||||
|
return super().__getitem__(item)
|
||||||
# Create the backend for a specific region
|
# Create the backend for a specific region
|
||||||
if item in self.regions and item not in self.keys():
|
if item in self.regions and item not in self.keys():
|
||||||
super().__setitem__(item, self.fn(item))
|
super().__setitem__(item, self.fn(item))
|
||||||
|
@ -7,8 +7,8 @@ url_bases = [
|
|||||||
|
|
||||||
|
|
||||||
url_paths = {
|
url_paths = {
|
||||||
"{0}/v20180820/configuration/publicAccessBlock$": S3ControlResponseInstance.public_access_block,
|
r"{0}/v20180820/configuration/publicAccessBlock$": S3ControlResponseInstance.public_access_block,
|
||||||
"{0}/v20180820/accesspoint/(?P<name>[\w_:%-]+)$": S3ControlResponseInstance.access_point,
|
r"{0}/v20180820/accesspoint/(?P<name>[\w_:%-]+)$": S3ControlResponseInstance.access_point,
|
||||||
"{0}/v20180820/accesspoint/(?P<name>[\w_:%-]+)/policy$": S3ControlResponseInstance.access_point_policy,
|
r"{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/accesspoint/(?P<name>[\w_:%-]+)/policyStatus$": S3ControlResponseInstance.access_point_policy_status,
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ import boto3
|
|||||||
import mock
|
import mock
|
||||||
import os
|
import os
|
||||||
import pytest
|
import pytest
|
||||||
from moto import mock_sns, settings
|
from moto import mock_dynamodb2, mock_sns, settings
|
||||||
from unittest import SkipTest
|
from unittest import SkipTest
|
||||||
|
|
||||||
|
|
||||||
@ -42,3 +42,20 @@ def test_use_unknown_region_from_env_but_allow_it():
|
|||||||
raise SkipTest("Cannot set environemnt variables in ServerMode")
|
raise SkipTest("Cannot set environemnt variables in ServerMode")
|
||||||
client = boto3.client("sns")
|
client = boto3.client("sns")
|
||||||
client.list_platform_applications()["PlatformApplications"].should.equal([])
|
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"])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user