drupalCreateUser(['view own unpublished content']); $node_author_not_unpublished = $this->drupalCreateUser(); $normal_user = $this->drupalCreateUser(); $admin_user = $this->drupalCreateUser(['bypass node access']); // Create one published and one unpublished node by the admin. $node_published = $this->drupalCreateNode(['uid' => $admin_user->id()]); $node_unpublished = $this->drupalCreateNode(['uid' => $admin_user->id(), 'status' => NodeInterface::NOT_PUBLISHED]); // Create one unpublished node by a certain author user. $node_unpublished2 = $this->drupalCreateNode(['uid' => $node_author->id(), 'status' => NodeInterface::NOT_PUBLISHED]); // Create one unpublished node by a user who does not have the `view own // unpublished content` permission. $node_unpublished3 = $this->drupalCreateNode(['uid' => $node_author_not_unpublished->id(), 'status' => NodeInterface::NOT_PUBLISHED]); // The administrator should simply see all nodes. $this->drupalLogin($admin_user); $this->drupalGet('test_status_extra'); $this->assertText($node_published->label()); $this->assertText($node_unpublished->label()); $this->assertText($node_unpublished2->label()); $this->assertText($node_unpublished3->label()); // The node author should see the published node and his own node. $this->drupalLogin($node_author); $this->drupalGet('test_status_extra'); $this->assertText($node_published->label()); $this->assertNoText($node_unpublished->label()); $this->assertText($node_unpublished2->label()); $this->assertNoText($node_unpublished3->label()); // The normal user should just see the published node. $this->drupalLogin($normal_user); $this->drupalGet('test_status_extra'); $this->assertText($node_published->label()); $this->assertNoText($node_unpublished->label()); $this->assertNoText($node_unpublished2->label()); $this->assertNoText($node_unpublished3->label()); // The author without the permission to see his own unpublished node should // just see the published node. $this->drupalLogin($node_author_not_unpublished); $this->drupalGet('test_status_extra'); $this->assertText($node_published->label()); $this->assertNoText($node_unpublished->label()); $this->assertNoText($node_unpublished2->label()); $this->assertNoText($node_unpublished3->label()); } }