13
13
14
14
namespace ApiPlatform \Tests \HttpCache \EventListener ;
15
15
16
- use ApiPlatform \Core \Metadata \Resource \Factory \ResourceMetadataFactoryInterface ;
17
- use ApiPlatform \Core \Metadata \Resource \ResourceMetadata ;
18
16
use ApiPlatform \HttpCache \EventListener \AddHeadersListener ;
19
17
use ApiPlatform \Tests \Fixtures \TestBundle \Entity \Dummy ;
20
18
use ApiPlatform \Tests \ProphecyTrait ;
@@ -108,10 +106,7 @@ public function testAddHeaders()
108
106
$ response
109
107
);
110
108
111
- $ factory = $ this ->prophesize (ResourceMetadataFactoryInterface::class);
112
- $ factory ->create (Dummy::class)->willReturn (new ResourceMetadata ())->shouldBeCalled ();
113
-
114
- $ listener = new AddHeadersListener (true , 100 , 200 , ['Accept ' , 'Accept-Encoding ' ], true , $ factory ->reveal (), 15 , 30 );
109
+ $ listener = new AddHeadersListener (true , 100 , 200 , ['Accept ' , 'Accept-Encoding ' ], true , 15 , 30 );
115
110
$ listener ->onKernelResponse ($ event );
116
111
117
112
$ this ->assertSame ('"9893532233caff98cd083a116b013c0b" ' , $ response ->getEtag ());
@@ -134,143 +129,11 @@ public function testDoNotSetHeaderWhenAlreadySet()
134
129
$ response
135
130
);
136
131
137
- $ factory = $ this ->prophesize (ResourceMetadataFactoryInterface::class);
138
- $ factory ->create (Dummy::class)->willReturn (new ResourceMetadata ())->shouldBeCalled ();
139
-
140
- $ listener = new AddHeadersListener (true , 100 , 200 , ['Accept ' , 'Accept-Encoding ' ], true , $ factory ->reveal (), 15 , 30 );
132
+ $ listener = new AddHeadersListener (true , 100 , 200 , ['Accept ' , 'Accept-Encoding ' ], true , 15 , 30 );
141
133
$ listener ->onKernelResponse ($ event );
142
134
143
135
$ this ->assertSame ('"etag" ' , $ response ->getEtag ());
144
136
$ this ->assertSame ('max-age=300, public, s-maxage=400, stale-if-error=30, stale-while-revalidate=15 ' , $ response ->headers ->get ('Cache-Control ' ));
145
137
$ this ->assertSame (['Accept ' , 'Cookie ' , 'Accept-Encoding ' ], $ response ->getVary ());
146
138
}
147
-
148
- public function testSetHeadersFromResourceMetadata ()
149
- {
150
- $ response = new Response ('some content ' , 200 , ['Vary ' => ['Accept ' , 'Cookie ' ]]);
151
- $ event = new ResponseEvent (
152
- $ this ->prophesize (HttpKernelInterface::class)->reveal (),
153
- new Request ([], [], ['_api_resource_class ' => Dummy::class, '_api_item_operation_name ' => 'get ' ]),
154
- \defined (HttpKernelInterface::class.'::MAIN_REQUEST ' ) ? HttpKernelInterface::MAIN_REQUEST : HttpKernelInterface::MASTER_REQUEST ,
155
- $ response
156
- );
157
-
158
- $ metadata = new ResourceMetadata (null , null , null , null , null , ['cache_headers ' => ['max_age ' => 123 , 'shared_max_age ' => 456 , 'stale_while_revalidate ' => 928 , 'stale_if_error ' => 70 , 'vary ' => ['Vary-1 ' , 'Vary-2 ' ]]]);
159
- $ factory = $ this ->prophesize (ResourceMetadataFactoryInterface::class);
160
- $ factory ->create (Dummy::class)->willReturn ($ metadata )->shouldBeCalled ();
161
-
162
- $ listener = new AddHeadersListener (true , 100 , 200 , ['Accept ' , 'Accept-Encoding ' ], true , $ factory ->reveal (), 15 , 30 );
163
- $ listener ->onKernelResponse ($ event );
164
-
165
- $ this ->assertSame ('max-age=123, public, s-maxage=456, stale-if-error=70, stale-while-revalidate=928 ' , $ response ->headers ->get ('Cache-Control ' ));
166
- $ this ->assertSame (['Accept ' , 'Cookie ' , 'Vary-1 ' , 'Vary-2 ' ], $ response ->getVary ());
167
- }
168
-
169
- public function testSetHeadersFromResourceMetadataMarkedAsPrivate ()
170
- {
171
- $ response = new Response ('some content ' , 200 );
172
- $ event = new ResponseEvent (
173
- $ this ->prophesize (HttpKernelInterface::class)->reveal (),
174
- new Request ([], [], ['_api_resource_class ' => Dummy::class, '_api_item_operation_name ' => 'get ' ]),
175
- \defined (HttpKernelInterface::class.'::MAIN_REQUEST ' ) ? HttpKernelInterface::MAIN_REQUEST : HttpKernelInterface::MASTER_REQUEST ,
176
- $ response
177
- );
178
-
179
- $ metadata = new ResourceMetadata (null , null , null , null , null , [
180
- 'cache_headers ' => [
181
- 'max_age ' => 123 ,
182
- 'public ' => false ,
183
- 'shared_max_age ' => 456 ,
184
- ],
185
- ]);
186
- $ factory = $ this ->prophesize (ResourceMetadataFactoryInterface::class);
187
- $ factory ->create (Dummy::class)->willReturn ($ metadata )->shouldBeCalled ();
188
-
189
- $ listener = new AddHeadersListener (true , 100 , 200 , [], true , $ factory ->reveal ());
190
- $ listener ->onKernelResponse ($ event );
191
-
192
- $ this ->assertSame ('max-age=123, private ' , $ response ->headers ->get ('Cache-Control ' ));
193
-
194
- // resource's cache marked as private must not contain s-maxage
195
- $ this ->assertStringNotContainsString ('s-maxage ' , $ response ->headers ->get ('Cache-Control ' ));
196
- }
197
-
198
- public function testSetHeadersFromResourceMetadataMarkedAsPublic ()
199
- {
200
- $ response = new Response ('some content ' , 200 );
201
- $ event = new ResponseEvent (
202
- $ this ->prophesize (HttpKernelInterface::class)->reveal (),
203
- new Request ([], [], ['_api_resource_class ' => Dummy::class, '_api_item_operation_name ' => 'get ' ]),
204
- \defined (HttpKernelInterface::class.'::MAIN_REQUEST ' ) ? HttpKernelInterface::MAIN_REQUEST : HttpKernelInterface::MASTER_REQUEST ,
205
- $ response
206
- );
207
-
208
- $ metadata = new ResourceMetadata (null , null , null , null , null , [
209
- 'cache_headers ' => [
210
- 'max_age ' => 123 ,
211
- 'public ' => true ,
212
- 'shared_max_age ' => 456 ,
213
- ],
214
- ]);
215
- $ factory = $ this ->prophesize (ResourceMetadataFactoryInterface::class);
216
- $ factory ->create (Dummy::class)->willReturn ($ metadata )->shouldBeCalled ();
217
-
218
- $ listener = new AddHeadersListener (true , 100 , 200 , [], true , $ factory ->reveal ());
219
- $ listener ->onKernelResponse ($ event );
220
-
221
- $ this ->assertSame ('max-age=123, public, s-maxage=456 ' , $ response ->headers ->get ('Cache-Control ' ));
222
- }
223
-
224
- public function testSetHeadersFromResourceMetadataWithNoPrivacy ()
225
- {
226
- $ response = new Response ('some content ' , 200 );
227
- $ event = new ResponseEvent (
228
- $ this ->prophesize (HttpKernelInterface::class)->reveal (),
229
- new Request ([], [], ['_api_resource_class ' => Dummy::class, '_api_item_operation_name ' => 'get ' ]),
230
- \defined (HttpKernelInterface::class.'::MAIN_REQUEST ' ) ? HttpKernelInterface::MAIN_REQUEST : HttpKernelInterface::MASTER_REQUEST ,
231
- $ response
232
- );
233
-
234
- $ metadata = new ResourceMetadata (null , null , null , null , null , [
235
- 'cache_headers ' => [
236
- 'max_age ' => 123 ,
237
- 'shared_max_age ' => 456 ,
238
- ],
239
- ]);
240
- $ factory = $ this ->prophesize (ResourceMetadataFactoryInterface::class);
241
- $ factory ->create (Dummy::class)->willReturn ($ metadata )->shouldBeCalled ();
242
-
243
- $ listener = new AddHeadersListener (true , 100 , 200 , [], true , $ factory ->reveal ());
244
- $ listener ->onKernelResponse ($ event );
245
-
246
- $ this ->assertSame ('max-age=123, public, s-maxage=456 ' , $ response ->headers ->get ('Cache-Control ' ));
247
- }
248
-
249
- public function testSetHeadersFromResourceMetadataWithNoPrivacyDefaultsPrivate ()
250
- {
251
- $ response = new Response ('some content ' , 200 );
252
- $ event = new ResponseEvent (
253
- $ this ->prophesize (HttpKernelInterface::class)->reveal (),
254
- new Request ([], [], ['_api_resource_class ' => Dummy::class, '_api_item_operation_name ' => 'get ' ]),
255
- \defined (HttpKernelInterface::class.'::MAIN_REQUEST ' ) ? HttpKernelInterface::MAIN_REQUEST : HttpKernelInterface::MASTER_REQUEST ,
256
- $ response
257
- );
258
-
259
- $ metadata = new ResourceMetadata (null , null , null , null , null , [
260
- 'cache_headers ' => [
261
- 'max_age ' => 123 ,
262
- 'shared_max_age ' => 456 ,
263
- ],
264
- ]);
265
- $ factory = $ this ->prophesize (ResourceMetadataFactoryInterface::class);
266
- $ factory ->create (Dummy::class)->willReturn ($ metadata )->shouldBeCalled ();
267
-
268
- $ listener = new AddHeadersListener (true , 100 , 200 , ['Accept ' , 'Accept-Encoding ' ], false , $ factory ->reveal ());
269
- $ listener ->onKernelResponse ($ event );
270
-
271
- $ this ->assertSame ('max-age=123, private ' , $ response ->headers ->get ('Cache-Control ' ));
272
-
273
- // resource's cache marked as private must not contain s-maxage
274
- $ this ->assertStringNotContainsString ('s-maxage ' , $ response ->headers ->get ('Cache-Control ' ));
275
- }
276
139
}
0 commit comments