Mercurial > hg > isophonics-drupal-site
comparison core/modules/comment/tests/src/Functional/CommentAccessTest.php @ 12:7a779792577d
Update Drupal core to v8.4.5 (via Composer)
author | Chris Cannam |
---|---|
date | Fri, 23 Feb 2018 15:52:07 +0000 |
parents | |
children | 129ea1e6d783 |
comparison
equal
deleted
inserted
replaced
11:bfffd8d7479a | 12:7a779792577d |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\Tests\comment\Functional; | |
4 | |
5 use Drupal\comment\Entity\Comment; | |
6 use Drupal\comment\Tests\CommentTestTrait; | |
7 use Drupal\node\Entity\NodeType; | |
8 use Drupal\Tests\BrowserTestBase; | |
9 | |
10 /** | |
11 * Tests comment administration and preview access. | |
12 * | |
13 * @group comment | |
14 */ | |
15 class CommentAccessTest extends BrowserTestBase { | |
16 | |
17 use CommentTestTrait; | |
18 | |
19 /** | |
20 * {@inheritdoc} | |
21 */ | |
22 public static $modules = [ | |
23 'node', | |
24 'comment', | |
25 ]; | |
26 | |
27 /** | |
28 * Node for commenting. | |
29 * | |
30 * @var \Drupal\node\NodeInterface | |
31 */ | |
32 protected $unpublishedNode; | |
33 | |
34 /** | |
35 * {@inheritdoc} | |
36 */ | |
37 protected function setUp() { | |
38 parent::setUp(); | |
39 | |
40 $node_type = NodeType::create([ | |
41 'type' => 'article', | |
42 'name' => 'Article', | |
43 ]); | |
44 $node_type->save(); | |
45 $node_author = $this->drupalCreateUser([ | |
46 'create article content', | |
47 'access comments', | |
48 ]); | |
49 | |
50 $this->drupalLogin($this->drupalCreateUser([ | |
51 'edit own comments', | |
52 'skip comment approval', | |
53 'post comments', | |
54 'access comments', | |
55 'access content', | |
56 ])); | |
57 | |
58 $this->addDefaultCommentField('node', 'article'); | |
59 $this->unpublishedNode = $this->createNode([ | |
60 'title' => 'This is unpublished', | |
61 'uid' => $node_author->id(), | |
62 'status' => 0, | |
63 'type' => 'article', | |
64 ]); | |
65 $this->unpublishedNode->save(); | |
66 } | |
67 | |
68 /** | |
69 * Tests commenting disabled for access-blocked entities. | |
70 */ | |
71 public function testCannotCommentOnEntitiesYouCannotView() { | |
72 $assert = $this->assertSession(); | |
73 | |
74 $comment_url = 'comment/reply/node/' . $this->unpublishedNode->id() . '/comment'; | |
75 | |
76 // Commenting on an unpublished node results in access denied. | |
77 $this->drupalGet($comment_url); | |
78 $assert->statusCodeEquals(403); | |
79 | |
80 // Publishing the node grants access. | |
81 $this->unpublishedNode->setPublished(TRUE)->save(); | |
82 $this->drupalGet($comment_url); | |
83 $assert->statusCodeEquals(200); | |
84 } | |
85 | |
86 /** | |
87 * Tests cannot view comment reply form on entities you cannot view. | |
88 */ | |
89 public function testCannotViewCommentReplyFormOnEntitiesYouCannotView() { | |
90 $assert = $this->assertSession(); | |
91 | |
92 // Create a comment on an unpublished node. | |
93 $comment = Comment::create([ | |
94 'entity_type' => 'node', | |
95 'name' => 'Tony', | |
96 'hostname' => 'magic.example.com', | |
97 'mail' => 'foo@example.com', | |
98 'subject' => 'Comment on unpublished node', | |
99 'entity_id' => $this->unpublishedNode->id(), | |
100 'comment_type' => 'comment', | |
101 'field_name' => 'comment', | |
102 'pid' => 0, | |
103 'uid' => $this->unpublishedNode->getOwnerId(), | |
104 'status' => 1, | |
105 ]); | |
106 $comment->save(); | |
107 | |
108 $comment_url = 'comment/reply/node/' . $this->unpublishedNode->id() . '/comment/' . $comment->id(); | |
109 | |
110 // Replying to a comment on an unpublished node results in access denied. | |
111 $this->drupalGet($comment_url); | |
112 $assert->statusCodeEquals(403); | |
113 | |
114 // Publishing the node grants access. | |
115 $this->unpublishedNode->setPublished(TRUE)->save(); | |
116 $this->drupalGet($comment_url); | |
117 $assert->statusCodeEquals(200); | |
118 } | |
119 | |
120 } |