Throws UnrecoverableMessageHandlingException when passed invalid entity manager name for Doctrine middlewares
This commit is contained in:
parent
2ecad3ffa9
commit
c4eca27149
@ -12,8 +12,8 @@
|
|||||||
namespace Symfony\Bridge\Doctrine\Messenger;
|
namespace Symfony\Bridge\Doctrine\Messenger;
|
||||||
|
|
||||||
use Doctrine\Common\Persistence\ManagerRegistry;
|
use Doctrine\Common\Persistence\ManagerRegistry;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
|
||||||
use Symfony\Component\Messenger\Envelope;
|
use Symfony\Component\Messenger\Envelope;
|
||||||
|
use Symfony\Component\Messenger\Exception\UnrecoverableMessageHandlingException;
|
||||||
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
||||||
use Symfony\Component\Messenger\Middleware\StackInterface;
|
use Symfony\Component\Messenger\Middleware\StackInterface;
|
||||||
|
|
||||||
@ -40,10 +40,10 @@ class DoctrineCloseConnectionMiddleware implements MiddlewareInterface
|
|||||||
*/
|
*/
|
||||||
public function handle(Envelope $envelope, StackInterface $stack): Envelope
|
public function handle(Envelope $envelope, StackInterface $stack): Envelope
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
$entityManager = $this->managerRegistry->getManager($this->entityManagerName);
|
$entityManager = $this->managerRegistry->getManager($this->entityManagerName);
|
||||||
|
} catch (\InvalidArgumentException $e) {
|
||||||
if (!$entityManager instanceof EntityManagerInterface) {
|
throw new UnrecoverableMessageHandlingException($e->getMessage(), 0, $e);
|
||||||
throw new \InvalidArgumentException(sprintf('The ObjectManager with name "%s" must be an instance of EntityManagerInterface', $this->entityManagerName));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
namespace Symfony\Bridge\Doctrine\Messenger;
|
namespace Symfony\Bridge\Doctrine\Messenger;
|
||||||
|
|
||||||
use Doctrine\Common\Persistence\ManagerRegistry;
|
use Doctrine\Common\Persistence\ManagerRegistry;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
|
||||||
use Symfony\Component\Messenger\Envelope;
|
use Symfony\Component\Messenger\Envelope;
|
||||||
|
use Symfony\Component\Messenger\Exception\UnrecoverableMessageHandlingException;
|
||||||
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
||||||
use Symfony\Component\Messenger\Middleware\StackInterface;
|
use Symfony\Component\Messenger\Middleware\StackInterface;
|
||||||
|
|
||||||
@ -40,10 +40,10 @@ class DoctrinePingConnectionMiddleware implements MiddlewareInterface
|
|||||||
*/
|
*/
|
||||||
public function handle(Envelope $envelope, StackInterface $stack): Envelope
|
public function handle(Envelope $envelope, StackInterface $stack): Envelope
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
$entityManager = $this->managerRegistry->getManager($this->entityManagerName);
|
$entityManager = $this->managerRegistry->getManager($this->entityManagerName);
|
||||||
|
} catch (\InvalidArgumentException $e) {
|
||||||
if (!$entityManager instanceof EntityManagerInterface) {
|
throw new UnrecoverableMessageHandlingException($e->getMessage(), 0, $e);
|
||||||
throw new \InvalidArgumentException(sprintf('The ObjectManager with name "%s" must be an instance of EntityManagerInterface', $this->entityManagerName));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$connection = $entityManager->getConnection();
|
$connection = $entityManager->getConnection();
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
namespace Symfony\Bridge\Doctrine\Messenger;
|
namespace Symfony\Bridge\Doctrine\Messenger;
|
||||||
|
|
||||||
use Doctrine\Common\Persistence\ManagerRegistry;
|
use Doctrine\Common\Persistence\ManagerRegistry;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
|
||||||
use Symfony\Component\Messenger\Envelope;
|
use Symfony\Component\Messenger\Envelope;
|
||||||
|
use Symfony\Component\Messenger\Exception\UnrecoverableMessageHandlingException;
|
||||||
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
||||||
use Symfony\Component\Messenger\Middleware\StackInterface;
|
use Symfony\Component\Messenger\Middleware\StackInterface;
|
||||||
|
|
||||||
@ -40,10 +40,10 @@ class DoctrineTransactionMiddleware implements MiddlewareInterface
|
|||||||
*/
|
*/
|
||||||
public function handle(Envelope $envelope, StackInterface $stack): Envelope
|
public function handle(Envelope $envelope, StackInterface $stack): Envelope
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
$entityManager = $this->managerRegistry->getManager($this->entityManagerName);
|
$entityManager = $this->managerRegistry->getManager($this->entityManagerName);
|
||||||
|
} catch (\InvalidArgumentException $e) {
|
||||||
if (!$entityManager instanceof EntityManagerInterface) {
|
throw new UnrecoverableMessageHandlingException($e->getMessage(), 0, $e);
|
||||||
throw new \InvalidArgumentException(sprintf('The ObjectManager with name "%s" must be an instance of EntityManagerInterface', $this->entityManagerName));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$entityManager->getConnection()->beginTransaction();
|
$entityManager->getConnection()->beginTransaction();
|
||||||
|
@ -16,6 +16,7 @@ use Doctrine\DBAL\Connection;
|
|||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bridge\Doctrine\Messenger\DoctrineCloseConnectionMiddleware;
|
use Symfony\Bridge\Doctrine\Messenger\DoctrineCloseConnectionMiddleware;
|
||||||
use Symfony\Component\Messenger\Envelope;
|
use Symfony\Component\Messenger\Envelope;
|
||||||
|
use Symfony\Component\Messenger\Exception\UnrecoverableMessageHandlingException;
|
||||||
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
||||||
|
|
||||||
class DoctrineCloseConnectionMiddlewareTest extends MiddlewareTestCase
|
class DoctrineCloseConnectionMiddlewareTest extends MiddlewareTestCase
|
||||||
@ -50,4 +51,19 @@ class DoctrineCloseConnectionMiddlewareTest extends MiddlewareTestCase
|
|||||||
|
|
||||||
$this->middleware->handle(new Envelope(new \stdClass()), $this->getStackMock());
|
$this->middleware->handle(new Envelope(new \stdClass()), $this->getStackMock());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testInvalidEntityManagerThrowsException()
|
||||||
|
{
|
||||||
|
$managerRegistry = $this->createMock(ManagerRegistry::class);
|
||||||
|
$managerRegistry
|
||||||
|
->method('getManager')
|
||||||
|
->with('unknown_manager')
|
||||||
|
->will($this->throwException(new \InvalidArgumentException()));
|
||||||
|
|
||||||
|
$middleware = new DoctrineCloseConnectionMiddleware($managerRegistry, 'unknown_manager');
|
||||||
|
|
||||||
|
$this->expectException(UnrecoverableMessageHandlingException::class);
|
||||||
|
|
||||||
|
$middleware->handle(new Envelope(new \stdClass()), $this->getStackMock(false));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ use Doctrine\DBAL\Connection;
|
|||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bridge\Doctrine\Messenger\DoctrinePingConnectionMiddleware;
|
use Symfony\Bridge\Doctrine\Messenger\DoctrinePingConnectionMiddleware;
|
||||||
use Symfony\Component\Messenger\Envelope;
|
use Symfony\Component\Messenger\Envelope;
|
||||||
|
use Symfony\Component\Messenger\Exception\UnrecoverableMessageHandlingException;
|
||||||
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
||||||
|
|
||||||
class DoctrinePingConnectionMiddlewareTest extends MiddlewareTestCase
|
class DoctrinePingConnectionMiddlewareTest extends MiddlewareTestCase
|
||||||
@ -71,4 +72,19 @@ class DoctrinePingConnectionMiddlewareTest extends MiddlewareTestCase
|
|||||||
|
|
||||||
$this->middleware->handle(new Envelope(new \stdClass()), $this->getStackMock());
|
$this->middleware->handle(new Envelope(new \stdClass()), $this->getStackMock());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testInvalidEntityManagerThrowsException()
|
||||||
|
{
|
||||||
|
$managerRegistry = $this->createMock(ManagerRegistry::class);
|
||||||
|
$managerRegistry
|
||||||
|
->method('getManager')
|
||||||
|
->with('unknown_manager')
|
||||||
|
->will($this->throwException(new \InvalidArgumentException()));
|
||||||
|
|
||||||
|
$middleware = new DoctrinePingConnectionMiddleware($managerRegistry, 'unknown_manager');
|
||||||
|
|
||||||
|
$this->expectException(UnrecoverableMessageHandlingException::class);
|
||||||
|
|
||||||
|
$middleware->handle(new Envelope(new \stdClass()), $this->getStackMock(false));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ use Doctrine\DBAL\Connection;
|
|||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bridge\Doctrine\Messenger\DoctrineTransactionMiddleware;
|
use Symfony\Bridge\Doctrine\Messenger\DoctrineTransactionMiddleware;
|
||||||
use Symfony\Component\Messenger\Envelope;
|
use Symfony\Component\Messenger\Envelope;
|
||||||
|
use Symfony\Component\Messenger\Exception\UnrecoverableMessageHandlingException;
|
||||||
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
||||||
|
|
||||||
class DoctrineTransactionMiddlewareTest extends MiddlewareTestCase
|
class DoctrineTransactionMiddlewareTest extends MiddlewareTestCase
|
||||||
@ -67,4 +68,19 @@ class DoctrineTransactionMiddlewareTest extends MiddlewareTestCase
|
|||||||
|
|
||||||
$this->middleware->handle(new Envelope(new \stdClass()), $this->getThrowingStackMock());
|
$this->middleware->handle(new Envelope(new \stdClass()), $this->getThrowingStackMock());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testInvalidEntityManagerThrowsException()
|
||||||
|
{
|
||||||
|
$managerRegistry = $this->createMock(ManagerRegistry::class);
|
||||||
|
$managerRegistry
|
||||||
|
->method('getManager')
|
||||||
|
->with('unknown_manager')
|
||||||
|
->will($this->throwException(new \InvalidArgumentException()));
|
||||||
|
|
||||||
|
$middleware = new DoctrineTransactionMiddleware($managerRegistry, 'unknown_manager');
|
||||||
|
|
||||||
|
$this->expectException(UnrecoverableMessageHandlingException::class);
|
||||||
|
|
||||||
|
$middleware->handle(new Envelope(new \stdClass()), $this->getStackMock(false));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
"symfony/dependency-injection": "~3.4|~4.0",
|
"symfony/dependency-injection": "~3.4|~4.0",
|
||||||
"symfony/form": "~4.3",
|
"symfony/form": "~4.3",
|
||||||
"symfony/http-kernel": "~3.4|~4.0",
|
"symfony/http-kernel": "~3.4|~4.0",
|
||||||
"symfony/messenger": "~4.2",
|
"symfony/messenger": "~4.3",
|
||||||
"symfony/property-access": "~3.4|~4.0",
|
"symfony/property-access": "~3.4|~4.0",
|
||||||
"symfony/property-info": "~3.4|~4.0",
|
"symfony/property-info": "~3.4|~4.0",
|
||||||
"symfony/proxy-manager-bridge": "~3.4|~4.0",
|
"symfony/proxy-manager-bridge": "~3.4|~4.0",
|
||||||
@ -49,7 +49,7 @@
|
|||||||
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
|
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
|
||||||
"symfony/dependency-injection": "<3.4",
|
"symfony/dependency-injection": "<3.4",
|
||||||
"symfony/form": "<4.3",
|
"symfony/form": "<4.3",
|
||||||
"symfony/messenger": "<4.2"
|
"symfony/messenger": "<4.3"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"symfony/form": "",
|
"symfony/form": "",
|
||||||
|
Reference in New Issue
Block a user