From fc4361396f726a056be25d59ca2778095070800a Mon Sep 17 00:00:00 2001 From: Sean O'Brien <60306702+stobrien89@users.noreply.github.com> Date: Fri, 17 Nov 2023 14:24:22 -0500 Subject: [PATCH] enhancement: sqs response md5 validation (#2830) --- .../nextrelease/sqs-response-middleware.json | 7 +++++ src/Sqs/SqsClient.php | 2 +- tests/Sqs/SqsClientTest.php | 27 +++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 .changes/nextrelease/sqs-response-middleware.json diff --git a/.changes/nextrelease/sqs-response-middleware.json b/.changes/nextrelease/sqs-response-middleware.json new file mode 100644 index 0000000000..4d03ee87ce --- /dev/null +++ b/.changes/nextrelease/sqs-response-middleware.json @@ -0,0 +1,7 @@ +[ + { + "type": "enhancement", + "category": "Sqs", + "description": "Updates response md5 validation" + } +] \ No newline at end of file diff --git a/src/Sqs/SqsClient.php b/src/Sqs/SqsClient.php index 4492cc7427..b54e12a79c 100644 --- a/src/Sqs/SqsClient.php +++ b/src/Sqs/SqsClient.php @@ -215,7 +215,7 @@ function ($result) use ($c, $r) { ] ); } - } else if (isset($msg['MessageAttributes'])) { + } else if (!empty($msg['MessageAttributes'])) { throw new SqsException( sprintf( 'No Attribute MD5 found. Expected %s', diff --git a/tests/Sqs/SqsClientTest.php b/tests/Sqs/SqsClientTest.php index 488667c0a7..7e5944db9a 100644 --- a/tests/Sqs/SqsClientTest.php +++ b/tests/Sqs/SqsClientTest.php @@ -165,4 +165,31 @@ public function testSkipsCommandsThatAreNotReceiveMessage() $this->addMockResults($client, [new Result()]); $client->listQueues(); } + + public function testDoesNotValidateEmptyMessageAttributes() + { + $client = new SqsClient([ + 'region' => 'us-west-2', + 'version' => 'latest' + ]); + + $mock = new Result([ + 'Messages' => [ + [ + 'Body' => 'Test', + 'MessageAttributes' => [] + ] + ] + ]); + + $this->addMockResults($client, [$mock]); + $response = $client->receiveMessage([ + 'QueueUrl' => 'http://foo.com', + 'MessageAttributeNames' => [ + 'All' + ], + ]); + + $this->assertEmpty($response->get('MessageAttributes')); + } }