Skip to content

Commit dd97900

Browse files
Fix issue with analyzedMediaUrl throws Exception (#403)
1 parent 89ff00d commit dd97900

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

Event/ProtectedMediaSubscriber.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,12 @@ public function onRequest(RequestEvent $event): void
9595
return;
9696
}
9797

98-
$mediaProperties = $this->formatCache->analyzedMediaUrl($request->getPathInfo());
99-
$mediaId = $mediaProperties['id'];
98+
try {
99+
$mediaProperties = $this->formatCache->analyzedMediaUrl($request->getPathInfo());
100+
$mediaId = $mediaProperties['id'];
101+
} catch (\Exception $e) { // @phpstan-ignore-line // it is not the listeners responsibility to handle exceptions its later done by the controller
102+
return;
103+
}
100104
}
101105

102106
if (!$mediaId) {

Tests/Unit/Event/ProtectedMediaSubscriberTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use Prophecy\Prophecy\ObjectProphecy;
2020
use Sulu\Bundle\FormBundle\Event\ProtectedMediaSubscriber;
2121
use Sulu\Bundle\FormBundle\Tests\Application\Kernel;
22+
use Sulu\Bundle\MediaBundle\Media\Exception\ImageProxyInvalidUrl;
2223
use Sulu\Bundle\MediaBundle\Media\FormatCache\FormatCacheInterface;
2324
use Sulu\Component\HttpKernel\SuluKernel;
2425
use Symfony\Component\HttpFoundation\RedirectResponse;
@@ -131,6 +132,28 @@ public function testImageProxyRoute(): void
131132
$this->protectedMediaSubscriber->onRequest($event);
132133
}
133134

135+
public function testAnalyzedMediaUrlThrowException(): void
136+
{
137+
$request = new Request();
138+
$request->attributes->set('_route', 'sulu_media.website.image.proxy');
139+
$request->server->set('REQUEST_URI', '/uploads/media/50x50/2-test-image.jpg');
140+
$request->attributes->set('slug', '/50x50/2-test-image.jpg');
141+
142+
$event = new RequestEvent(
143+
new Kernel('test', true, SuluKernel::CONTEXT_WEBSITE),
144+
$request,
145+
\defined(HttpKernelInterface::class . '::MASTER_REQUEST')
146+
? HttpKernelInterface::MASTER_REQUEST
147+
: HttpKernelInterface::MAIN_REQUEST
148+
);
149+
150+
$this->formatCache->analyzedMediaUrl(Argument::any())
151+
->willThrow(new ImageProxyInvalidUrl('some error'))
152+
->shouldBeCalled();
153+
154+
$this->assertNull($this->protectedMediaSubscriber->onRequest($event));
155+
}
156+
134157
public function testDownloadRoute(): void
135158
{
136159
$request = new Request();

0 commit comments

Comments
 (0)