Update to Drupal 8.0.5. For more information, see https://www.drupal.org/node/2679347
This commit is contained in:
parent
2a9f1f148d
commit
fd3b12cf27
251 changed files with 5439 additions and 957 deletions
135
core/modules/rest/tests/src/Kernel/RequestHandlerTest.php
Normal file
135
core/modules/rest/tests/src/Kernel/RequestHandlerTest.php
Normal file
|
@ -0,0 +1,135 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\Tests\rest\Kernel\RequestHandlerTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\Tests\rest\Kernel;
|
||||
|
||||
use Drupal\Core\Routing\RouteMatch;
|
||||
use Drupal\KernelTests\KernelTestBase;
|
||||
use Drupal\rest\Plugin\ResourceBase;
|
||||
use Drupal\rest\Plugin\Type\ResourcePluginManager;
|
||||
use Drupal\rest\RequestHandler;
|
||||
use Drupal\rest\ResourceResponse;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Routing\Route;
|
||||
|
||||
/**
|
||||
* Test REST RequestHandler controller logic.
|
||||
*
|
||||
* @group rest
|
||||
* @coversDefaultClass \Drupal\rest\RequestHandler
|
||||
*/
|
||||
class RequestHandlerTest extends KernelTestBase {
|
||||
|
||||
/**
|
||||
* @var \Drupal\rest\RequestHandler
|
||||
*/
|
||||
protected $requestHandler;
|
||||
|
||||
public static $modules = ['serialization', 'rest'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
$this->requestHandler = new RequestHandler();
|
||||
$this->requestHandler->setContainer($this->container);
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert some basic handler method logic.
|
||||
*
|
||||
* @covers ::handle
|
||||
*/
|
||||
public function testBaseHandler() {
|
||||
$request = new Request();
|
||||
$route_match = new RouteMatch('test', new Route('/rest/test', ['_plugin' => 'restplugin', '_format' => 'json']));
|
||||
|
||||
$resource = $this->prophesize(StubRequestHandlerResourcePlugin::class);
|
||||
$resource->get(NULL, $request)
|
||||
->shouldBeCalled();
|
||||
|
||||
// Setup stub plugin manager that will return our plugin.
|
||||
$stub = $this->prophesize(ResourcePluginManager::class);
|
||||
$stub->getInstance(['id' => 'restplugin'])
|
||||
->willReturn($resource->reveal());
|
||||
$this->container->set('plugin.manager.rest', $stub->reveal());
|
||||
|
||||
// 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);
|
||||
$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);
|
||||
$this->assertEquals($response, $handler_response);
|
||||
|
||||
// We will call the patch method this time.
|
||||
$request->setMethod('PATCH');
|
||||
$response = new ResourceResponse([]);
|
||||
$resource->patch(NULL, $request)
|
||||
->shouldBeCalledTimes(1)
|
||||
->willReturn($response);
|
||||
$handler_response = $this->requestHandler->handle($route_match, $request);
|
||||
$this->assertEquals($response, $handler_response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that given structured data, the request handler will serialize it.
|
||||
*
|
||||
* @dataProvider providerTestSerialization
|
||||
* @covers ::handle
|
||||
*/
|
||||
public function testSerialization($data) {
|
||||
$request = new Request();
|
||||
$route_match = new RouteMatch('test', new Route('/rest/test', ['_plugin' => 'restplugin', '_format' => 'json']));
|
||||
|
||||
$resource = $this->prophesize(StubRequestHandlerResourcePlugin::class);
|
||||
|
||||
// Setup stub plugin manager that will return our plugin.
|
||||
$stub = $this->prophesize(ResourcePluginManager::class);
|
||||
$stub->getInstance(['id' => 'restplugin'])
|
||||
->willReturn($resource->reveal());
|
||||
$this->container->set('plugin.manager.rest', $stub->reveal());
|
||||
|
||||
$response = new ResourceResponse($data);
|
||||
$resource->get(NULL, $request)
|
||||
->willReturn($response);
|
||||
$handler_response = $this->requestHandler->handle($route_match, $request);
|
||||
// Content is a serialized version of the data we provided.
|
||||
$this->assertEquals(json_encode($data), $handler_response->getContent());
|
||||
}
|
||||
|
||||
public function providerTestSerialization() {
|
||||
return [
|
||||
[NULL],
|
||||
[''],
|
||||
['string'],
|
||||
['Complex \ string $%^&@ with unicode ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΣὨ'],
|
||||
[[]],
|
||||
[['test']],
|
||||
[['test' => 'foobar']],
|
||||
[TRUE],
|
||||
[FALSE],
|
||||
// @todo Not supported. https://www.drupal.org/node/2427811
|
||||
// [new \stdClass()],
|
||||
// [(object) ['test' => 'foobar']],
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class StubRequestHandlerResourcePlugin extends ResourceBase {
|
||||
|
||||
/** stub methods so they can be prophesied. */
|
||||
function get() {}
|
||||
function patch() {}
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\Tests\rest\Unit\Plugin\views\style\SerializerTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\Tests\rest\Unit\Plugin\views\style;
|
||||
|
||||
use Drupal\rest\Plugin\views\display\RestExport;
|
||||
use Drupal\rest\Plugin\views\style\Serializer;
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
use Drupal\views\ViewExecutable;
|
||||
use Prophecy\Argument;
|
||||
use Symfony\Component\Serializer\SerializerInterface;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \Drupal\rest\Plugin\views\style\Serializer
|
||||
* @group rest
|
||||
*/
|
||||
class SerializerTest extends UnitTestCase {
|
||||
|
||||
/**
|
||||
* The View instance.
|
||||
*
|
||||
* @var \Drupal\views\ViewExecutable|\PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $view;
|
||||
|
||||
/**
|
||||
* The RestExport display handler.
|
||||
*
|
||||
* @var \Drupal\rest\Plugin\views\display\RestExport|\PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected $displayHandler;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
$this->view = $this->getMockBuilder(ViewExecutable::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
// Make the view result empty so we don't have to mock the row plugin render
|
||||
// call.
|
||||
$this->view->result = [];
|
||||
|
||||
$this->displayHandler = $this->getMockBuilder(RestExport::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$this->displayHandler->expects($this->any())
|
||||
->method('getContentType')
|
||||
->willReturn('json');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the symfony serializer receives style plugin from the render() method.
|
||||
*
|
||||
* @covers ::render
|
||||
*/
|
||||
public function testSerializerReceivesOptions() {
|
||||
$mock_serializer = $this->prophesize(SerializerInterface::class);
|
||||
|
||||
// This is the main expectation of the test. We want to make sure the
|
||||
// serializer options are passed to the SerializerInterface object.
|
||||
$mock_serializer->serialize([], 'json', Argument::that(function ($argument) {
|
||||
return isset($argument['views_style_plugin']) && $argument['views_style_plugin'] instanceof Serializer;
|
||||
}))
|
||||
->willReturn()
|
||||
->shouldBeCalled();
|
||||
|
||||
$view_serializer_style = new Serializer([], 'dummy_serializer', [], $mock_serializer->reveal(), ['json', 'xml']);
|
||||
$view_serializer_style->options = ['formats' => ['xml', 'json']];
|
||||
$view_serializer_style->view = $this->view;
|
||||
$view_serializer_style->displayHandler = $this->displayHandler;
|
||||
$view_serializer_style->render();
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue