WebformAccessSubmissionViewsTest.php in Webform 8.5
File
modules/webform_access/tests/src/Functional/WebformAccessSubmissionViewsTest.php
View source
<?php
namespace Drupal\Tests\webform_access\Functional;
use Drupal\webform\Entity\Webform;
use Drupal\webform\Entity\WebformSubmission;
use Drupal\webform\WebformInterface;
class WebformAccessSubmissionViewsTest extends WebformAccessBrowserTestBase {
public static $modules = [
'views',
'webform_test_views',
];
public function testWebformAccessSubmissionViewsTest() {
$webform = Webform::load('contact');
$submission_generate = \Drupal::service('webform_submission.generate');
foreach ($this->nodes as $node) {
foreach ($this->users as $user) {
WebformSubmission::create([
'webform_id' => 'contact',
'entity_type' => 'node',
'entity_id' => $node
->id(),
'uid' => $user
->id(),
'data' => $submission_generate
->getData($webform),
])
->save();
}
}
$this
->checkUserSubmissionAccess($webform, $this->users);
}
protected function checkUserSubmissionAccess(WebformInterface $webform, array $accounts) {
$webform_submission_storage = \Drupal::entityTypeManager()
->getStorage('webform_submission');
\Drupal::entityTypeManager()
->getStorage('webform_submission')
->resetCache();
\Drupal::entityTypeManager()
->getAccessControlHandler('webform_submission')
->resetCache();
foreach ($accounts as $account_type => $account) {
$this
->drupalLogin($account);
$this
->drupalGet('/admin/structure/webform/test/views_access');
$views_sids = [];
foreach ($this
->cssSelect('.view .view-content tbody .views-field-sid') as $node) {
$views_sids[] = $node
->getText();
}
sort($views_sids);
$expected_sids = [];
$webform_submissions = $webform_submission_storage
->loadByEntities($webform);
foreach ($webform_submissions as $webform_submission) {
if ($webform_submission
->access('view', $account)) {
$expected_sids[] = $webform_submission
->id();
}
}
sort($expected_sids);
$this
->assertEqual($expected_sids, $views_sids, "User '" . $account_type . "' access has correct access through view on webform submission entity type.");
}
}
}