You are here

public function WebformSettingsAccessDeniedTest::testWebformSubmissionAccessDenied in Webform 8.5

Same name and namespace in other branches
  1. 6.x tests/src/Functional/Settings/WebformSettingsAccessDeniedTest.php \Drupal\Tests\webform\Functional\Settings\WebformSettingsAccessDeniedTest::testWebformSubmissionAccessDenied()

Tests webform submission access denied setting.

File

tests/src/Functional/Settings/WebformSettingsAccessDeniedTest.php, line 133

Class

WebformSettingsAccessDeniedTest
Tests for access denied webform and submissions.

Namespace

Drupal\Tests\webform\Functional\Settings

Code

public function testWebformSubmissionAccessDenied() {

  // Create a webform submission.
  $this
    ->drupalLogin($this->rootUser);
  $webform = Webform::load('test_form_access_denied');
  $sid = $this
    ->postSubmission($webform);
  $this
    ->drupalLogout();

  /**************************************************************************/

  // Redirect.

  /**************************************************************************/

  // Check submission message is displayed.
  $this
    ->drupalGet("admin/structure/webform/manage/test_form_access_denied/submission/{$sid}");
  $this
    ->assertRaw("Please login to access <b>Test: Webform: Access Denied: Submission #{$sid}</b>.");

  /**************************************************************************/

  // Default.

  /**************************************************************************/

  // Set default access denied page.
  $webform
    ->setSetting('submission_access_denied', WebformInterface::ACCESS_DENIED_DEFAULT);
  $webform
    ->save();

  // Check default access denied page.
  $this
    ->drupalGet("admin/structure/webform/manage/test_form_access_denied/submission/{$sid}");
  $this
    ->assertRaw('You are not authorized to access this page.');
  $this
    ->assertNoRaw("Please login to access <b>Test: Webform: Access Denied: Submission #{$sid}</b>.");

  /**************************************************************************/

  // Page.

  /**************************************************************************/

  // Set access denied to display a dedicated page.
  $webform
    ->setSetting('submission_access_denied', WebformInterface::ACCESS_DENIED_PAGE);
  $webform
    ->setSetting('submission_access_denied_title', 'Webform submission: Access denied');
  $webform
    ->setSetting('submission_access_denied_attributes', [
    'style' => 'border: 1px solid red',
    'class' => [],
    'attributes' => [],
  ]);
  $webform
    ->save();

  // Check custom access denied page.
  $this
    ->drupalGet("admin/structure/webform/manage/test_form_access_denied/submission/{$sid}");
  $this
    ->assertNoRaw('You are not authorized to access this page.');
  $this
    ->assertRaw('<h1>Webform submission: Access denied</h1>');
  $this
    ->assertRaw('<div style="border: 1px solid red" class="webform-submission-access-denied">Please login to access <b>Test: Webform: Access Denied: Submission #' . $sid . '</b>.</div>');
}