X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fcore%2Fmodules%2Faggregator%2Ftests%2Fsrc%2FFunctional%2FRest%2FItemResourceTestBase.php;fp=web%2Fcore%2Fmodules%2Faggregator%2Ftests%2Fsrc%2FFunctional%2FRest%2FItemResourceTestBase.php;h=c7163e098ad5194f51408d5c55b87f5e92dd67c7;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hp=0000000000000000000000000000000000000000;hpb=74df008bdbb3a11eeea356744f39b802369bda3c;p=yaffs-website diff --git a/web/core/modules/aggregator/tests/src/Functional/Rest/ItemResourceTestBase.php b/web/core/modules/aggregator/tests/src/Functional/Rest/ItemResourceTestBase.php new file mode 100644 index 000000000..c7163e098 --- /dev/null +++ b/web/core/modules/aggregator/tests/src/Functional/Rest/ItemResourceTestBase.php @@ -0,0 +1,192 @@ +grantPermissionsToTestedRole(['access news feeds']); + break; + + case 'POST': + case 'PATCH': + case 'DELETE': + $this->grantPermissionsToTestedRole(['administer news feeds']); + break; + } + } + + /** + * {@inheritdoc} + */ + protected function createEntity() { + // Create a "Camelids" feed. + $feed = Feed::create([ + 'title' => 'Camelids', + 'url' => 'https://groups.drupal.org/not_used/167169', + 'refresh' => 900, + 'checked' => 1389919932, + 'description' => 'Drupal Core Group feed', + ]); + $feed->save(); + + // Create a "Llama" item. + $item = Item::create(); + $item->setTitle('Llama') + ->setFeedId($feed->id()) + ->setLink('https://www.drupal.org/') + ->setPostedTime(123456789) + ->save(); + + return $item; + } + + /** + * {@inheritdoc} + */ + protected function createAnotherEntity() { + $entity = $this->entity->createDuplicate(); + $entity->setLink('https://www.example.org/'); + $label_key = $entity->getEntityType()->getKey('label'); + if ($label_key) { + $entity->set($label_key, $entity->label() . '_dupe'); + } + $entity->save(); + return $entity; + } + + /** + * {@inheritdoc} + */ + protected function getExpectedNormalizedEntity() { + $feed = Feed::load($this->entity->getFeedId()); + + return [ + 'iid' => [ + [ + 'value' => 1, + ], + ], + 'langcode' => [ + [ + 'value' => 'en', + ], + ], + 'fid' => [ + [ + 'target_id' => 1, + 'target_type' => 'aggregator_feed', + 'target_uuid' => $feed->uuid(), + 'url' => base_path() . 'aggregator/sources/1', + ], + ], + 'title' => [ + [ + 'value' => 'Llama', + ], + ], + 'link' => [ + [ + 'value' => 'https://www.drupal.org/', + ], + ], + 'author' => [], + 'description' => [], + 'timestamp' => [ + $this->formatExpectedTimestampItemValues(123456789), + ], + 'guid' => [], + ]; + } + + /** + * {@inheritdoc} + */ + protected function getNormalizedPostEntity() { + return [ + 'fid' => [ + [ + 'target_id' => 1, + ], + ], + 'title' => [ + [ + 'value' => 'Llama', + ], + ], + 'link' => [ + [ + 'value' => 'https://www.drupal.org/', + ], + ], + ]; + } + + /** + * {@inheritdoc} + */ + protected function getExpectedCacheContexts() { + // @see ::createEntity() + return ['user.permissions']; + } + + /** + * {@inheritdoc} + */ + protected function getExpectedUnauthorizedAccessMessage($method) { + if ($this->config('rest.settings')->get('bc_entity_resource_permissions')) { + return parent::getExpectedUnauthorizedAccessMessage($method); + } + + switch ($method) { + case 'GET': + return "The 'access news feeds' permission is required."; + + case 'POST': + case 'PATCH': + case 'DELETE': + return "The 'administer news feeds' permission is required."; + + default: + return parent::getExpectedUnauthorizedAccessMessage($method); + } + } + +}