function NodeEditFormTest::testNodeEditAuthoredBy
Same name in other branches
- 9 core/modules/node/tests/src/Functional/NodeEditFormTest.php \Drupal\Tests\node\Functional\NodeEditFormTest::testNodeEditAuthoredBy()
- 8.9.x core/modules/node/tests/src/Functional/NodeEditFormTest.php \Drupal\Tests\node\Functional\NodeEditFormTest::testNodeEditAuthoredBy()
- 11.x core/modules/node/tests/src/Functional/NodeEditFormTest.php \Drupal\Tests\node\Functional\NodeEditFormTest::testNodeEditAuthoredBy()
Tests changing a node's "authored by" field.
File
-
core/
modules/ node/ tests/ src/ Functional/ NodeEditFormTest.php, line 166
Class
- NodeEditFormTest
- Create a node and test node edit functionality.
Namespace
Drupal\Tests\node\FunctionalCode
public function testNodeEditAuthoredBy() : void {
$this->drupalLogin($this->adminUser);
// Create node to edit.
$body_key = 'body[0][value]';
$edit = [];
$edit['title[0][value]'] = $this->randomMachineName(8);
$edit[$body_key] = $this->randomMachineName(16);
$this->drupalGet('node/add/page');
$this->submitForm($edit, 'Save');
// Check that the node was authored by the currently logged in user.
$node = $this->drupalGetNodeByTitle($edit['title[0][value]']);
$this->assertSame($this->adminUser
->id(), $node->getOwnerId(), 'Node authored by admin user.');
$this->checkVariousAuthoredByValues($node, 'uid[0][target_id]');
// Check that normal users cannot change the authored by information.
$this->drupalLogin($this->webUser);
$this->drupalGet('node/' . $node->id() . '/edit');
$this->assertSession()
->fieldNotExists('uid[0][target_id]');
// Now test with the Autocomplete (Tags) field widget.
/** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display */
$form_display = \Drupal::entityTypeManager()->getStorage('entity_form_display')
->load('node.page.default');
$widget = $form_display->getComponent('uid');
$widget['type'] = 'entity_reference_autocomplete_tags';
$widget['settings'] = [
'match_operator' => 'CONTAINS',
'size' => 60,
'placeholder' => '',
];
$form_display->setComponent('uid', $widget);
$form_display->save();
$this->drupalLogin($this->adminUser);
// Save the node without making any changes.
$this->drupalGet('node/' . $node->id() . '/edit');
$this->submitForm([], 'Save');
$this->nodeStorage
->resetCache([
$node->id(),
]);
$node = $this->nodeStorage
->load($node->id());
$this->assertSame($this->webUser
->id(), $node->getOwner()
->id());
$this->checkVariousAuthoredByValues($node, 'uid[target_id]');
// Hide the 'authored by' field from the form.
$form_display->removeComponent('uid')
->save();
// Check that saving the node without making any changes keeps the proper
// author ID.
$this->drupalGet('node/' . $node->id() . '/edit');
$this->submitForm([], 'Save');
$this->nodeStorage
->resetCache([
$node->id(),
]);
$node = $this->nodeStorage
->load($node->id());
$this->assertSame($this->webUser
->id(), $node->getOwner()
->id());
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.