@@ -80,6 +80,55 @@ public function testCreate200Response()
80
80
$ this ->assertEquals ('deny ' , $ response ->headers ->get ('X-Frame-Options ' ));
81
81
}
82
82
83
+ public function testPost200WithoutLocation ()
84
+ {
85
+ $ kernelProphecy = $ this ->prophesize (HttpKernelInterface::class);
86
+
87
+ $ request = new Request ([], [], ['_api_resource_class ' => Dummy::class, '_api_item_operation_name ' => 'get ' , '_api_respond ' => true , '_api_write_item_iri ' => '/dummy_entities/1 ' ]);
88
+ $ request ->setMethod ('POST ' );
89
+
90
+ $ event = new ViewEvent (
91
+ $ kernelProphecy ->reveal (),
92
+ $ request ,
93
+ HttpKernelInterface::MASTER_REQUEST ,
94
+ 'bar '
95
+ );
96
+ $ resourceMetadataFactoryProphecy = $ this ->prophesize (ResourceMetadataFactoryInterface::class);
97
+ $ resourceMetadataFactoryProphecy ->create (Dummy::class)->willReturn (new ResourceMetadata (null , null , null , ['get ' => ['status ' => Response::HTTP_OK ]]));
98
+
99
+ $ listener = new RespondListener ($ resourceMetadataFactoryProphecy ->reveal ());
100
+ $ listener ->onKernelView ($ event );
101
+
102
+ $ response = $ event ->getResponse ();
103
+ $ this ->assertFalse ($ response ->headers ->has ('Location ' ));
104
+ $ this ->assertSame (Response::HTTP_OK , $ event ->getResponse ()->getStatusCode ());
105
+ }
106
+
107
+ public function testPost301WithLocation ()
108
+ {
109
+ $ kernelProphecy = $ this ->prophesize (HttpKernelInterface::class);
110
+
111
+ $ request = new Request ([], [], ['_api_resource_class ' => Dummy::class, '_api_item_operation_name ' => 'get ' , '_api_respond ' => true , '_api_write_item_iri ' => '/dummy_entities/1 ' ]);
112
+ $ request ->setMethod ('POST ' );
113
+
114
+ $ event = new ViewEvent (
115
+ $ kernelProphecy ->reveal (),
116
+ $ request ,
117
+ HttpKernelInterface::MASTER_REQUEST ,
118
+ 'bar '
119
+ );
120
+ $ resourceMetadataFactoryProphecy = $ this ->prophesize (ResourceMetadataFactoryInterface::class);
121
+ $ resourceMetadataFactoryProphecy ->create (Dummy::class)->willReturn (new ResourceMetadata (null , null , null , ['get ' => ['status ' => Response::HTTP_MOVED_PERMANENTLY ]]));
122
+
123
+ $ listener = new RespondListener ($ resourceMetadataFactoryProphecy ->reveal ());
124
+ $ listener ->onKernelView ($ event );
125
+
126
+ $ response = $ event ->getResponse ();
127
+ $ this ->assertTrue ($ response ->headers ->has ('Location ' ));
128
+ $ this ->assertEquals ('/dummy_entities/1 ' , $ response ->headers ->get ('Location ' ));
129
+ $ this ->assertSame (Response::HTTP_MOVED_PERMANENTLY , $ event ->getResponse ()->getStatusCode ());
130
+ }
131
+
83
132
public function testCreate201Response ()
84
133
{
85
134
$ kernelProphecy = $ this ->prophesize (HttpKernelInterface::class);
@@ -107,6 +156,7 @@ public function testCreate201Response()
107
156
$ this ->assertEquals ('deny ' , $ response ->headers ->get ('X-Frame-Options ' ));
108
157
$ this ->assertEquals ('/dummy_entities/1 ' , $ response ->headers ->get ('Location ' ));
109
158
$ this ->assertEquals ('/dummy_entities/1 ' , $ response ->headers ->get ('Content-Location ' ));
159
+ $ this ->assertTrue ($ response ->headers ->has ('Location ' ));
110
160
}
111
161
112
162
public function testCreate204Response ()
0 commit comments