103 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import unicode_literals
 | 
						|
import boto
 | 
						|
 | 
						|
import sure  # noqa
 | 
						|
 | 
						|
from moto import mock_sns_deprecated
 | 
						|
from moto.sns.models import DEFAULT_PAGE_SIZE
 | 
						|
 | 
						|
 | 
						|
@mock_sns_deprecated
 | 
						|
def test_creating_subscription():
 | 
						|
    conn = boto.connect_sns()
 | 
						|
    conn.create_topic("some-topic")
 | 
						|
    topics_json = conn.get_all_topics()
 | 
						|
    topic_arn = topics_json["ListTopicsResponse"][
 | 
						|
        "ListTopicsResult"]["Topics"][0]['TopicArn']
 | 
						|
 | 
						|
    conn.subscribe(topic_arn, "http", "http://example.com/")
 | 
						|
 | 
						|
    subscriptions = conn.get_all_subscriptions()["ListSubscriptionsResponse"][
 | 
						|
        "ListSubscriptionsResult"]["Subscriptions"]
 | 
						|
    subscriptions.should.have.length_of(1)
 | 
						|
    subscription = subscriptions[0]
 | 
						|
    subscription["TopicArn"].should.equal(topic_arn)
 | 
						|
    subscription["Protocol"].should.equal("http")
 | 
						|
    subscription["SubscriptionArn"].should.contain(topic_arn)
 | 
						|
    subscription["Endpoint"].should.equal("http://example.com/")
 | 
						|
 | 
						|
    # Now unsubscribe the subscription
 | 
						|
    conn.unsubscribe(subscription["SubscriptionArn"])
 | 
						|
 | 
						|
    # And there should be zero subscriptions left
 | 
						|
    subscriptions = conn.get_all_subscriptions()["ListSubscriptionsResponse"][
 | 
						|
        "ListSubscriptionsResult"]["Subscriptions"]
 | 
						|
    subscriptions.should.have.length_of(0)
 | 
						|
 | 
						|
 | 
						|
@mock_sns_deprecated
 | 
						|
def test_getting_subscriptions_by_topic():
 | 
						|
    conn = boto.connect_sns()
 | 
						|
    conn.create_topic("topic1")
 | 
						|
    conn.create_topic("topic2")
 | 
						|
 | 
						|
    topics_json = conn.get_all_topics()
 | 
						|
    topics = topics_json["ListTopicsResponse"]["ListTopicsResult"]["Topics"]
 | 
						|
    topic1_arn = topics[0]['TopicArn']
 | 
						|
    topic2_arn = topics[1]['TopicArn']
 | 
						|
 | 
						|
    conn.subscribe(topic1_arn, "http", "http://example1.com/")
 | 
						|
    conn.subscribe(topic2_arn, "http", "http://example2.com/")
 | 
						|
 | 
						|
    topic1_subscriptions = conn.get_all_subscriptions_by_topic(topic1_arn)[
 | 
						|
        "ListSubscriptionsByTopicResponse"]["ListSubscriptionsByTopicResult"]["Subscriptions"]
 | 
						|
    topic1_subscriptions.should.have.length_of(1)
 | 
						|
    topic1_subscriptions[0]['Endpoint'].should.equal("http://example1.com/")
 | 
						|
 | 
						|
 | 
						|
@mock_sns_deprecated
 | 
						|
def test_subscription_paging():
 | 
						|
    conn = boto.connect_sns()
 | 
						|
    conn.create_topic("topic1")
 | 
						|
    conn.create_topic("topic2")
 | 
						|
 | 
						|
    topics_json = conn.get_all_topics()
 | 
						|
    topics = topics_json["ListTopicsResponse"]["ListTopicsResult"]["Topics"]
 | 
						|
    topic1_arn = topics[0]['TopicArn']
 | 
						|
    topic2_arn = topics[1]['TopicArn']
 | 
						|
 | 
						|
    for index in range(DEFAULT_PAGE_SIZE + int(DEFAULT_PAGE_SIZE / 3)):
 | 
						|
        conn.subscribe(topic1_arn, 'email', 'email_' +
 | 
						|
                       str(index) + '@test.com')
 | 
						|
        conn.subscribe(topic2_arn, 'email', 'email_' +
 | 
						|
                       str(index) + '@test.com')
 | 
						|
 | 
						|
    all_subscriptions = conn.get_all_subscriptions()
 | 
						|
    all_subscriptions["ListSubscriptionsResponse"]["ListSubscriptionsResult"][
 | 
						|
        "Subscriptions"].should.have.length_of(DEFAULT_PAGE_SIZE)
 | 
						|
    next_token = all_subscriptions["ListSubscriptionsResponse"][
 | 
						|
        "ListSubscriptionsResult"]["NextToken"]
 | 
						|
    next_token.should.equal(DEFAULT_PAGE_SIZE)
 | 
						|
 | 
						|
    all_subscriptions = conn.get_all_subscriptions(next_token=next_token * 2)
 | 
						|
    all_subscriptions["ListSubscriptionsResponse"]["ListSubscriptionsResult"][
 | 
						|
        "Subscriptions"].should.have.length_of(int(DEFAULT_PAGE_SIZE * 2 / 3))
 | 
						|
    next_token = all_subscriptions["ListSubscriptionsResponse"][
 | 
						|
        "ListSubscriptionsResult"]["NextToken"]
 | 
						|
    next_token.should.equal(None)
 | 
						|
 | 
						|
    topic1_subscriptions = conn.get_all_subscriptions_by_topic(topic1_arn)
 | 
						|
    topic1_subscriptions["ListSubscriptionsByTopicResponse"]["ListSubscriptionsByTopicResult"][
 | 
						|
        "Subscriptions"].should.have.length_of(DEFAULT_PAGE_SIZE)
 | 
						|
    next_token = topic1_subscriptions["ListSubscriptionsByTopicResponse"][
 | 
						|
        "ListSubscriptionsByTopicResult"]["NextToken"]
 | 
						|
    next_token.should.equal(DEFAULT_PAGE_SIZE)
 | 
						|
 | 
						|
    topic1_subscriptions = conn.get_all_subscriptions_by_topic(
 | 
						|
        topic1_arn, next_token=next_token)
 | 
						|
    topic1_subscriptions["ListSubscriptionsByTopicResponse"]["ListSubscriptionsByTopicResult"][
 | 
						|
        "Subscriptions"].should.have.length_of(int(DEFAULT_PAGE_SIZE / 3))
 | 
						|
    next_token = topic1_subscriptions["ListSubscriptionsByTopicResponse"][
 | 
						|
        "ListSubscriptionsByTopicResult"]["NextToken"]
 | 
						|
    next_token.should.equal(None)
 |