Skip to content

Commit 5697d2d

Browse files
authored
Merge pull request #25 from MacPaw/feat(PLATECO-1668)/move-messenger-transport-factory-decorator-to-package
Feat(plateco-1668): add default schema stamp
2 parents 262452d + 8f9d1b5 commit 5697d2d

File tree

3 files changed

+38
-3
lines changed

3 files changed

+38
-3
lines changed

config/services.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,7 @@ services:
2323
- { name: kernel.event_subscriber }
2424

2525
Macpaw\SchemaContextBundle\Messenger\Middleware\BaggageSchemaMiddleware:
26+
arguments:
27+
$defaultSchema: '%schema_context.default_schema%'
2628
tags:
2729
- { name: messenger.middleware }

src/Messenger/Middleware/BaggageSchemaMiddleware.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ class BaggageSchemaMiddleware implements MiddlewareInterface
1616
{
1717
public function __construct(
1818
private BaggageSchemaResolver $baggageSchemaResolver,
19-
private BaggageCodec $baggageCodec
19+
private BaggageCodec $baggageCodec,
20+
private string $defaultSchema,
2021
) {
2122
}
2223

@@ -43,6 +44,8 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
4344

4445
if ($schema !== null && $schema !== '') {
4546
$envelope = $envelope->with(new BaggageSchemaStamp($schema, $baggage));
47+
} else {
48+
$envelope = $envelope->with(new BaggageSchemaStamp($this->defaultSchema, $baggage));
4649
}
4750

4851
return $stack->next()->handle($envelope, $stack);

tests/Messenger/Middleware/BaggageSchemaMiddlewareTest.php

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Symfony\Component\Messenger\Envelope;
1313
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
1414
use Symfony\Component\Messenger\Middleware\StackInterface;
15+
use Symfony\Component\Messenger\Stamp\ReceivedStamp;
1516

1617
class BaggageSchemaMiddlewareTest extends TestCase
1718
{
@@ -25,9 +26,10 @@ public function testSchemaIsSetFromStamp(): void
2526

2627
$resolver = new BaggageSchemaResolver();
2728
$baggageCodec = new BaggageCodec();
28-
$middleware = new BaggageSchemaMiddleware($resolver, $baggageCodec);
29+
$middleware = new BaggageSchemaMiddleware($resolver, $baggageCodec, 'public');
2930
$stamp = new BaggageSchemaStamp($schema, $rawBaggage);
3031
$envelope = (new Envelope(new \stdClass()))->with($stamp);
32+
$envelope = $envelope->with(new ReceivedStamp('async'));
3133
$stack = $this->createMock(StackInterface::class);
3234
$nextMiddleware = new class implements MiddlewareInterface {
3335
public function handle(Envelope $envelope, StackInterface $stack): Envelope
@@ -68,7 +70,7 @@ public function testSchemaStampIsInjectedIfMissing(): void
6870
->setSchema($schema)
6971
->setBaggage($baggage);
7072
$baggageCodec = new BaggageCodec();
71-
$middleware = new BaggageSchemaMiddleware($resolver, $baggageCodec);
73+
$middleware = new BaggageSchemaMiddleware($resolver, $baggageCodec, 'public');
7274
$originalEnvelope = new Envelope(new \stdClass());
7375
$stack = $this->createMock(StackInterface::class);
7476

@@ -91,4 +93,32 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
9193
$this->assertSame($schema, $stamp->schema);
9294
$this->assertSame($rawBaggage, $stamp->baggage);
9395
}
96+
97+
public function testSchemaStampIsDefaultSchema(): void
98+
{
99+
$resolver = new BaggageSchemaResolver();
100+
$baggageCodec = new BaggageCodec();
101+
$middleware = new BaggageSchemaMiddleware($resolver, $baggageCodec, 'public');
102+
$originalEnvelope = new Envelope(new \stdClass());
103+
$stack = $this->createMock(StackInterface::class);
104+
105+
$stack->expects($this->once())
106+
->method('next')
107+
->willReturnCallback(function () {
108+
return new class implements MiddlewareInterface {
109+
public function handle(Envelope $envelope, StackInterface $stack): Envelope
110+
{
111+
return $envelope;
112+
}
113+
};
114+
});
115+
116+
$resultEnvelope = $middleware->handle($originalEnvelope, $stack);
117+
118+
$stamp = $resultEnvelope->last(BaggageSchemaStamp::class);
119+
120+
$this->assertInstanceOf(BaggageSchemaStamp::class, $stamp);
121+
$this->assertSame('public', $stamp->schema);
122+
$this->assertSame('', $stamp->baggage);
123+
}
94124
}

0 commit comments

Comments
 (0)