Makes Creating SNS topics idempotent (#1324)
Make creating SNS topics idempotent Closes #1323
This commit is contained in:
parent
3740db8059
commit
307ef8ead1
@ -193,9 +193,12 @@ class SNSBackend(BaseBackend):
|
|||||||
self.sms_attributes.update(attrs)
|
self.sms_attributes.update(attrs)
|
||||||
|
|
||||||
def create_topic(self, name):
|
def create_topic(self, name):
|
||||||
topic = Topic(name, self)
|
candidate_topic = Topic(name, self)
|
||||||
self.topics[topic.arn] = topic
|
if candidate_topic.arn in self.topics:
|
||||||
return topic
|
return self.topics[candidate_topic.arn]
|
||||||
|
else:
|
||||||
|
self.topics[candidate_topic.arn] = candidate_topic
|
||||||
|
return candidate_topic
|
||||||
|
|
||||||
def _get_values_nexttoken(self, values_map, next_token=None):
|
def _get_values_nexttoken(self, values_map, next_token=None):
|
||||||
if next_token is None:
|
if next_token is None:
|
||||||
|
@ -31,6 +31,29 @@ def test_create_and_delete_topic():
|
|||||||
topics = topics_json["Topics"]
|
topics = topics_json["Topics"]
|
||||||
topics.should.have.length_of(0)
|
topics.should.have.length_of(0)
|
||||||
|
|
||||||
|
@mock_sns
|
||||||
|
def test_create_topic_should_be_indempodent():
|
||||||
|
conn = boto3.client("sns", region_name="us-east-1")
|
||||||
|
topic_arn = conn.create_topic(Name="some-topic")['TopicArn']
|
||||||
|
conn.set_topic_attributes(
|
||||||
|
TopicArn=topic_arn,
|
||||||
|
AttributeName="DisplayName",
|
||||||
|
AttributeValue="should_be_set"
|
||||||
|
)
|
||||||
|
topic_display_name = conn.get_topic_attributes(
|
||||||
|
TopicArn=topic_arn
|
||||||
|
)['Attributes']['DisplayName']
|
||||||
|
topic_display_name.should.be.equal("should_be_set")
|
||||||
|
|
||||||
|
#recreate topic to prove indempodentcy
|
||||||
|
topic_arn = conn.create_topic(Name="some-topic")['TopicArn']
|
||||||
|
topic_display_name = conn.get_topic_attributes(
|
||||||
|
TopicArn=topic_arn
|
||||||
|
)['Attributes']['DisplayName']
|
||||||
|
|
||||||
|
topic_display_name.should.be.equal("should_be_set")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@mock_sns
|
@mock_sns
|
||||||
def test_get_missing_topic():
|
def test_get_missing_topic():
|
||||||
|
Loading…
Reference in New Issue
Block a user