3 namespace Drupal\Tests\contact\Functional\Rest;
5 use Drupal\contact\Entity\ContactForm;
6 use Drupal\contact\Entity\Message;
8 use Drupal\Tests\rest\Functional\EntityResource\EntityResourceTestBase;
9 use Symfony\Component\Routing\Exception\RouteNotFoundException;
11 abstract class MessageResourceTestBase extends EntityResourceTestBase {
16 public static $modules = ['contact'];
21 protected static $entityTypeId = 'contact_message';
26 protected static $labelFieldName = 'subject';
31 * @var \Drupal\contact\MessageInterface
38 protected function setUpAuthorization($method) {
39 $this->grantPermissionsToTestedRole(['access site-wide contact form']);
45 protected function createEntity() {
46 if (!ContactForm::load('camelids')) {
47 // Create a "Camelids" contact form.
51 'message' => 'Let us know what you think about llamas',
52 'reply' => 'Llamas are indeed awesome!',
55 'contact@example.com',
60 $message = Message::create([
61 'contact_form' => 'camelids',
62 'subject' => 'Llama Gabilondo',
63 'message' => 'Llamas are awesome!',
73 protected function getNormalizedPostEntity() {
77 'value' => 'Dramallama',
82 'target_id' => 'camelids',
87 'value' => 'http://www.urbandictionary.com/define.php?term=drama%20llama',
96 protected function getExpectedNormalizedEntity() {
97 throw new \Exception('Not yet supported.');
103 protected function getExpectedUnauthorizedAccessMessage($method) {
104 if ($this->config('rest.settings')->get('bc_entity_resource_permissions')) {
105 return parent::getExpectedUnauthorizedAccessMessage($method);
108 if ($method === 'POST') {
109 return "The 'access site-wide contact form' permission is required.";
111 return parent::getExpectedUnauthorizedAccessMessage($method);
117 public function testGet() {
118 // Contact Message entities are not stored, so they cannot be retrieved.
119 $this->setExpectedException(RouteNotFoundException::class, 'Route "rest.entity.contact_message.GET" does not exist.');
121 $this->provisionEntityResource();
122 Url::fromRoute('rest.entity.contact_message.GET')->toString(TRUE);
128 public function testPatch() {
129 // Contact Message entities are not stored, so they cannot be modified.
130 $this->setExpectedException(RouteNotFoundException::class, 'Route "rest.entity.contact_message.PATCH" does not exist.');
132 $this->provisionEntityResource();
133 Url::fromRoute('rest.entity.contact_message.PATCH')->toString(TRUE);
139 public function testDelete() {
140 // Contact Message entities are not stored, so they cannot be deleted.
141 $this->setExpectedException(RouteNotFoundException::class, 'Route "rest.entity.contact_message.DELETE" does not exist.');
143 $this->provisionEntityResource();
144 Url::fromRoute('rest.entity.contact_message.DELETE')->toString(TRUE);