$this->
drupalGet('admin/reports/status'
);
$this->
clickLink('Rebuild permissions'
);
$this->
submitForm([], 'Rebuild permissions'
);
$this->
assertSession()->
pageTextContains('The content access permissions have been rebuilt.'
);
// Test if the rebuild by user that cannot bypass node access and does not
// have access to the nodes has been successful.
$this->
assertFalse($this->adminUser->
hasPermission('bypass node access'
));
$this->
assertNull(\Drupal::
state()->
get('node.node_access_needs_rebuild'
), 'Node access permissions have been rebuilt'
);
foreach ($nodes as $node) { $this->
assertTrue($grant_storage->
access($node, 'view',
$this->webUser
)->
isAllowed(), 'After rebuilding node access the grant storage returns allowed for the node author.'
);
$this->
assertFalse($grant_storage->
access($node, 'view',
$this->adminUser
)->
isForbidden(), 'After rebuilding node access the grant storage returns forbidden for the admin user.'
);
} $this->
assertEmpty(\Drupal::
service('node.grant_storage'
)->
checkAll($this->webUser
), 'There is no all realm access record'
);
// Test an anonymous node access rebuild from code.
$this->
drupalLogout();
node_access_rebuild();
foreach ($nodes as $node) { $this->
assertTrue($grant_storage->
access($node, 'view',
$this->webUser
)->
isAllowed(), 'After rebuilding node access the grant storage returns allowed for the node author.'
);
$this->
assertFalse($grant_storage->
access($node, 'view',
$this->adminUser
)->
isForbidden(), 'After rebuilding node access the grant storage returns forbidden for the admin user.'
);
} $this->
assertEmpty(\Drupal::
service('node.grant_storage'
)->
checkAll($this->webUser
), 'There is no all realm access record'
);
}