diff --git a/aws/conftest.py b/aws/conftest.py index 4c2b6cf..213a57f 100644 --- a/aws/conftest.py +++ b/aws/conftest.py @@ -10,6 +10,7 @@ def pytest_configure(config): "rds", "redshift", "s3", + "sns", ]: config.addinivalue_line( "markers", "{}: mark tests against {}".format(svc_name, svc_name) diff --git a/aws/sns/__init__.py b/aws/sns/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/aws/sns/resources.py b/aws/sns/resources.py new file mode 100644 index 0000000..0461ae5 --- /dev/null +++ b/aws/sns/resources.py @@ -0,0 +1,28 @@ +from conftest import botocore_client + + +def sns_subscriptions(): + "https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#subscription" + return ( + botocore_client.get("sns", "list_subscriptions", [], {}) + .extract_key("Subscriptions") + .flatten() + .values() + ) + + +def sns_subscription_attributes(): + "https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#subscription" + return [ + botocore_client.get( + service_name="sns", + method_name="get_subscription_attributes", + call_args=[], + call_kwargs={"SubscriptionArn": subscription["SubscriptionArn"]}, + profiles=[subscription["__pytest_meta"]["profile"]], + regions=[subscription["__pytest_meta"]["region"]], + ) + .extract_key("Attributes") + .values()[0] + for subscription in sns_subscriptions() + ] diff --git a/aws/sns/test_sns_pending_verified.py b/aws/sns/test_sns_pending_verified.py new file mode 100644 index 0000000..cc36794 --- /dev/null +++ b/aws/sns/test_sns_pending_verified.py @@ -0,0 +1,14 @@ +import pytest +from helpers import get_param_id + +from aws.sns.resources import sns_subscription_attributes + + +@pytest.mark.sns +@pytest.mark.parametrize( + "subscription_attrs", + sns_subscription_attributes(), + ids=lambda subscription: get_param_id(subscription, "SubscriptionArn"), +) +def test_sns_pending_verified(subscription_attrs): + assert subscription_attrs["PendingConfirmation"] == "false"