Merge pull request #2610 from gruebel/fix-sns-get-subscription-attributes

Add missing attributes to SNS subscription
This commit is contained in:
Mike Grima 2019-12-17 08:36:59 -08:00 committed by GitHub
commit 91983b4823
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 25 deletions

View File

@ -439,11 +439,18 @@ class SNSBackend(BaseBackend):
subscription = Subscription(topic, endpoint, protocol) subscription = Subscription(topic, endpoint, protocol)
attributes = { attributes = {
"PendingConfirmation": "false", "PendingConfirmation": "false",
"ConfirmationWasAuthenticated": "true",
"Endpoint": endpoint, "Endpoint": endpoint,
"TopicArn": topic_arn, "TopicArn": topic_arn,
"Protocol": protocol, "Protocol": protocol,
"SubscriptionArn": subscription.arn, "SubscriptionArn": subscription.arn,
"Owner": DEFAULT_ACCOUNT_ID,
"RawMessageDelivery": "false",
} }
if protocol in ["http", "https"]:
attributes["EffectiveDeliveryPolicy"] = topic.effective_delivery_policy
subscription.attributes = attributes subscription.attributes = attributes
self.subscriptions[subscription.arn] = subscription self.subscriptions[subscription.arn] = subscription
return subscription return subscription
@ -703,8 +710,6 @@ for region in Session().get_available_regions("sns"):
DEFAULT_EFFECTIVE_DELIVERY_POLICY = { DEFAULT_EFFECTIVE_DELIVERY_POLICY = {
"http": {
"disableSubscriptionOverrides": False,
"defaultHealthyRetryPolicy": { "defaultHealthyRetryPolicy": {
"numNoDelayRetries": 0, "numNoDelayRetries": 0,
"numMinDelayRetries": 0, "numMinDelayRetries": 0,
@ -714,7 +719,9 @@ DEFAULT_EFFECTIVE_DELIVERY_POLICY = {
"numRetries": 3, "numRetries": 3,
"backoffFunction": "linear", "backoffFunction": "linear",
}, },
} "sicklyRetryPolicy": None,
"throttlePolicy": None,
"guaranteed": False,
} }

View File

@ -8,7 +8,11 @@ from botocore.exceptions import ClientError
from nose.tools import assert_raises from nose.tools import assert_raises
from moto import mock_sns from moto import mock_sns
from moto.sns.models import DEFAULT_PAGE_SIZE from moto.sns.models import (
DEFAULT_PAGE_SIZE,
DEFAULT_EFFECTIVE_DELIVERY_POLICY,
DEFAULT_ACCOUNT_ID,
)
@mock_sns @mock_sns
@ -195,21 +199,23 @@ def test_subscribe_attributes():
resp = client.subscribe(TopicArn=arn, Protocol="http", Endpoint="http://test.com") resp = client.subscribe(TopicArn=arn, Protocol="http", Endpoint="http://test.com")
attributes = client.get_subscription_attributes( response = client.get_subscription_attributes(
SubscriptionArn=resp["SubscriptionArn"] SubscriptionArn=resp["SubscriptionArn"]
) )
attributes.should.contain("Attributes") response.should.contain("Attributes")
attributes["Attributes"].should.contain("PendingConfirmation") attributes = response["Attributes"]
attributes["Attributes"]["PendingConfirmation"].should.equal("false") attributes["PendingConfirmation"].should.equal("false")
attributes["Attributes"].should.contain("Endpoint") attributes["ConfirmationWasAuthenticated"].should.equal("true")
attributes["Attributes"]["Endpoint"].should.equal("http://test.com") attributes["Endpoint"].should.equal("http://test.com")
attributes["Attributes"].should.contain("TopicArn") attributes["TopicArn"].should.equal(arn)
attributes["Attributes"]["TopicArn"].should.equal(arn) attributes["Protocol"].should.equal("http")
attributes["Attributes"].should.contain("Protocol") attributes["SubscriptionArn"].should.equal(resp["SubscriptionArn"])
attributes["Attributes"]["Protocol"].should.equal("http") attributes["Owner"].should.equal(str(DEFAULT_ACCOUNT_ID))
attributes["Attributes"].should.contain("SubscriptionArn") attributes["RawMessageDelivery"].should.equal("false")
attributes["Attributes"]["SubscriptionArn"].should.equal(resp["SubscriptionArn"]) json.loads(attributes["EffectiveDeliveryPolicy"]).should.equal(
DEFAULT_EFFECTIVE_DELIVERY_POLICY
)
@mock_sns @mock_sns