annotate core/modules/node/tests/src/Functional/NodeRevisionsUiBypassAccessTest.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children af1871eacc83
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Tests\node\Functional;
Chris@0 4
Chris@0 5 use Drupal\node\Entity\NodeType;
Chris@0 6
Chris@0 7 /**
Chris@0 8 * Tests the revision tab display.
Chris@0 9 *
Chris@0 10 * This test is similar to NodeRevisionsUITest except that it uses a user with
Chris@0 11 * the bypass node access permission to make sure that the revision access
Chris@0 12 * check adds correct cacheability metadata.
Chris@0 13 *
Chris@0 14 * @group node
Chris@0 15 */
Chris@0 16 class NodeRevisionsUiBypassAccessTest extends NodeTestBase {
Chris@0 17
Chris@0 18 /**
Chris@0 19 * User with bypass node access permission.
Chris@0 20 *
Chris@0 21 * @var \Drupal\user\Entity\User
Chris@0 22 */
Chris@0 23 protected $editor;
Chris@0 24
Chris@0 25 /**
Chris@0 26 * {@inheritdoc}
Chris@0 27 */
Chris@0 28 public static $modules = ['block'];
Chris@0 29
Chris@0 30 /**
Chris@0 31 * {@inheritdoc}
Chris@0 32 */
Chris@0 33 protected function setUp() {
Chris@0 34 parent::setUp();
Chris@0 35
Chris@0 36 // Create a user.
Chris@0 37 $this->editor = $this->drupalCreateUser([
Chris@0 38 'administer nodes',
Chris@0 39 'edit any page content',
Chris@0 40 'view page revisions',
Chris@0 41 'bypass node access',
Chris@0 42 'access user profiles',
Chris@0 43 ]);
Chris@0 44 }
Chris@0 45
Chris@0 46 /**
Chris@0 47 * Checks that the Revision tab is displayed correctly.
Chris@0 48 */
Chris@0 49 public function testDisplayRevisionTab() {
Chris@0 50 $this->drupalPlaceBlock('local_tasks_block');
Chris@0 51
Chris@0 52 $this->drupalLogin($this->editor);
Chris@0 53 $node_storage = $this->container->get('entity.manager')->getStorage('node');
Chris@0 54
Chris@0 55 // Set page revision setting 'create new revision'. This will mean new
Chris@0 56 // revisions are created by default when the node is edited.
Chris@0 57 $type = NodeType::load('page');
Chris@0 58 $type->setNewRevision(TRUE);
Chris@0 59 $type->save();
Chris@0 60
Chris@0 61 // Create the node.
Chris@0 62 $node = $this->drupalCreateNode();
Chris@0 63
Chris@0 64 // Verify the checkbox is checked on the node edit form.
Chris@0 65 $this->drupalGet('node/' . $node->id() . '/edit');
Chris@0 66 $this->assertFieldChecked('edit-revision', "'Create new revision' checkbox is checked");
Chris@0 67
Chris@0 68 // Uncheck the create new revision checkbox and save the node.
Chris@0 69 $edit = ['revision' => FALSE];
Chris@0 70 $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, 'Save');
Chris@0 71
Chris@0 72 $this->assertUrl($node->toUrl());
Chris@0 73 $this->assertNoLink(t('Revisions'));
Chris@0 74
Chris@0 75 // Verify the checkbox is checked on the node edit form.
Chris@0 76 $this->drupalGet('node/' . $node->id() . '/edit');
Chris@0 77 $this->assertFieldChecked('edit-revision', "'Create new revision' checkbox is checked");
Chris@0 78
Chris@0 79 // Submit the form without changing the checkbox.
Chris@0 80 $edit = [];
Chris@0 81 $this->drupalPostForm('node/' . $node->id() . '/edit', $edit, 'Save');
Chris@0 82
Chris@0 83 $this->assertUrl($node->toUrl());
Chris@0 84 $this->assertLink(t('Revisions'));
Chris@0 85 }
Chris@0 86
Chris@0 87 }