Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / comment / tests / src / Functional / CommentNodeAccessTest.php
diff --git a/web/core/modules/comment/tests/src/Functional/CommentNodeAccessTest.php b/web/core/modules/comment/tests/src/Functional/CommentNodeAccessTest.php
new file mode 100644 (file)
index 0000000..6842dc1
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+
+namespace Drupal\Tests\comment\Functional;
+
+use Drupal\comment\CommentManagerInterface;
+
+/**
+ * Tests comments with node access.
+ *
+ * Verifies there is no PostgreSQL error when viewing a node with threaded
+ * comments (a comment and a reply), if a node access module is in use.
+ *
+ * @group comment
+ */
+class CommentNodeAccessTest extends CommentTestBase {
+
+  /**
+   * Modules to install.
+   *
+   * @var array
+   */
+  public static $modules = ['node_access_test'];
+
+  protected function setUp() {
+    parent::setUp();
+
+    node_access_rebuild();
+
+    // Re-create user.
+    $this->webUser = $this->drupalCreateUser([
+      'access comments',
+      'post comments',
+      'create article content',
+      'edit own comments',
+      'node test view',
+      'skip comment approval',
+    ]);
+
+    // Set the author of the created node to the web_user uid.
+    $this->node->setOwnerId($this->webUser->id())->save();
+  }
+
+  /**
+   * Test that threaded comments can be viewed.
+   */
+  public function testThreadedCommentView() {
+    // Set comments to have subject required and preview disabled.
+    $this->drupalLogin($this->adminUser);
+    $this->setCommentPreview(DRUPAL_DISABLED);
+    $this->setCommentForm(TRUE);
+    $this->setCommentSubject(TRUE);
+    $this->setCommentSettings('default_mode', CommentManagerInterface::COMMENT_MODE_THREADED, 'Comment paging changed.');
+    $this->drupalLogout();
+
+    // Post comment.
+    $this->drupalLogin($this->webUser);
+    $comment_text = $this->randomMachineName();
+    $comment_subject = $this->randomMachineName();
+    $comment = $this->postComment($this->node, $comment_text, $comment_subject);
+    $this->assertTrue($this->commentExists($comment), 'Comment found.');
+
+    // Check comment display.
+    $this->drupalGet('node/' . $this->node->id());
+    $this->assertText($comment_subject, 'Individual comment subject found.');
+    $this->assertText($comment_text, 'Individual comment body found.');
+
+    // Reply to comment, creating second comment.
+    $this->drupalGet('comment/reply/node/' . $this->node->id() . '/comment/' . $comment->id());
+    $reply_text = $this->randomMachineName();
+    $reply_subject = $this->randomMachineName();
+    $reply = $this->postComment(NULL, $reply_text, $reply_subject, TRUE);
+    $this->assertTrue($this->commentExists($reply, TRUE), 'Reply found.');
+
+    // Go to the node page and verify comment and reply are visible.
+    $this->drupalGet('node/' . $this->node->id());
+    $this->assertText($comment_text);
+    $this->assertText($comment_subject);
+    $this->assertText($reply_text);
+    $this->assertText($reply_subject);
+  }
+
+}