Skip to content

Commit 3d73675

Browse files
committed
test(AMQP): improve tests for gzipped messages
1 parent 5752ee9 commit 3d73675

File tree

3 files changed

+30
-3
lines changed

3 files changed

+30
-3
lines changed

features/bootstrap/SendContext.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,9 @@ public function theMessageInQueueContainsAndIsAJsonMessage(string $content, stri
111111
}
112112

113113
/**
114-
* @Then The message in queue :queueName contains a gzipped message
114+
* @Then The message in queue :queueName contains :content and is a gzipped message
115115
*/
116-
public function theMessageInQueueContainsAGzippedMessage(string $queueName): void
116+
public function theMessageInQueueContainsAGzippedMessage(string $content, string $queueName): void
117117
{
118118
$message = $this->theMessageInQueueContains(self::TEXT_ROUTING_KEY, false, $queueName, ContentType::BINARY);
119119

@@ -124,6 +124,7 @@ public function theMessageInQueueContainsAGzippedMessage(string $queueName): voi
124124
Assert::assertArrayHasKey(GZip::HEADER_COMPRESSION_CONTENT_TYPE, $headers);
125125
Assert::assertSame(Gzip::COMPRESSION_ALGORITHM, $headers[Gzip::HEADER_COMPRESSION]);
126126
Assert::assertSame(ContentType::TEXT, $headers[Gzip::HEADER_COMPRESSION_CONTENT_TYPE]);
127+
Assert::assertSame($content, gzdecode(base64_decode($message['payload'])));
127128
}
128129

129130
private function theMessageInQueueContains(string $routingKey, string|bool $content, string $queueName, string $contentType): array

features/send.feature

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ Scenario: Send json message
2121
Scenario: Send gzipped text message
2222
When I send the gzipped text message 'Compressed text'
2323
Then The queue 'test_1' must contain 1 message
24-
And The message in queue 'test_1' contains a gzipped message
24+
And The message in queue 'test_1' contains 'Compressed text' and is a gzipped message

tests/Workers/MessageAdapterTest.php

+26
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use PHPUnit\Framework\Attributes\DataProvider;
88
use PHPUnit\Framework\TestCase;
9+
use Puzzle\AMQP\Messages\Bodies\Binary;
910
use Swarrot\Broker\Message;
1011
use Puzzle\AMQP\Messages\ContentType;
1112
use Puzzle\AMQP\Messages\Bodies\Text;
@@ -252,6 +253,31 @@ public static function providerTestCloneIntoWritableMessage(): array
252253
];
253254
}
254255

256+
public function testCloneIntoWritableMessageFromCompressedMessage(): void
257+
{
258+
$readableMessage = InMemory::build('old.routing.key', new Binary('This is fine'), [
259+
'compression' => 'gzip',
260+
'compression_content-type' => 'application/json',
261+
], [
262+
'content_type' => 'application/octet-stream',
263+
]);
264+
265+
$message = $readableMessage->cloneIntoWritableMessage(
266+
new \Puzzle\AMQP\Messages\Message('new.routing.key'),
267+
);
268+
269+
self::assertInstanceOf(WritableMessage::class, $message);
270+
self::assertSame('new.routing.key', $message->getRoutingKey());
271+
272+
$headers = $message->getHeaders();
273+
$this->assertSameArrayExceptOrder(
274+
['compression', 'compression_content-type', 'routing_key', 'app_id', 'message_datetime'],
275+
array_keys($headers)
276+
);
277+
self::assertSame('application/json', $headers['compression_content-type']);
278+
self::assertSame('gzip', $headers['compression']);
279+
}
280+
255281
public function testToStringInvalidUtf8(): void
256282
{
257283
$invalidUTF8Message = new Message(

0 commit comments

Comments
 (0)