Keep current region when creating SNS ARN topic
This commit is contained in:
parent
9c81b7340c
commit
e08796bcf4
@ -27,7 +27,7 @@ class Topic(object):
|
|||||||
self.policy = DEFAULT_TOPIC_POLICY
|
self.policy = DEFAULT_TOPIC_POLICY
|
||||||
self.delivery_policy = ""
|
self.delivery_policy = ""
|
||||||
self.effective_delivery_policy = DEFAULT_EFFECTIVE_DELIVERY_POLICY
|
self.effective_delivery_policy = DEFAULT_EFFECTIVE_DELIVERY_POLICY
|
||||||
self.arn = make_arn_for_topic(self.account_id, name)
|
self.arn = make_arn_for_topic(self.account_id, name, sns_backend.region_name)
|
||||||
|
|
||||||
self.subscriptions_pending = 0
|
self.subscriptions_pending = 0
|
||||||
self.subscriptions_confimed = 0
|
self.subscriptions_confimed = 0
|
||||||
@ -135,11 +135,18 @@ class PlatformEndpoint(object):
|
|||||||
|
|
||||||
|
|
||||||
class SNSBackend(BaseBackend):
|
class SNSBackend(BaseBackend):
|
||||||
def __init__(self):
|
def __init__(self, region_name):
|
||||||
|
super(SNSBackend, self).__init__()
|
||||||
self.topics = OrderedDict()
|
self.topics = OrderedDict()
|
||||||
self.subscriptions = OrderedDict()
|
self.subscriptions = OrderedDict()
|
||||||
self.applications = {}
|
self.applications = {}
|
||||||
self.platform_endpoints = {}
|
self.platform_endpoints = {}
|
||||||
|
self.region_name = region_name
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
region_name = self.region_name
|
||||||
|
self.__dict__ = {}
|
||||||
|
self.__init__(region_name)
|
||||||
|
|
||||||
def create_topic(self, name):
|
def create_topic(self, name):
|
||||||
topic = Topic(name, self)
|
topic = Topic(name, self)
|
||||||
@ -247,7 +254,7 @@ class SNSBackend(BaseBackend):
|
|||||||
|
|
||||||
sns_backends = {}
|
sns_backends = {}
|
||||||
for region in boto.sns.regions():
|
for region in boto.sns.regions():
|
||||||
sns_backends[region.name] = SNSBackend()
|
sns_backends[region.name] = SNSBackend(region.name)
|
||||||
|
|
||||||
|
|
||||||
DEFAULT_TOPIC_POLICY = {
|
DEFAULT_TOPIC_POLICY = {
|
||||||
|
@ -2,8 +2,8 @@ from __future__ import unicode_literals
|
|||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
|
|
||||||
def make_arn_for_topic(account_id, name):
|
def make_arn_for_topic(account_id, name, region_name):
|
||||||
return "arn:aws:sns:us-east-1:{0}:{1}".format(account_id, name)
|
return "arn:aws:sns:{0}:{1}:{2}".format(region_name, account_id, name)
|
||||||
|
|
||||||
|
|
||||||
def make_arn_for_subscription(topic_arn):
|
def make_arn_for_subscription(topic_arn):
|
||||||
|
@ -72,7 +72,7 @@ def test_publish_to_http():
|
|||||||
parse_qs(last_request.body.decode('utf-8')).should.equal({
|
parse_qs(last_request.body.decode('utf-8')).should.equal({
|
||||||
"Type": ["Notification"],
|
"Type": ["Notification"],
|
||||||
"MessageId": [message_id],
|
"MessageId": [message_id],
|
||||||
"TopicArn": ["arn:aws:sns:us-east-1:123456789012:some-topic"],
|
"TopicArn": ["arn:aws:sns:{0}:123456789012:some-topic".format(conn.region.name)],
|
||||||
"Subject": ["my subject"],
|
"Subject": ["my subject"],
|
||||||
"Message": ["my message"],
|
"Message": ["my message"],
|
||||||
"Timestamp": ["2013-01-01T00:00:00.000Z"],
|
"Timestamp": ["2013-01-01T00:00:00.000Z"],
|
||||||
|
@ -17,7 +17,10 @@ def test_create_and_delete_topic():
|
|||||||
topics_json = conn.get_all_topics()
|
topics_json = conn.get_all_topics()
|
||||||
topics = topics_json["ListTopicsResponse"]["ListTopicsResult"]["Topics"]
|
topics = topics_json["ListTopicsResponse"]["ListTopicsResult"]["Topics"]
|
||||||
topics.should.have.length_of(1)
|
topics.should.have.length_of(1)
|
||||||
topics[0]['TopicArn'].should.equal("arn:aws:sns:us-east-1:123456789012:some-topic")
|
topics[0]['TopicArn'].should.equal(
|
||||||
|
"arn:aws:sns:{}:123456789012:some-topic"
|
||||||
|
.format(conn.region.name)
|
||||||
|
)
|
||||||
|
|
||||||
# Delete the topic
|
# Delete the topic
|
||||||
conn.delete_topic(topics[0]['TopicArn'])
|
conn.delete_topic(topics[0]['TopicArn'])
|
||||||
@ -36,15 +39,19 @@ def test_get_missing_topic():
|
|||||||
|
|
||||||
@mock_sns
|
@mock_sns
|
||||||
def test_create_topic_in_multiple_regions():
|
def test_create_topic_in_multiple_regions():
|
||||||
west1_conn = boto.sns.connect_to_region("us-west-1")
|
for region in ['us-west-1', 'us-west-2']:
|
||||||
west1_conn.create_topic("some-topic")
|
conn = boto.sns.connect_to_region(region)
|
||||||
|
conn.create_topic("some-topic")
|
||||||
west2_conn = boto.sns.connect_to_region("us-west-2")
|
list(conn.get_all_topics()["ListTopicsResponse"]["ListTopicsResult"]["Topics"]).should.have.length_of(1)
|
||||||
west2_conn.create_topic("some-topic")
|
|
||||||
|
|
||||||
list(west1_conn.get_all_topics()["ListTopicsResponse"]["ListTopicsResult"]["Topics"]).should.have.length_of(1)
|
|
||||||
list(west2_conn.get_all_topics()["ListTopicsResponse"]["ListTopicsResult"]["Topics"]).should.have.length_of(1)
|
|
||||||
|
|
||||||
|
@mock_sns
|
||||||
|
def test_topic_corresponds_to_region():
|
||||||
|
for region in ['us-east-1', 'us-west-2']:
|
||||||
|
conn = boto.sns.connect_to_region(region)
|
||||||
|
conn.create_topic("some-topic")
|
||||||
|
topics_json = conn.get_all_topics()
|
||||||
|
topic_arn = topics_json["ListTopicsResponse"]["ListTopicsResult"]["Topics"][0]['TopicArn']
|
||||||
|
topic_arn.should.equal("arn:aws:sns:{0}:123456789012:some-topic".format(region))
|
||||||
|
|
||||||
@mock_sns
|
@mock_sns
|
||||||
def test_topic_attributes():
|
def test_topic_attributes():
|
||||||
@ -55,7 +62,10 @@ def test_topic_attributes():
|
|||||||
topic_arn = topics_json["ListTopicsResponse"]["ListTopicsResult"]["Topics"][0]['TopicArn']
|
topic_arn = topics_json["ListTopicsResponse"]["ListTopicsResult"]["Topics"][0]['TopicArn']
|
||||||
|
|
||||||
attributes = conn.get_topic_attributes(topic_arn)['GetTopicAttributesResponse']['GetTopicAttributesResult']['Attributes']
|
attributes = conn.get_topic_attributes(topic_arn)['GetTopicAttributesResponse']['GetTopicAttributesResult']['Attributes']
|
||||||
attributes["TopicArn"].should.equal("arn:aws:sns:us-east-1:123456789012:some-topic")
|
attributes["TopicArn"].should.equal(
|
||||||
|
"arn:aws:sns:{0}:123456789012:some-topic"
|
||||||
|
.format(conn.region.name)
|
||||||
|
)
|
||||||
attributes["Owner"].should.equal(123456789012)
|
attributes["Owner"].should.equal(123456789012)
|
||||||
attributes["Policy"].should.equal(DEFAULT_TOPIC_POLICY)
|
attributes["Policy"].should.equal(DEFAULT_TOPIC_POLICY)
|
||||||
attributes["DisplayName"].should.equal("")
|
attributes["DisplayName"].should.equal("")
|
||||||
@ -85,7 +95,6 @@ def test_topic_attributes():
|
|||||||
attributes["DisplayName"].should.equal("My display name")
|
attributes["DisplayName"].should.equal("My display name")
|
||||||
attributes["DeliveryPolicy"].should.equal("{'http': {'defaultHealthyRetryPolicy': {'numRetries': 5}}}")
|
attributes["DeliveryPolicy"].should.equal("{'http': {'defaultHealthyRetryPolicy': {'numRetries': 5}}}")
|
||||||
|
|
||||||
|
|
||||||
@mock_sns
|
@mock_sns
|
||||||
def test_topic_paging():
|
def test_topic_paging():
|
||||||
conn = boto.connect_sns()
|
conn = boto.connect_sns()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user