Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9f020dc

Browse files
committed
Fix RequestContext not updated
1 parent 414c78b commit 9f020dc

File tree

2 files changed

+34
-20
lines changed

2 files changed

+34
-20
lines changed

src/Symfony/Component/Messenger/Middleware/RouterContextMiddleware.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
use Symfony\Component\Messenger\Envelope;
1515
use Symfony\Component\Messenger\Stamp\ConsumedByWorkerStamp;
1616
use Symfony\Component\Messenger\Stamp\RouterContextStamp;
17-
use Symfony\Component\Routing\RequestContext;
1817
use Symfony\Component\Routing\RequestContextAwareInterface;
1918

2019
/**
@@ -49,10 +48,20 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
4948
return $stack->next()->handle($envelope, $stack);
5049
}
5150

52-
$currentContext = $this->router->getContext();
51+
$context = $this->router->getContext();
52+
$currentContext = [
53+
$context->getBaseUrl(),
54+
$context->getMethod(),
55+
$context->getHost(),
56+
$context->getScheme(),
57+
$context->getHttpPort(),
58+
$context->getHttpsPort(),
59+
$context->getPathInfo(),
60+
$context->getQueryString(),
61+
];
5362

5463
/* @var RouterContextStamp $contextStamp */
55-
$this->router->setContext(new RequestContext(
64+
$context->__construct(
5665
$contextStamp->getBaseUrl(),
5766
$contextStamp->getMethod(),
5867
$contextStamp->getHost(),
@@ -61,12 +70,12 @@ public function handle(Envelope $envelope, StackInterface $stack): Envelope
6170
$contextStamp->getHttpsPort(),
6271
$contextStamp->getPathInfo(),
6372
$contextStamp->getQueryString()
64-
));
73+
);
6574

6675
try {
6776
return $stack->next()->handle($envelope, $stack);
6877
} finally {
69-
$this->router->setContext($currentContext);
78+
$context->__construct(...$currentContext);
7079
}
7180
}
7281
}

src/Symfony/Component/Messenger/Tests/Middleware/RouterContextMiddlewareTest.php

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
namespace Symfony\Component\Messenger\Tests\Middleware;
44

55
use Symfony\Component\Messenger\Envelope;
6+
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
67
use Symfony\Component\Messenger\Middleware\RouterContextMiddleware;
8+
use Symfony\Component\Messenger\Middleware\StackInterface;
9+
use Symfony\Component\Messenger\Middleware\StackMiddleware;
710
use Symfony\Component\Messenger\Stamp\ConsumedByWorkerStamp;
811
use Symfony\Component\Messenger\Stamp\RouterContextStamp;
912
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
@@ -34,30 +37,32 @@ public function testMiddlewareStoreContext()
3437
public function testMiddlewareRestoreContext()
3538
{
3639
$router = $this->createMock(RequestContextAwareInterface::class);
37-
$originalContext = new RequestContext();
40+
$context = new RequestContext('', 'POST', 'github.com');
3841

3942
$router
4043
->expects($this->once())
4144
->method('getContext')
42-
->willReturn($originalContext);
43-
44-
$router
45-
->expects($this->exactly(2))
46-
->method('setContext')
47-
->withConsecutive(
48-
[$this->callback(function ($context) {
49-
$this->assertSame('symfony.com', $context->getHost());
50-
51-
return true;
52-
})],
53-
[$originalContext]
54-
);
45+
->willReturn($context);
5546

5647
$middleware = new RouterContextMiddleware($router);
5748
$envelope = new Envelope(new \stdClass(), [
5849
new ConsumedByWorkerStamp(),
5950
new RouterContextStamp('', 'GET', 'symfony.com', 'https', 80, 443, '/', ''),
6051
]);
61-
$middleware->handle($envelope, $this->getStackMock());
52+
53+
$nextMiddleware = $this->createMock(MiddlewareInterface::class);
54+
$nextMiddleware
55+
->expects($this->once())
56+
->method('handle')
57+
->willReturnCallback(function (Envelope $envelope, StackInterface $stack) use ($context): Envelope {
58+
$this->assertSame('symfony.com', $context->getHost());
59+
60+
return $envelope;
61+
})
62+
;
63+
64+
$middleware->handle($envelope, new StackMiddleware($nextMiddleware));
65+
66+
$this->assertSame('github.com', $context->getHost());
6267
}
6368
}

0 commit comments

Comments
 (0)