public function MailhandlerCommentTest::testMailhandlerCommentPluginAnonymous in Mailhandler 8
Tests features of Mailhandler Comment plugin for anonymous users.
File
- mailhandler_comment/tests/ src/ Kernel/ MailhandlerCommentTest.php, line 100 
Class
- MailhandlerCommentTest
- Tests the Comment handler plugin.
Namespace
Drupal\Tests\mailhandler_comment\KernelCode
public function testMailhandlerCommentPluginAnonymous() {
  // Get a sample comment mail message.
  $raw_comment_mail = $this
    ->getFileContent('eml/Comment.eml');
  // Replace a node ID with an actual node ID.
  $raw_comment_mail = str_replace('[comment][#1]', '[comment][#' . $this->node
    ->id() . ']', $raw_comment_mail);
  // Assert default handler configuration.
  /** @var \Drupal\inmail\Entity\HandlerConfig $handler_config */
  $handler_config = HandlerConfig::load('mailhandler_comment');
  $this
    ->assertEquals('node', $handler_config
    ->getConfiguration()['entity_type']);
  // Process the mail.
  $this->processor
    ->process('test_key', $raw_comment_mail, $this->deliverer);
  // Since SenderAnalyzer is disabled by default, authenticated user will
  // fallback to an anonymous user.
  $comments = Comment::loadMultiple();
  $this
    ->assertEmpty($comments, 'Anonymous user has no permission to post comments.');
  // Clear the cache before updating permissions for anonymous users.
  drupal_flush_all_caches();
  // Grant "post comments" permission to anonymous users.
  user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, [
    'post comments',
  ]);
  // Trigger the processing again.
  $this->processor
    ->process('test_key', $raw_comment_mail, $this->deliverer);
  $comments = Comment::loadMultiple();
  $this
    ->assertEquals(count($comments), 1, 'There is a new comment created.');
  /** @var \Drupal\comment\CommentInterface $comment */
  $comment = reset($comments);
  $this
    ->assertEquals('Anonymous', $comment
    ->getAuthorName());
  $this
    ->assertEquals(0, $comment
    ->getOwnerId());
  $this
    ->assertEquals('Great article!', $comment
    ->getSubject());
}