function RequestHandlerTest::testHandleLegacy

@covers ::handle @covers ::getLegacyParameters @expectedDeprecation Passing in arguments the legacy way is deprecated in Drupal 8.4.0 and will be removed before Drupal 9.0.0. Provide the right parameter names in the method, similar to controllers. See https://www.drupal.org/node/2894819 @group legacy

File

core/modules/rest/tests/src/Kernel/RequestHandlerTest.php, line 107

Class

RequestHandlerTest
Test REST RequestHandler controller logic.

Namespace

Drupal\Tests\rest\Kernel

Code

public function testHandleLegacy() {
    $request = new Request();
    $route_match = new RouteMatch('test', (new Route('/rest/test', [
        '_rest_resource_config' => 'restplugin',
    ], [
        '_format' => 'json',
    ]))->setMethods([
        'GET',
    ]));
    $resource = $this->prophesize(StubRequestHandlerResourcePlugin::class);
    $resource->get(NULL, $request)
        ->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' => 'restplugin',
    ], [
        '_content_type_format' => 'json',
    ]))->setMethods([
        'PATCH',
    ]));
    $request->setMethod('PATCH');
    $response = new ResourceResponse([]);
    $resource->patch(NULL, $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.