Chris@18: grantPermissionsToTestedRole(['access news feeds']); Chris@18: break; Chris@18: Chris@18: case 'POST': Chris@18: case 'PATCH': Chris@18: case 'DELETE': Chris@18: $this->grantPermissionsToTestedRole(['administer news feeds']); Chris@18: break; Chris@18: } Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function createEntity() { Chris@18: $feed = Feed::create(); Chris@18: $feed->set('fid', 1) Chris@18: ->setTitle('Feed') Chris@18: ->setUrl('http://example.com/rss.xml') Chris@18: ->setDescription('Feed Resource Test 1') Chris@18: ->setRefreshRate(900) Chris@18: ->setLastCheckedTime(123456789) Chris@18: ->setQueuedTime(123456789) Chris@18: ->setWebsiteUrl('http://example.com') Chris@18: ->setImage('http://example.com/feed_logo') Chris@18: ->setHash('abcdefg') Chris@18: ->setEtag('hijklmn') Chris@18: ->setLastModified(123456789) Chris@18: ->save(); Chris@18: Chris@18: return $feed; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function createAnotherEntity($key) { Chris@18: /* @var \Drupal\aggregator\FeedInterface $duplicate */ Chris@18: $duplicate = $this->getEntityDuplicate($this->entity, $key); Chris@18: $duplicate->set('field_rest_test', 'Duplicate feed entity'); Chris@18: $duplicate->setUrl("http://example.com/$key.xml"); Chris@18: $duplicate->save(); Chris@18: return $duplicate; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function getExpectedDocument() { Chris@18: $self_url = Url::fromUri('base:/jsonapi/aggregator_feed/aggregator_feed/' . $this->entity->uuid())->setAbsolute()->toString(TRUE)->getGeneratedUrl(); Chris@18: return [ Chris@18: 'jsonapi' => [ Chris@18: 'meta' => [ Chris@18: 'links' => [ Chris@18: 'self' => ['href' => 'http://jsonapi.org/format/1.0/'], Chris@18: ], Chris@18: ], Chris@18: 'version' => '1.0', Chris@18: ], Chris@18: 'links' => [ Chris@18: 'self' => ['href' => $self_url], Chris@18: ], Chris@18: 'data' => [ Chris@18: 'id' => $this->entity->uuid(), Chris@18: 'type' => 'aggregator_feed--aggregator_feed', Chris@18: 'links' => [ Chris@18: 'self' => ['href' => $self_url], Chris@18: ], Chris@18: 'attributes' => [ Chris@18: 'url' => 'http://example.com/rss.xml', Chris@18: 'title' => 'Feed', Chris@18: 'refresh' => 900, Chris@18: 'checked' => '1973-11-29T21:33:09+00:00', Chris@18: 'queued' => '1973-11-29T21:33:09+00:00', Chris@18: 'link' => 'http://example.com', Chris@18: 'description' => 'Feed Resource Test 1', Chris@18: 'image' => 'http://example.com/feed_logo', Chris@18: 'hash' => 'abcdefg', Chris@18: 'etag' => 'hijklmn', Chris@18: 'modified' => '1973-11-29T21:33:09+00:00', Chris@18: 'langcode' => 'en', Chris@18: 'drupal_internal__fid' => 1, Chris@18: ], Chris@18: ], Chris@18: ]; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function getPostDocument() { Chris@18: return [ Chris@18: 'data' => [ Chris@18: 'type' => 'aggregator_feed--aggregator_feed', Chris@18: 'attributes' => [ Chris@18: 'title' => 'Feed Resource Post Test', Chris@18: 'url' => 'http://example.com/feed', Chris@18: 'refresh' => 900, Chris@18: 'description' => 'Feed Resource Post Test Description', Chris@18: ], Chris@18: ], Chris@18: ]; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function getExpectedUnauthorizedAccessMessage($method) { Chris@18: switch ($method) { Chris@18: case 'GET': Chris@18: return "The 'access news feeds' permission is required."; Chris@18: Chris@18: case 'POST': Chris@18: case 'PATCH': Chris@18: case 'DELETE': Chris@18: return "The 'administer news feeds' permission is required."; Chris@18: } Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function testCollectionFilterAccess() { Chris@18: $this->doTestCollectionFilterAccessBasedOnPermissions('title', 'access news feeds'); Chris@18: } Chris@18: Chris@18: }