Chris@18: grantPermissionsToTestedRole(['access site-wide contact form']); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function createEntity() { Chris@18: if (!ContactForm::load('camelids')) { Chris@18: // Create a "Camelids" contact form. Chris@18: ContactForm::create([ Chris@18: 'id' => 'camelids', Chris@18: 'label' => 'Llama', Chris@18: 'message' => 'Let us know what you think about llamas', Chris@18: 'reply' => 'Llamas are indeed awesome!', Chris@18: 'recipients' => [ Chris@18: 'llama@example.com', Chris@18: 'contact@example.com', Chris@18: ], Chris@18: ])->save(); Chris@18: } Chris@18: Chris@18: $message = Message::create([ Chris@18: 'contact_form' => 'camelids', Chris@18: 'subject' => 'Llama Gabilondo', Chris@18: 'message' => 'Llamas are awesome!', Chris@18: ]); Chris@18: $message->save(); Chris@18: Chris@18: return $message; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function getExpectedDocument() { Chris@18: throw new \Exception('Not yet supported.'); 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' => 'contact_message--camelids', Chris@18: 'attributes' => [ Chris@18: 'subject' => 'Dramallama', Chris@18: 'message' => 'http://www.urbandictionary.com/define.php?term=drama%20llama', 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: if ($method === 'POST') { Chris@18: return "The 'access site-wide contact form' permission is required."; Chris@18: } Chris@18: return parent::getExpectedUnauthorizedAccessMessage($method); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function testGetIndividual() { Chris@18: // Contact Message entities are not stored, so they cannot be retrieved. Chris@18: $this->setExpectedException(RouteNotFoundException::class, 'Route "jsonapi.contact_message--camelids.individual" does not exist.'); Chris@18: Chris@18: Url::fromRoute('jsonapi.contact_message--camelids.individual')->toString(TRUE); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function testPatchIndividual() { Chris@18: // Contact Message entities are not stored, so they cannot be modified. Chris@18: $this->setExpectedException(RouteNotFoundException::class, 'Route "jsonapi.contact_message--camelids.individual" does not exist.'); Chris@18: Chris@18: Url::fromRoute('jsonapi.contact_message--camelids.individual')->toString(TRUE); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function testDeleteIndividual() { Chris@18: // Contact Message entities are not stored, so they cannot be deleted. Chris@18: $this->setExpectedException(RouteNotFoundException::class, 'Route "jsonapi.contact_message--camelids.individual" does not exist.'); Chris@18: Chris@18: Url::fromRoute('jsonapi.contact_message--camelids.individual')->toString(TRUE); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function testRelated() { Chris@18: // Contact Message entities are not stored, so they cannot be retrieved. Chris@18: $this->setExpectedException(RouteNotFoundException::class, 'Route "jsonapi.contact_message--camelids.related" does not exist.'); Chris@18: Chris@18: Url::fromRoute('jsonapi.contact_message--camelids.related')->toString(TRUE); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function testRelationships() { Chris@18: // Contact Message entities are not stored, so they cannot be retrieved. Chris@18: $this->setExpectedException(RouteNotFoundException::class, 'Route "jsonapi.contact_message--camelids.relationship.get" does not exist.'); Chris@18: Chris@18: Url::fromRoute('jsonapi.contact_message--camelids.relationship.get')->toString(TRUE); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function testCollection() { Chris@18: $collection_url = Url::fromRoute('jsonapi.contact_message--camelids.collection.post')->setAbsolute(TRUE); Chris@18: $request_options = []; Chris@18: $request_options[RequestOptions::HEADERS]['Accept'] = 'application/vnd.api+json'; Chris@18: $request_options = NestedArray::mergeDeep($request_options, $this->getAuthenticationRequestOptions()); Chris@18: Chris@18: // 405 because Message entities are not stored, so they cannot be retrieved, Chris@18: // yet the same URL can be used to POST them. Chris@18: $response = $this->request('GET', $collection_url, $request_options); Chris@18: $this->assertSame(405, $response->getStatusCode()); Chris@18: $this->assertSame(['POST'], $response->getHeader('Allow')); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function testRevisions() { Chris@18: // Contact Message entities are not stored, so they cannot be retrieved. Chris@18: $this->setExpectedException(RouteNotFoundException::class, 'Route "jsonapi.contact_message--camelids.individual" does not exist.'); Chris@18: Chris@18: Url::fromRoute('jsonapi.contact_message--camelids.individual')->toString(TRUE); Chris@18: } Chris@18: Chris@18: }