added resourcegroupstaggingapi support for sns (#7337)

This commit is contained in:
vgiridhar97 2024-02-15 14:24:17 -05:00 committed by GitHub
parent 44487820d7
commit 8576195462
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 31 additions and 0 deletions

View File

@ -19,6 +19,7 @@ from moto.moto_api._internal import mock_random
from moto.rds.models import RDSBackend, rds_backends from moto.rds.models import RDSBackend, rds_backends
from moto.redshift.models import RedshiftBackend, redshift_backends from moto.redshift.models import RedshiftBackend, redshift_backends
from moto.s3.models import S3Backend, s3_backends from moto.s3.models import S3Backend, s3_backends
from moto.sns.models import SNSBackend, sns_backends
from moto.sqs.models import SQSBackend, sqs_backends from moto.sqs.models import SQSBackend, sqs_backends
from moto.utilities.tagging_service import TaggingService from moto.utilities.tagging_service import TaggingService
@ -97,6 +98,10 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
def acm_backend(self) -> AWSCertificateManagerBackend: def acm_backend(self) -> AWSCertificateManagerBackend:
return acm_backends[self.account_id][self.region_name] return acm_backends[self.account_id][self.region_name]
@property
def sns_backend(self) -> SNSBackend:
return sns_backends[self.account_id][self.region_name]
@property @property
def sqs_backend(self) -> SQSBackend: def sqs_backend(self) -> SQSBackend:
return sqs_backends[self.account_id][self.region_name] return sqs_backends[self.account_id][self.region_name]
@ -492,6 +497,17 @@ class ResourceGroupsTaggingAPIBackend(BaseBackend):
yield {"ResourceARN": f"{queue.queue_arn}", "Tags": tags} yield {"ResourceARN": f"{queue.queue_arn}", "Tags": tags}
# SNS
if not resource_type_filters or "sns" in resource_type_filters:
for topic in self.sns_backend.topics.values():
tags = format_tags(topic._tags)
if not tags or not tag_filter(
tags
): # Skip if no tags, or invalid filter
continue
yield {"ResourceARN": f"{topic.arn}", "Tags": tags}
# VPC # VPC
if ( if (
not resource_type_filters not resource_type_filters

View File

@ -745,6 +745,21 @@ def test_get_resources_sqs():
assert {"Key": "Test", "Value": "1"} in resp["ResourceTagMappingList"][0]["Tags"] assert {"Key": "Test", "Value": "1"} in resp["ResourceTagMappingList"][0]["Tags"]
@mock_aws
def test_get_resources_sns():
sns = boto3.client("sns", region_name="us-east-1")
sns.create_topic(Name="test", Tags=[{"Key": "Shape", "Value": "Square"}])
rtapi = boto3.client("resourcegroupstaggingapi", region_name="us-east-1")
resp = rtapi.get_resources(ResourceTypeFilters=["sns"])
assert len(resp["ResourceTagMappingList"]) == 1
assert {"Key": "Shape", "Value": "Square"} in resp["ResourceTagMappingList"][0][
"Tags"
]
@mock_aws @mock_aws
def test_tag_resources_for_unknown_service(): def test_tag_resources_for_unknown_service():
rtapi = boto3.client("resourcegroupstaggingapi", region_name="us-west-2") rtapi = boto3.client("resourcegroupstaggingapi", region_name="us-west-2")