annotate core/modules/tracker/tests/src/Functional/TrackerNodeAccessTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Tests\tracker\Functional;
Chris@0 4
Chris@0 5 use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
Chris@0 6 use Drupal\comment\Tests\CommentTestTrait;
Chris@0 7 use Drupal\node\Entity\NodeType;
Chris@0 8 use Drupal\Tests\BrowserTestBase;
Chris@0 9
Chris@0 10 /**
Chris@0 11 * Tests for private node access on /tracker.
Chris@0 12 *
Chris@0 13 * @group tracker
Chris@0 14 */
Chris@0 15 class TrackerNodeAccessTest extends BrowserTestBase {
Chris@0 16
Chris@0 17 use CommentTestTrait;
Chris@0 18
Chris@0 19 /**
Chris@0 20 * Modules to enable.
Chris@0 21 *
Chris@0 22 * @var array
Chris@0 23 */
Chris@0 24 public static $modules = ['node', 'comment', 'tracker', 'node_access_test'];
Chris@0 25
Chris@0 26 protected function setUp() {
Chris@0 27 parent::setUp();
Chris@0 28 node_access_rebuild();
Chris@0 29 $this->drupalCreateContentType(['type' => 'page']);
Chris@0 30 node_access_test_add_field(NodeType::load('page'));
Chris@0 31 $this->addDefaultCommentField('node', 'page', 'comment', CommentItemInterface::OPEN);
Chris@0 32 \Drupal::state()->set('node_access_test.private', TRUE);
Chris@0 33 }
Chris@0 34
Chris@0 35 /**
Chris@0 36 * Ensure private node on /tracker is only visible to users with permission.
Chris@0 37 */
Chris@0 38 public function testTrackerNodeAccess() {
Chris@0 39 // Create user with node test view permission.
Chris@0 40 $access_user = $this->drupalCreateUser(['node test view', 'access user profiles']);
Chris@0 41
Chris@0 42 // Create user without node test view permission.
Chris@0 43 $no_access_user = $this->drupalCreateUser(['access user profiles']);
Chris@0 44
Chris@0 45 $this->drupalLogin($access_user);
Chris@0 46
Chris@0 47 // Create some nodes.
Chris@0 48 $private_node = $this->drupalCreateNode([
Chris@0 49 'title' => t('Private node test'),
Chris@0 50 'private' => TRUE,
Chris@0 51 ]);
Chris@0 52 $public_node = $this->drupalCreateNode([
Chris@0 53 'title' => t('Public node test'),
Chris@0 54 'private' => FALSE,
Chris@0 55 ]);
Chris@0 56
Chris@0 57 // User with access should see both nodes created.
Chris@0 58 $this->drupalGet('activity');
Chris@0 59 $this->assertText($private_node->getTitle(), 'Private node is visible to user with private access.');
Chris@0 60 $this->assertText($public_node->getTitle(), 'Public node is visible to user with private access.');
Chris@0 61 $this->drupalGet('user/' . $access_user->id() . '/activity');
Chris@0 62 $this->assertText($private_node->getTitle(), 'Private node is visible to user with private access.');
Chris@0 63 $this->assertText($public_node->getTitle(), 'Public node is visible to user with private access.');
Chris@0 64
Chris@0 65 // User without access should not see private node.
Chris@0 66 $this->drupalLogin($no_access_user);
Chris@0 67 $this->drupalGet('activity');
Chris@0 68 $this->assertNoText($private_node->getTitle(), 'Private node is not visible to user without private access.');
Chris@0 69 $this->assertText($public_node->getTitle(), 'Public node is visible to user without private access.');
Chris@0 70 $this->drupalGet('user/' . $access_user->id() . '/activity');
Chris@0 71 $this->assertNoText($private_node->getTitle(), 'Private node is not visible to user without private access.');
Chris@0 72 $this->assertText($public_node->getTitle(), 'Public node is visible to user without private access.');
Chris@0 73 }
Chris@0 74
Chris@0 75 }