function RequestHandlerTest::testHandle
Same name in other branches
- 9 core/modules/rest/tests/src/Kernel/RequestHandlerTest.php \Drupal\Tests\rest\Kernel\RequestHandlerTest::testHandle()
- 8.9.x core/modules/rest/tests/src/Kernel/RequestHandlerTest.php \Drupal\Tests\rest\Kernel\RequestHandlerTest::testHandle()
- 10 core/modules/rest/tests/src/Kernel/RequestHandlerTest.php \Drupal\Tests\rest\Kernel\RequestHandlerTest::testHandle()
@covers ::handle
File
-
core/
modules/ rest/ tests/ src/ Kernel/ RequestHandlerTest.php, line 60
Class
- RequestHandlerTest
- Test REST RequestHandler controller logic.
Namespace
Drupal\Tests\rest\KernelCode
public function testHandle() : void {
$request = new Request([], [], [], [], [], [
'CONTENT_TYPE' => 'application/json',
], Json::encode([
'this is an array',
]));
$route_match = new RouteMatch('test', (new Route('/rest/test', [
'_rest_resource_config' => 'rest_plugin',
'example' => '',
], [
'_format' => 'json',
]))->setMethods([
'GET',
]));
$resource = $this->prophesize(StubRequestHandlerResourcePlugin::class);
$resource->get('', $request)
->shouldBeCalled();
$resource->getPluginDefinition()
->willReturn([])
->shouldBeCalled();
// Setup the configuration.
$config = $this->prophesize(RestResourceConfigInterface::class);
$config->getResourcePlugin()
->willReturn($resource->reveal());
$config->getCacheContexts()
->willReturn([]);
$config->getCacheTags()
->willReturn([]);
$config->getCacheMaxAge()
->willReturn(12);
// Response returns NULL this time because response from plugin is not
// a ResourceResponse so it is passed through directly.
$response = $this->requestHandler
->handle($route_match, $request, $config->reveal());
$this->assertEquals(NULL, $response);
// Response will return a ResourceResponse this time.
$response = new ResourceResponse([]);
$resource->get(NULL, $request)
->willReturn($response);
$handler_response = $this->requestHandler
->handle($route_match, $request, $config->reveal());
$this->assertEquals($response, $handler_response);
// We will call the patch method this time.
$route_match = new RouteMatch('test', (new Route('/rest/test', [
'_rest_resource_config' => 'rest_plugin',
'example_original' => '',
], [
'_content_type_format' => 'json',
]))->setMethods([
'PATCH',
]));
$request->setMethod('PATCH');
$response = new ResourceResponse([]);
$resource->patch([
'this is an array',
], $request)
->shouldBeCalledTimes(1)
->willReturn($response);
$handler_response = $this->requestHandler
->handle($route_match, $request, $config->reveal());
$this->assertEquals($response, $handler_response);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.