added resourcegroupstaggingapi support for sns (#7337)
This commit is contained in:
parent
44487820d7
commit
8576195462
@ -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
|
||||||
|
@ -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")
|
||||||
|
Loading…
Reference in New Issue
Block a user