General tidy up

This commit is contained in:
Terry Cain 2017-09-21 21:16:00 +01:00
parent fec81fc6ea
commit 18cb0bce54
No known key found for this signature in database
GPG Key ID: 14D90844E4E9B9F3
6 changed files with 118 additions and 114 deletions

View File

@ -574,7 +574,12 @@ class SNSResponse(BaseResponse):
error_response = self._error('NotFound', 'Topic does not exist') error_response = self._error('NotFound', 'Topic does not exist')
return error_response, dict(status=404) return error_response, dict(status=404)
# Added other parts here for when they are needed # Once Tokens are stored by the `subscribe` endpoint and distributed
# to the client somehow, then we can check validity of tokens
# presented to this method. The following code works, all thats
# needed is to perform a token check and assign that value to the
# `already_subscribed` variable.
#
# token = self._get_param('Token') # token = self._get_param('Token')
# auth = self._get_param('AuthenticateOnUnsubscribe') # auth = self._get_param('AuthenticateOnUnsubscribe')
# if already_subscribed: # if already_subscribed:

View File

@ -321,3 +321,30 @@ def test_publish_to_disabled_platform_endpoint():
MessageStructure="json", MessageStructure="json",
TargetArn=endpoint_arn, TargetArn=endpoint_arn,
).should.throw(ClientError) ).should.throw(ClientError)
@mock_sns
def test_set_sms_attributes():
conn = boto3.client('sns', region_name='us-east-1')
conn.set_sms_attributes(attributes={'DefaultSMSType': 'Transactional', 'test': 'test'})
response = conn.get_sms_attributes()
response.should.contain('attributes')
response['attributes'].should.contain('DefaultSMSType')
response['attributes'].should.contain('test')
response['attributes']['DefaultSMSType'].should.equal('Transactional')
response['attributes']['test'].should.equal('test')
@mock_sns
def test_get_sms_attributes_filtered():
conn = boto3.client('sns', region_name='us-east-1')
conn.set_sms_attributes(attributes={'DefaultSMSType': 'Transactional', 'test': 'test'})
response = conn.get_sms_attributes(attributes=['DefaultSMSType'])
response.should.contain('attributes')
response['attributes'].should.contain('DefaultSMSType')
response['attributes'].should_not.contain('test')
response['attributes']['DefaultSMSType'].should.equal('Transactional')

View File

@ -1,113 +0,0 @@
from __future__ import unicode_literals
import boto3
import sure # noqa
from moto import mock_sns
from botocore.exceptions import ClientError
from nose.tools import assert_raises
@mock_sns
def test_set_sms_attributes():
conn = boto3.client('sns', region_name='us-east-1')
conn.set_sms_attributes(attributes={'DefaultSMSType': 'Transactional', 'test': 'test'})
response = conn.get_sms_attributes()
response.should.contain('attributes')
response['attributes'].should.contain('DefaultSMSType')
response['attributes'].should.contain('test')
response['attributes']['DefaultSMSType'].should.equal('Transactional')
response['attributes']['test'].should.equal('test')
@mock_sns
def test_get_sms_attributes_filtered():
conn = boto3.client('sns', region_name='us-east-1')
conn.set_sms_attributes(attributes={'DefaultSMSType': 'Transactional', 'test': 'test'})
response = conn.get_sms_attributes(attributes=['DefaultSMSType'])
response.should.contain('attributes')
response['attributes'].should.contain('DefaultSMSType')
response['attributes'].should_not.contain('test')
response['attributes']['DefaultSMSType'].should.equal('Transactional')
@mock_sns
def test_check_not_opted_out():
conn = boto3.client('sns', region_name='us-east-1')
response = conn.check_if_phone_number_is_opted_out(phoneNumber='+447428545375')
response.should.contain('isOptedOut')
response['isOptedOut'].should.be(False)
@mock_sns
def test_check_opted_out(): # Ends in 99 so is opted out
conn = boto3.client('sns', region_name='us-east-1')
response = conn.check_if_phone_number_is_opted_out(phoneNumber='+447428545399')
response.should.contain('isOptedOut')
response['isOptedOut'].should.be(True)
@mock_sns
def test_check_opted_out_invalid():
conn = boto3.client('sns', region_name='us-east-1')
# Invalid phone number
with assert_raises(ClientError):
conn.check_if_phone_number_is_opted_out(phoneNumber='+44742LALALA')
@mock_sns
def test_list_opted_out():
conn = boto3.client('sns', region_name='us-east-1')
response = conn.list_phone_numbers_opted_out()
response.should.contain('phoneNumbers')
len(response['phoneNumbers']).should.be.greater_than(0)
@mock_sns
def test_opt_in():
conn = boto3.client('sns', region_name='us-east-1')
response = conn.list_phone_numbers_opted_out()
current_len = len(response['phoneNumbers'])
assert current_len > 0
conn.opt_in_phone_number(phoneNumber=response['phoneNumbers'][0])
response = conn.list_phone_numbers_opted_out()
len(response['phoneNumbers']).should.be.greater_than(0)
len(response['phoneNumbers']).should.be.lower_than(current_len)
@mock_sns
def test_add_remove_permissions():
conn = boto3.client('sns', region_name='us-east-1')
response = conn.create_topic(Name='testpermissions')
conn.add_permission(
TopicArn=response['TopicArn'],
Label='Test1234',
AWSAccountId=['999999999999'],
ActionName=['AddPermission']
)
conn.remove_permission(
TopicArn=response['TopicArn'],
Label='Test1234'
)
@mock_sns
def test_confirm_subscription():
conn = boto3.client('sns', region_name='us-east-1')
response = conn.create_topic(Name='testconfirm')
conn.confirm_subscription(
TopicArn=response['TopicArn'],
Token='2336412f37fb687f5d51e6e241d59b68c4e583a5cee0be6f95bbf97ab8d2441cf47b99e848408adaadf4c197e65f03473d53c4ba398f6abbf38ce2e8ebf7b4ceceb2cd817959bcde1357e58a2861b05288c535822eb88cac3db04f592285249971efc6484194fc4a4586147f16916692',
AuthenticateOnUnsubscribe='true'
)

