255 lines
7.9 KiB
Python
255 lines
7.9 KiB
Python
from __future__ import unicode_literals
|
|
|
|
import boto3
|
|
from botocore.exceptions import ClientError
|
|
from moto import mock_sns
|
|
import sure # noqa
|
|
|
|
|
|
@mock_sns
|
|
def test_create_platform_application():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
response = conn.create_platform_application(
|
|
Name="my-application",
|
|
Platform="APNS",
|
|
Attributes={
|
|
"PlatformCredential": "platform_credential",
|
|
"PlatformPrincipal": "platform_principal",
|
|
},
|
|
)
|
|
application_arn = response['PlatformApplicationArn']
|
|
application_arn.should.equal('arn:aws:sns:us-east-1:123456789012:app/APNS/my-application')
|
|
|
|
|
|
@mock_sns
|
|
def test_get_platform_application_attributes():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
platform_application = conn.create_platform_application(
|
|
Name="my-application",
|
|
Platform="APNS",
|
|
Attributes={
|
|
"PlatformCredential": "platform_credential",
|
|
"PlatformPrincipal": "platform_principal",
|
|
},
|
|
)
|
|
arn = platform_application['PlatformApplicationArn']
|
|
attributes = conn.get_platform_application_attributes(PlatformApplicationArn=arn)['Attributes']
|
|
attributes.should.equal({
|
|
"PlatformCredential": "platform_credential",
|
|
"PlatformPrincipal": "platform_principal",
|
|
})
|
|
|
|
|
|
@mock_sns
|
|
def test_get_missing_platform_application_attributes():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
conn.get_platform_application_attributes.when.called_with(PlatformApplicationArn="a-fake-arn").should.throw(ClientError)
|
|
|
|
|
|
@mock_sns
|
|
def test_set_platform_application_attributes():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
platform_application = conn.create_platform_application(
|
|
Name="my-application",
|
|
Platform="APNS",
|
|
Attributes={
|
|
"PlatformCredential": "platform_credential",
|
|
"PlatformPrincipal": "platform_principal",
|
|
},
|
|
)
|
|
arn = platform_application['PlatformApplicationArn']
|
|
conn.set_platform_application_attributes(PlatformApplicationArn=arn,
|
|
Attributes={"PlatformPrincipal": "other"}
|
|
)
|
|
attributes = conn.get_platform_application_attributes(PlatformApplicationArn=arn)['Attributes']
|
|
attributes.should.equal({
|
|
"PlatformCredential": "platform_credential",
|
|
"PlatformPrincipal": "other",
|
|
})
|
|
|
|
|
|
@mock_sns
|
|
def test_list_platform_applications():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
conn.create_platform_application(
|
|
Name="application1",
|
|
Platform="APNS",
|
|
Attributes={},
|
|
)
|
|
conn.create_platform_application(
|
|
Name="application2",
|
|
Platform="APNS",
|
|
Attributes={},
|
|
)
|
|
|
|
applications_repsonse = conn.list_platform_applications()
|
|
applications = applications_repsonse['PlatformApplications']
|
|
applications.should.have.length_of(2)
|
|
|
|
|
|
@mock_sns
|
|
def test_delete_platform_application():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
conn.create_platform_application(
|
|
Name="application1",
|
|
Platform="APNS",
|
|
Attributes={},
|
|
)
|
|
conn.create_platform_application(
|
|
Name="application2",
|
|
Platform="APNS",
|
|
Attributes={},
|
|
)
|
|
|
|
applications_repsonse = conn.list_platform_applications()
|
|
applications = applications_repsonse['PlatformApplications']
|
|
applications.should.have.length_of(2)
|
|
|
|
application_arn = applications[0]['PlatformApplicationArn']
|
|
conn.delete_platform_application(PlatformApplicationArn=application_arn)
|
|
|
|
applications_repsonse = conn.list_platform_applications()
|
|
applications = applications_repsonse['PlatformApplications']
|
|
applications.should.have.length_of(1)
|
|
|
|
|
|
@mock_sns
|
|
def test_create_platform_endpoint():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
platform_application = conn.create_platform_application(
|
|
Name="my-application",
|
|
Platform="APNS",
|
|
Attributes={},
|
|
)
|
|
application_arn = platform_application['PlatformApplicationArn']
|
|
|
|
endpoint = conn.create_platform_endpoint(
|
|
PlatformApplicationArn=application_arn,
|
|
Token="some_unique_id",
|
|
CustomUserData="some user data",
|
|
Attributes={
|
|
"Enabled": 'false',
|
|
},
|
|
)
|
|
|
|
endpoint_arn = endpoint['EndpointArn']
|
|
endpoint_arn.should.contain("arn:aws:sns:us-east-1:123456789012:endpoint/APNS/my-application/")
|
|
|
|
|
|
@mock_sns
|
|
def test_get_list_endpoints_by_platform_application():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
platform_application = conn.create_platform_application(
|
|
Name="my-application",
|
|
Platform="APNS",
|
|
Attributes={},
|
|
)
|
|
application_arn = platform_application['PlatformApplicationArn']
|
|
|
|
endpoint = conn.create_platform_endpoint(
|
|
PlatformApplicationArn=application_arn,
|
|
Token="some_unique_id",
|
|
CustomUserData="some user data",
|
|
Attributes={
|
|
"CustomUserData": "some data",
|
|
},
|
|
)
|
|
endpoint_arn = endpoint['EndpointArn']
|
|
|
|
endpoint_list = conn.list_endpoints_by_platform_application(
|
|
PlatformApplicationArn=application_arn
|
|
)['Endpoints']
|
|
|
|
endpoint_list.should.have.length_of(1)
|
|
endpoint_list[0]['Attributes']['CustomUserData'].should.equal('some data')
|
|
endpoint_list[0]['EndpointArn'].should.equal(endpoint_arn)
|
|
|
|
|
|
@mock_sns
|
|
def test_get_endpoint_attributes():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
platform_application = conn.create_platform_application(
|
|
Name="my-application",
|
|
Platform="APNS",
|
|
Attributes={},
|
|
)
|
|
application_arn = platform_application['PlatformApplicationArn']
|
|
|
|
endpoint = conn.create_platform_endpoint(
|
|
PlatformApplicationArn=application_arn,
|
|
Token="some_unique_id",
|
|
CustomUserData="some user data",
|
|
Attributes={
|
|
"Enabled": 'false',
|
|
"CustomUserData": "some data",
|
|
},
|
|
)
|
|
endpoint_arn = endpoint['EndpointArn']
|
|
|
|
attributes = conn.get_endpoint_attributes(EndpointArn=endpoint_arn)['Attributes']
|
|
attributes.should.equal({
|
|
"Enabled": 'false',
|
|
"CustomUserData": "some data",
|
|
})
|
|
|
|
|
|
@mock_sns
|
|
def test_get_missing_endpoint_attributes():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
conn.get_endpoint_attributes.when.called_with(EndpointArn="a-fake-arn").should.throw(ClientError)
|
|
|
|
|
|
@mock_sns
|
|
def test_set_endpoint_attributes():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
platform_application = conn.create_platform_application(
|
|
Name="my-application",
|
|
Platform="APNS",
|
|
Attributes={},
|
|
)
|
|
application_arn = platform_application['PlatformApplicationArn']
|
|
|
|
endpoint = conn.create_platform_endpoint(
|
|
PlatformApplicationArn=application_arn,
|
|
Token="some_unique_id",
|
|
CustomUserData="some user data",
|
|
Attributes={
|
|
"Enabled": 'false',
|
|
"CustomUserData": "some data",
|
|
},
|
|
)
|
|
endpoint_arn = endpoint['EndpointArn']
|
|
|
|
conn.set_endpoint_attributes(EndpointArn=endpoint_arn,
|
|
Attributes={"CustomUserData": "other data"}
|
|
)
|
|
attributes = conn.get_endpoint_attributes(EndpointArn=endpoint_arn)['Attributes']
|
|
attributes.should.equal({
|
|
"Enabled": 'false',
|
|
"CustomUserData": "other data",
|
|
})
|
|
|
|
|
|
@mock_sns
|
|
def test_publish_to_platform_endpoint():
|
|
conn = boto3.client('sns', region_name='us-east-1')
|
|
platform_application = conn.create_platform_application(
|
|
Name="my-application",
|
|
Platform="APNS",
|
|
Attributes={},
|
|
)
|
|
application_arn = platform_application['PlatformApplicationArn']
|
|
|
|
endpoint = conn.create_platform_endpoint(
|
|
PlatformApplicationArn=application_arn,
|
|
Token="some_unique_id",
|
|
CustomUserData="some user data",
|
|
Attributes={
|
|
"Enabled": 'false',
|
|
},
|
|
)
|
|
|
|
endpoint_arn = endpoint['EndpointArn']
|
|
|
|
conn.publish(Message="some message", MessageStructure="json", TargetArn=endpoint_arn)
|