Skip to content

Commit b028367

Browse files
committed
Test Location with status code between 300 and 400
1 parent 08de71c commit b028367

File tree

1 file changed

+31
-13
lines changed

1 file changed

+31
-13
lines changed

tests/EventListener/RespondListenerTest.php

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -80,36 +80,53 @@ public function testCreate200Response()
8080
$this->assertEquals('deny', $response->headers->get('X-Frame-Options'));
8181
}
8282

83-
public function testPostCreate200Response()
83+
public function testPost200WithoutLocation()
8484
{
8585
$kernelProphecy = $this->prophesize(HttpKernelInterface::class);
8686

87-
$request = new Request([], [], ['_api_respond' => true, '_api_write_item_iri' => '/dummy_entities/1', '_api_item_operation_name' => 'post']);
87+
$request = new Request([], [], ['_api_resource_class' => Dummy::class, '_api_item_operation_name' => 'get', '_api_respond' => true, '_api_write_item_iri' => '/dummy_entities/1']);
8888
$request->setMethod('POST');
89-
$request->setRequestFormat('xml');
9089

9190
$event = new ViewEvent(
9291
$kernelProphecy->reveal(),
9392
$request,
9493
HttpKernelInterface::MASTER_REQUEST,
95-
'foo'
94+
'bar'
9695
);
97-
9896
$resourceMetadataFactoryProphecy = $this->prophesize(ResourceMetadataFactoryInterface::class);
99-
$resourceMetadataFactoryProphecy->create(Dummy::class)->willReturn(new ResourceMetadata(null, null, null, ['post' => ['status' => Response::HTTP_OK]]));
97+
$resourceMetadataFactoryProphecy->create(Dummy::class)->willReturn(new ResourceMetadata(null, null, null, ['get' => ['status' => Response::HTTP_OK]]));
10098

10199
$listener = new RespondListener($resourceMetadataFactoryProphecy->reveal());
102100
$listener->onKernelView($event);
103101

104102
$response = $event->getResponse();
105-
$this->assertEquals('foo', $response->getContent());
106-
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
107-
$this->assertEquals('text/xml; charset=utf-8', $response->headers->get('Content-Type'));
108-
$this->assertEquals('Accept', $response->headers->get('Vary'));
109-
$this->assertEquals('nosniff', $response->headers->get('X-Content-Type-Options'));
110-
$this->assertEquals('deny', $response->headers->get('X-Frame-Options'));
111103
$this->assertFalse($response->headers->has('Location'));
112-
$this->assertEquals('/dummy_entities/1', $response->headers->get('Content-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());
113130
}
114131

115132
public function testCreate201Response()
@@ -139,6 +156,7 @@ public function testCreate201Response()
139156
$this->assertEquals('deny', $response->headers->get('X-Frame-Options'));
140157
$this->assertEquals('/dummy_entities/1', $response->headers->get('Location'));
141158
$this->assertEquals('/dummy_entities/1', $response->headers->get('Content-Location'));
159+
$this->assertTrue($response->headers->has('Location'));
142160
}
143161

144162
public function testCreate204Response()

0 commit comments

Comments
 (0)