View File

@ -34,6 +34,7 @@ def test_creating_subscription():
"ListSubscriptionsResult"]["Subscriptions"] "ListSubscriptionsResult"]["Subscriptions"]
subscriptions.should.have.length_of(0) subscriptions.should.have.length_of(0)
@mock_sns_deprecated @mock_sns_deprecated
def test_deleting_subscriptions_by_deleting_topic(): def test_deleting_subscriptions_by_deleting_topic():
conn = boto.connect_sns() conn = boto.connect_sns()
@ -66,6 +67,7 @@ def test_deleting_subscriptions_by_deleting_topic():
"ListSubscriptionsResult"]["Subscriptions"] "ListSubscriptionsResult"]["Subscriptions"]
subscriptions.should.have.length_of(0) subscriptions.should.have.length_of(0)
@mock_sns_deprecated @mock_sns_deprecated
def test_getting_subscriptions_by_topic(): def test_getting_subscriptions_by_topic():
conn = boto.connect_sns() conn = boto.connect_sns()

View File

@ -37,6 +37,7 @@ def test_creating_subscription():
subscriptions = conn.list_subscriptions()["Subscriptions"] subscriptions = conn.list_subscriptions()["Subscriptions"]
subscriptions.should.have.length_of(0) subscriptions.should.have.length_of(0)
@mock_sns @mock_sns
def test_deleting_subscriptions_by_deleting_topic(): def test_deleting_subscriptions_by_deleting_topic():
conn = boto3.client('sns', region_name='us-east-1') conn = boto3.client('sns', region_name='us-east-1')
@ -68,6 +69,7 @@ def test_deleting_subscriptions_by_deleting_topic():
subscriptions = conn.list_subscriptions()["Subscriptions"] subscriptions = conn.list_subscriptions()["Subscriptions"]
subscriptions.should.have.length_of(0) subscriptions.should.have.length_of(0)
@mock_sns @mock_sns
def test_getting_subscriptions_by_topic(): def test_getting_subscriptions_by_topic():
conn = boto3.client('sns', region_name='us-east-1') conn = boto3.client('sns', region_name='us-east-1')
@ -197,3 +199,67 @@ def test_set_subscription_attributes():
AttributeName='InvalidName', AttributeName='InvalidName',
AttributeValue='true' AttributeValue='true'
) )
@mock_sns
def test_check_not_opted_out():
conn = boto3.client('sns', region_name='us-east-1')
response = conn.check_if_phone_number_is_opted_out(phoneNumber='+447428545375')
response.should.contain('isOptedOut')
response['isOptedOut'].should.be(False)
@mock_sns
def test_check_opted_out():
# Phone number ends in 99 so is hardcoded in the endpoint to return opted
# out status
conn = boto3.client('sns', region_name='us-east-1')
response = conn.check_if_phone_number_is_opted_out(phoneNumber='+447428545399')
response.should.contain('isOptedOut')
response['isOptedOut'].should.be(True)
@mock_sns
def test_check_opted_out_invalid():
conn = boto3.client('sns', region_name='us-east-1')
# Invalid phone number
with assert_raises(ClientError):
conn.check_if_phone_number_is_opted_out(phoneNumber='+44742LALALA')
@mock_sns
def test_list_opted_out():
conn = boto3.client('sns', region_name='us-east-1')
response = conn.list_phone_numbers_opted_out()
response.should.contain('phoneNumbers')
len(response['phoneNumbers']).should.be.greater_than(0)
@mock_sns
def test_opt_in():
conn = boto3.client('sns', region_name='us-east-1')
response = conn.list_phone_numbers_opted_out()
current_len = len(response['phoneNumbers'])
assert current_len > 0
conn.opt_in_phone_number(phoneNumber=response['phoneNumbers'][0])
response = conn.list_phone_numbers_opted_out()
len(response['phoneNumbers']).should.be.greater_than(0)
len(response['phoneNumbers']).should.be.lower_than(current_len)
@mock_sns
def test_confirm_subscription():
conn = boto3.client('sns', region_name='us-east-1')
response = conn.create_topic(Name='testconfirm')
conn.confirm_subscription(
TopicArn=response['TopicArn'],
Token='2336412f37fb687f5d51e6e241d59b68c4e583a5cee0be6f95bbf97ab8d2441cf47b99e848408adaadf4c197e65f03473d53c4ba398f6abbf38ce2e8ebf7b4ceceb2cd817959bcde1357e58a2861b05288c535822eb88cac3db04f592285249971efc6484194fc4a4586147f16916692',
AuthenticateOnUnsubscribe='true'
)

View File

@ -129,3 +129,20 @@ def test_topic_paging():
response.shouldnt.have("NextToken") response.shouldnt.have("NextToken")
topics_list.should.have.length_of(int(DEFAULT_PAGE_SIZE / 2)) topics_list.should.have.length_of(int(DEFAULT_PAGE_SIZE / 2))
@mock_sns
def test_add_remove_permissions():
conn = boto3.client('sns', region_name='us-east-1')
response = conn.create_topic(Name='testpermissions')
conn.add_permission(
TopicArn=response['TopicArn'],
Label='Test1234',
AWSAccountId=['999999999999'],
ActionName=['AddPermission']
)
conn.remove_permission(
TopicArn=response['TopicArn'],
Label='Test1234'
)