diff --git a/tests/src/Kernel/Controller/EntityResourceTest.php b/tests/src/Kernel/Controller/EntityResourceTest.php index bbea0b9..4746324 100644 --- a/tests/src/Kernel/Controller/EntityResourceTest.php +++ b/tests/src/Kernel/Controller/EntityResourceTest.php @@ -17,6 +17,7 @@ use Drupal\jsonapi\Query\EntityConditionGroup; use Drupal\jsonapi\Query\Filter; use Drupal\jsonapi\Query\Sort; use Drupal\jsonapi\Query\OffsetPage; +use Drupal\jsonrpc\Object\ParameterBag; use Drupal\node\Entity\Node; use Drupal\node\Entity\NodeType; use Drupal\Tests\jsonapi\Kernel\JsonapiKernelTestBase; @@ -196,7 +197,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { */ public function testGetIndividual() { $resource_type = new ResourceType('node', 'article', NULL); - $response = $this->entityResource->getIndividual($resource_type, $this->node, new Request()); + $response = $this->entityResource->getIndividual($resource_type, $this->node, Request::create('/jsonapi/node/article')); $this->assertInstanceOf(JsonApiDocumentTopLevel::class, $response->getResponseData()); $this->assertEquals(1, $response->getResponseData()->getData()->id()); } @@ -210,17 +211,14 @@ class EntityResourceTest extends JsonapiKernelTestBase { $role->revokePermission('access content'); $role->save(); $this->setExpectedException(EntityAccessDeniedHttpException::class); - $this->entityResource->getIndividual($resource_type, $this->node, new Request()); + $this->entityResource->getIndividual($resource_type, $this->node, Request::create('/jsonapi/node/article')); } /** * @covers ::getCollection */ public function testGetCollection() { - $request = new Request([], [], [ - '_route_params' => ['_json_api_params' => []], - '_json_api_params' => [], - ]); + $request = Request::create('/jsonapi/node/article'); // Get the response. $resource_type = new ResourceType('node', 'article', NULL); @@ -244,7 +242,8 @@ class EntityResourceTest extends JsonapiKernelTestBase { */ public function testGetFilteredCollection() { $filter = new Filter(new EntityConditionGroup('AND', [new EntityCondition('type', 'article')])); - $request = new Request([], [], [ + $request = Request::create('/jsonapi/node/article'); + $request->attributes = new ParameterBag([ '_route_params' => [ '_json_api_params' => [ 'filter' => $filter, @@ -285,7 +284,8 @@ class EntityResourceTest extends JsonapiKernelTestBase { */ public function testGetSortedCollection() { $sort = new Sort([['path' => 'type', 'direction' => 'DESC']]); - $request = new Request([], [], [ + $request = Request::create('/jsonapi/node/article'); + $request->attributes = new ParameterBag([ '_route_params' => [ '_json_api_params' => [ 'sort' => $sort, @@ -328,7 +328,8 @@ class EntityResourceTest extends JsonapiKernelTestBase { */ public function testGetPagedCollection() { $pager = new OffsetPage(1, 1); - $request = new Request([], [], [ + $request = Request::create('/jsonapi/node/article'); + $request->attributes = new ParameterBag([ '_route_params' => [ '_json_api_params' => [ 'page' => $pager, @@ -367,7 +368,8 @@ class EntityResourceTest extends JsonapiKernelTestBase { */ public function testGetEmptyCollection() { $filter = new Filter(new EntityConditionGroup('AND', [new EntityCondition('uuid', 'invalid')])); - $request = new Request([], [], [ + $request = Request::create('/jsonapi/node/article'); + $request->attributes = new ParameterBag([ '_route_params' => [ '_json_api_params' => [ 'filter' => $filter, @@ -400,13 +402,13 @@ class EntityResourceTest extends JsonapiKernelTestBase { 'roles' => [new ResourceType('user_role', 'user_role', NULL)], 'field_relationships' => [new ResourceType('node', 'article', NULL)], ]); - $response = $this->entityResource->getRelated($resource_type, $this->node, 'uid', new Request()); + $response = $this->entityResource->getRelated($resource_type, $this->node, 'uid', Request::create('/jsonapi/node/article/' . $this->node->uuid(), '/uid')); $this->assertInstanceOf(JsonApiDocumentTopLevel::class, $response->getResponseData()); $this->assertInstanceOf(User::class, $response->getResponseData()->getData()->toArray()[0]); $this->assertEquals(1, $response->getResponseData()->getData()->toArray()[0]->id()); $this->assertEquals(['node:1'], $response->getCacheableMetadata()->getCacheTags()); // to-many relationship. - $response = $this->entityResource->getRelated($resource_type, $this->node4, 'field_relationships', new Request()); + $response = $this->entityResource->getRelated($resource_type, $this->node4, 'field_relationships', Request::create('/jsonapi/node/article/' . $this->node4->uuid(), '/field_relationships')); $this->assertInstanceOf(JsonApiDocumentTopLevel::class, $response ->getResponseData()); $this->assertInstanceOf(EntityCollection::class, $response @@ -424,7 +426,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { $resource_type->setRelatableResourceTypes([ 'uid' => [new ResourceType('user', 'user', NULL)], ]); - $response = $this->entityResource->getRelationship($resource_type, $this->node, 'uid', new Request()); + $response = $this->entityResource->getRelationship($resource_type, $this->node, 'uid', Request::create('/jsonapi/node/article/' . $this->node->uuid() . '/relationships/uid')); $this->assertInstanceOf(JsonApiDocumentTopLevel::class, $response->getResponseData()); $this->assertInstanceOf( EntityReferenceFieldItemListInterface::class, @@ -456,7 +458,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { ->grantPermission('create article content') ->save(); $resource_type = new ResourceType('node', 'article', NULL); - $response = $this->entityResource->createIndividual($resource_type, $node, new Request()); + $response = $this->entityResource->createIndividual($resource_type, $node, Request::create('/jsonapi/node/article')); // As a side effect, the node will also be saved. $this->assertNotEmpty($node->id()); $this->assertInstanceOf(JsonApiDocumentTopLevel::class, $response->getResponseData()); @@ -477,7 +479,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { ->save(); $this->setExpectedException(HttpException::class, 'Unprocessable Entity: validation failed.'); $resource_type = new ResourceType('node', 'article', NULL); - $this->entityResource->createIndividual($resource_type, $node, new Request()); + $this->entityResource->createIndividual($resource_type, $node, Request::create('/jsonapi/node/article')); } /** @@ -497,7 +499,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { $this->setExpectedException(ConflictHttpException::class, 'Conflict: Entity already exists.'); $resource_type = new ResourceType('node', 'article', NULL); - $this->entityResource->createIndividual($resource_type, $node, new Request()); + $this->entityResource->createIndividual($resource_type, $node, Request::create('/jsonapi/node/article')); } /** @@ -519,7 +521,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { ], ], ]); - $request = new Request([], [], [], [], [], [], $payload); + $request = Request::create('/jsonapi/node/article/' . $this->node->uuid(), 'PATCH', [], [], [], [], $payload); // Create a new EntityResource that uses uuid. $resource_type = new ResourceType('node', 'article', NULL); @@ -566,7 +568,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { ->grantPermission('delete own article content') ->save(); $resource_type = new ResourceType('node', 'article', NULL); - $response = $this->entityResource->deleteIndividual($resource_type, $node, new Request()); + $response = $this->entityResource->deleteIndividual($resource_type, $node, Request::create('/jsonapi/node/article/' . $node->uuid(), 'DELETE')); // As a side effect, the node will also be deleted. $count = $this->container->get('entity_type.manager') ->getStorage('node') @@ -592,7 +594,8 @@ class EntityResourceTest extends JsonapiKernelTestBase { $resource_type->setRelatableResourceTypes([ 'field_relationships' => [new ResourceType('node', 'article', NULL)], ]); - $response = $this->entityResource->addToRelationshipData($resource_type, $this->node, 'field_relationships', $resource_identifiers, new Request()); + $request = Request::create('/jsonapi/node/article/' . $this->node->uuid() . '/relationships/field_relationships', 'POST'); + $response = $this->entityResource->addToRelationshipData($resource_type, $this->node, 'field_relationships', $resource_identifiers, $request); // As a side effect, the node will also be saved. $this->assertNotEmpty($this->node->id()); @@ -619,7 +622,8 @@ class EntityResourceTest extends JsonapiKernelTestBase { $resource_type->setRelatableResourceTypes([ 'field_relationships' => [new ResourceType('node', 'article', NULL)], ]); - $response = $this->entityResource->replaceRelationshipData($resource_type, $this->node, 'field_relationships', $relationships, new Request()); + $request = Request::create('/jsonapi/node/article/' . $this->node->uuid() . '/relationships/field_relationships', 'PATCH'); + $response = $this->entityResource->replaceRelationshipData($resource_type, $this->node, 'field_relationships', $relationships, $request); // As a side effect, the node will also be saved. $this->assertNotEmpty($this->node->id()); @@ -674,7 +678,8 @@ class EntityResourceTest extends JsonapiKernelTestBase { $resource_type->setRelatableResourceTypes([ 'field_relationships' => [new ResourceType('node', 'article', NULL)], ]); - $response = $this->entityResource->removeFromRelationshipData($resource_type, $this->node, 'field_relationships', $deleted_rels, new Request()); + $request = Request::create('/jsonapi/node/article/' . $this->node->uuid() . '/relationships/field_relationships', 'DELETE'); + $response = $this->entityResource->removeFromRelationshipData($resource_type, $this->node, 'field_relationships', $deleted_rels, $request); // As a side effect, the node will also be saved. $this->assertInstanceOf(JsonApiDocumentTopLevel::class, $response->getResponseData());