Update SNS get_endpoint_attributes response for Not Found endpoints (#3637)
The response returned for sns.get_endpoint_attributes was not in sync with the actual response from boto. Co-authored-by: Antillon, Alejandro <alejandro.antillon@f-secure.com>
This commit is contained in:
parent
cd044ef00b
commit
e9dc5edf7f
@ -1,12 +1,24 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from moto.core.exceptions import RESTError
|
from moto.core.exceptions import RESTError
|
||||||
|
|
||||||
|
NOT_FOUND_ENDPOINT_ERROR = """<ErrorResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/">
|
||||||
|
<Error>
|
||||||
|
<Type>{{ sender }}</Type>
|
||||||
|
<Code>{{ error_type }}</Code>
|
||||||
|
<Message>{{ message }}</Message>
|
||||||
|
</Error>
|
||||||
|
<RequestId>9dd01905-5012-5f99-8663-4b3ecd0dfaef</RequestId>
|
||||||
|
</ErrorResponse>"""
|
||||||
|
|
||||||
|
|
||||||
class SNSNotFoundError(RESTError):
|
class SNSNotFoundError(RESTError):
|
||||||
code = 404
|
code = 404
|
||||||
|
|
||||||
def __init__(self, message):
|
def __init__(self, message, **kwargs):
|
||||||
super(SNSNotFoundError, self).__init__("NotFound", message)
|
kwargs.setdefault("template", "endpoint_error")
|
||||||
|
kwargs.setdefault("sender", "Sender")
|
||||||
|
self.templates["endpoint_error"] = NOT_FOUND_ENDPOINT_ERROR
|
||||||
|
super(SNSNotFoundError, self).__init__("NotFound", message, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class ResourceNotFoundError(RESTError):
|
class ResourceNotFoundError(RESTError):
|
||||||
|
@ -605,7 +605,7 @@ class SNSBackend(BaseBackend):
|
|||||||
try:
|
try:
|
||||||
return self.platform_endpoints[arn]
|
return self.platform_endpoints[arn]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise SNSNotFoundError("Endpoint with arn {0} not found".format(arn))
|
raise SNSNotFoundError("Endpoint does not exist")
|
||||||
|
|
||||||
def set_endpoint_attributes(self, arn, attributes):
|
def set_endpoint_attributes(self, arn, attributes):
|
||||||
endpoint = self.get_endpoint(arn)
|
endpoint = self.get_endpoint(arn)
|
||||||
|
@ -5,6 +5,7 @@ from botocore.exceptions import ClientError
|
|||||||
from moto import mock_sns
|
from moto import mock_sns
|
||||||
import sure # noqa
|
import sure # noqa
|
||||||
from moto.core import ACCOUNT_ID
|
from moto.core import ACCOUNT_ID
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
@mock_sns
|
@mock_sns
|
||||||
@ -206,6 +207,18 @@ def test_get_endpoint_attributes():
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_sns
|
||||||
|
def test_get_non_existent_endpoint_attributes():
|
||||||
|
conn = boto3.client("sns", region_name="us-east-1")
|
||||||
|
endpoint_arn = "arn:aws:sns:us-east-1:123456789012:endpoint/APNS/my-application/c1f76c42-192a-4e75-b04f-a9268ce2abf3"
|
||||||
|
with pytest.raises(conn.exceptions.NotFoundException) as excinfo:
|
||||||
|
conn.get_endpoint_attributes(EndpointArn=endpoint_arn)
|
||||||
|
error = excinfo.value.response["Error"]
|
||||||
|
error["Type"].should.equal("Sender")
|
||||||
|
error["Code"].should.equal("NotFound")
|
||||||
|
error["Message"].should.equal("Endpoint does not exist")
|
||||||
|
|
||||||
|
|
||||||
@mock_sns
|
@mock_sns
|
||||||
def test_get_missing_endpoint_attributes():
|
def test_get_missing_endpoint_attributes():
|
||||||
conn = boto3.client("sns", region_name="us-east-1")
|
conn = boto3.client("sns", region_name="us-east-1")
|
||||||
|
Loading…
Reference in New Issue
Block a user