chore(sqs): clean up code (#8366)

This commit is contained in:
Kay Agahd
2025-07-25 14:10:34 +02:00
committed by GitHub
parent 1cfe610d47
commit d4e66c4a6f
2 changed files with 43 additions and 5 deletions
@@ -51,7 +51,7 @@ class SQS(AWSService):
def _get_queue_attributes(self):
try:
logger.info("SQS - describing queue attributes...")
valid_queues = []
non_existing_queues = []
for queue in self.queues:
try:
regional_client = self.regional_clients[queue.region]
@@ -73,7 +73,6 @@ class SQS(AWSService):
== "true"
):
queue.kms_key_id = "SqsManagedSseEnabled"
valid_queues.append(queue)
except ClientError as error:
if (
error.response["Error"]["Code"]
@@ -82,17 +81,16 @@ class SQS(AWSService):
logger.warning(
f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
)
non_existing_queues.append(queue)
else:
logger.error(
f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
)
valid_queues.append(queue)
except Exception as error:
logger.error(
f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
)
valid_queues.append(queue)
self.queues = valid_queues
self.queues = [q for q in self.queues if q not in non_existing_queues]
except Exception as error:
logger.error(
f"{regional_client.region} -- {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
@@ -4,6 +4,7 @@ from uuid import uuid4
import botocore
from boto3 import client
from botocore.exceptions import ClientError
from moto import mock_aws
from prowler.providers.aws.services.sqs.sqs_service import SQS
@@ -114,3 +115,42 @@ class Test_SQS_Service:
assert sqs.queues[0].region == AWS_REGION_EU_WEST_1
assert sqs.queues[0].policy
assert sqs.queues[0].kms_key_id == test_key
@mock_aws
def test_get_queue_attributes_nonexistent_queue(self):
aws_provider = set_mocked_aws_provider([AWS_REGION_EU_WEST_1])
sqs_service = SQS(aws_provider)
queue_url = f"https://sqs.{AWS_REGION_EU_WEST_1}.amazonaws.com/{AWS_ACCOUNT_NUMBER}/{test_queue}"
sqs_service.queues = [
type(
"Queue",
(),
{
"id": queue_url,
"name": test_queue,
"arn": test_queue_arn,
"region": AWS_REGION_EU_WEST_1,
},
)()
]
def mock_get_queue_attributes(**kwargs):
raise ClientError(
{
"Error": {
"Code": "AWS.SimpleQueueService.NonExistentQueue",
"Message": "The specified queue does not exist.",
}
},
"GetQueueAttributes",
)
with patch.object(
sqs_service.regional_clients[AWS_REGION_EU_WEST_1],
"get_queue_attributes",
side_effect=mock_get_queue_attributes,
):
sqs_service._get_queue_attributes()
assert sqs_service.queues == []