88
99namespace Ibexa \Tests \Bundle \Rest \EventListener ;
1010
11- use Ibexa \Bundle \Rest \EventListener \XmlUnsupportedMediaTypeSubscriber ;
11+ use Ibexa \Bundle \Rest \EventListener \SupportedMediaTypesSubscriber ;
1212use PHPUnit \Framework \TestCase ;
1313use Symfony \Component \HttpFoundation \HeaderBag ;
1414use Symfony \Component \HttpFoundation \Request ;
1515use Symfony \Component \HttpKernel \Event \RequestEvent ;
1616use Symfony \Component \HttpKernel \Exception \UnsupportedMediaTypeHttpException ;
1717use Symfony \Component \HttpKernel \HttpKernelInterface ;
1818
19- final class XmlUnsupportedMediaTypeSubscriberTest extends TestCase
19+ final class SupportedMediaTypesSubscriberTest extends TestCase
2020{
21- private const XML_REGEXP = '( ^application/vnd\.ibexa\.api(\.[A-Za-z]+)+\+xml$) ' ;
21+ private const XML_REGEXP = '^application/vnd\.ibexa\.api(\.[A-Za-z]+)+\+xml$ ' ;
2222
2323 /** @var \Symfony\Component\HttpKernel\HttpKernelInterface&\PHPUnit\Framework\MockObject\MockObject */
2424 private HttpKernelInterface $ kernel ;
@@ -30,76 +30,74 @@ protected function setUp(): void
3030 $ this ->kernel = $ this ->createMock (HttpKernelInterface::class);
3131 }
3232
33- public function testDoesNothingWhenXmlDisabledIsNotTrue (): void
33+ public function testDoesNothingWhenSupportedMediaTypesParameterIsNotSet (): void
3434 {
3535 $ request = new Request ();
36- $ request ->attributes ->set ('xml_disabled ' , false );
37-
3836 $ event = new RequestEvent ($ this ->kernel , $ request , HttpKernelInterface::MAIN_REQUEST );
3937
40- $ subscriber = new XmlUnsupportedMediaTypeSubscriber ([ self :: XML_REGEXP ] );
41- $ subscriber ->blockXmlUnsupportedMediaType ($ event );
38+ $ subscriber = new SupportedMediaTypesSubscriber ( );
39+ $ subscriber ->allowOnlySupportedMediaTypes ($ event );
4240
4341 self ::expectNotToPerformAssertions ();
4442 }
4543
46- public function testDoesNothingWhenNoRegexps (): void
44+ public function testDoesNothingWhenSupportedMediaTypesParameterIsEmpty (): void
4745 {
4846 $ request = new Request ();
49- $ request ->attributes ->set ('xml_disabled ' , true );
47+ $ request ->attributes ->set ('supported_media_types ' , [] );
5048
51- $ subscriber = new XmlUnsupportedMediaTypeSubscriber ([] );
49+ $ subscriber = new SupportedMediaTypesSubscriber ( );
5250 $ event = new RequestEvent ($ this ->kernel , $ request , HttpKernelInterface::MAIN_REQUEST );
5351
54- $ subscriber ->blockXmlUnsupportedMediaType ($ event );
52+ $ subscriber ->allowOnlySupportedMediaTypes ($ event );
5553
5654 self ::expectNotToPerformAssertions ();
5755 }
5856
59- public function testDoesNothingWhenNoMatch (): void
57+ public function testDoesNothingWhenMediaTypeIsSupported (): void
6058 {
6159 $ request = new Request ();
62- $ request ->attributes ->set ('xml_disabled ' , true );
60+ $ request ->attributes ->set ('supported_media_types ' , [ ' json ' , ' xml ' ] );
6361 $ request ->headers = new HeaderBag ([
64- 'Content-Type ' => 'application/json ' ,
65- 'Accept ' => 'application/json ' ,
62+ 'Content-Type ' => 'application/vnd.ibexa.api.ContentCreat+ json ' ,
63+ 'Accept ' => 'application/vnd.ibexa.api.ContentCreat+ json ' ,
6664 ]);
6765
68- $ subscriber = new XmlUnsupportedMediaTypeSubscriber ([ self :: XML_REGEXP ] );
66+ $ subscriber = new SupportedMediaTypesSubscriber ( );
6967 $ event = new RequestEvent ($ this ->kernel , $ request , HttpKernelInterface::MAIN_REQUEST );
7068
71- $ subscriber ->blockXmlUnsupportedMediaType ($ event );
69+ $ subscriber ->allowOnlySupportedMediaTypes ($ event );
7270
7371 self ::expectNotToPerformAssertions ();
7472 }
7573
76- public function testThrowsExceptionWhenContentTypeHeaderMatches (): void
74+ public function testThrowsExceptionWhenContentTypeHeaderTypeIsNotSupported (): void
7775 {
7876 $ request = new Request ();
79- $ request ->attributes ->set ('xml_disabled ' , true );
77+ $ request ->attributes ->set ('supported_media_types ' , [ ' json ' ] );
8078 $ request ->headers = new HeaderBag ([
8179 'Content-Type ' => 'application/vnd.ibexa.api.ContentCreate+xml ' ,
8280 ]);
8381
84- $ subscriber = new XmlUnsupportedMediaTypeSubscriber ([ self :: XML_REGEXP ] );
82+ $ subscriber = new SupportedMediaTypesSubscriber ( );
8583 $ event = new RequestEvent ($ this ->kernel , $ request , HttpKernelInterface::MAIN_REQUEST );
8684
8785 $ this ->expectException (UnsupportedMediaTypeHttpException::class);
88- $ subscriber ->blockXmlUnsupportedMediaType ($ event );
86+ $ subscriber ->allowOnlySupportedMediaTypes ($ event );
8987 }
9088
91- public function testThrowsExceptionWhenAcceptHeaderMatches (): void
89+ public function testThrowsExceptionWhenAcceptHeaderTypeIsNotSupported (): void
9290 {
9391 $ request = new Request ();
94- $ request ->attributes ->set ('xml_disabled ' , true );
92+ $ request ->attributes ->set ('supported_media_types ' , [ ' json ' ] );
9593 $ request ->headers = new HeaderBag ([
9694 'Accept ' => 'application/vnd.ibexa.api.ContentCreate+xml ' ,
9795 ]);
9896
99- $ subscriber = new XmlUnsupportedMediaTypeSubscriber ([ self :: XML_REGEXP ] );
97+ $ subscriber = new SupportedMediaTypesSubscriber ( );
10098 $ event = new RequestEvent ($ this ->kernel , $ request , HttpKernelInterface::MAIN_REQUEST );
10199
102100 $ this ->expectException (UnsupportedMediaTypeHttpException::class);
103- $ subscriber ->blockXmlUnsupportedMediaType ($ event );
101+ $ subscriber ->allowOnlySupportedMediaTypes ($ event );
104102 }
105103}
0 commit comments