View source
<?php
namespace Drupal\Tests\webform_deter\FunctionalJavascript;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
use Drupal\webform_deter\Form\WebformDeterSettingsForm;
class IntegrationTest extends WebDriverTestBase {
protected static $modules = [
'node',
'webform',
'webform_deter',
];
public function setUp() {
parent::setUp();
$account = $this
->drupalCreateUser([
'access webform overview',
'administer webform',
'administer webform submission',
'bypass node access',
'view any webform submission',
'edit any webform submission',
'administer webform_deter',
'access administration pages',
]);
$this
->drupalLogin($account);
}
public function testIntegration() {
$session = $this
->getSession();
$page = $session
->getPage();
$assert_session = $this
->assertSession();
$config = \Drupal::config('webform_deter.settings');
$message = $config
->get('warning_message');
$this
->assertEquals(WebformDeterSettingsForm::DEFAULT_MESSAGE, $message);
$patterns = $config
->get('patterns');
$this
->assertEquals([], $patterns);
$this
->drupalGet('/admin/config/system');
$page
->clickLink('Webform Deter Settings');
$assert_session
->addressEquals('/admin/config/system/webform_deter/settings');
$assert_session
->pageTextContains('Webform Deter Settings');
$assert_session
->pageTextContains('The message shown to users when a deter pattern matches.');
$assert_session
->pageTextContains('A new-line separated list of patterns to match against.');
$page
->fillField('warning_message', 'Hey ho, private info in here!');
$patterns = <<<PATTERNS
(dob|birthday|date of birth)
[\\d \\-]{13,19}
(card number|credit card)
\\d{1,2}[^\\d]\\d{1,2}[^\\d]\\d{2,4}
\\d{9}
(license number|driver\\'s license number)
[\\d\\-]{9,11}
(ssn|social security number)
PATTERNS;
$page
->fillField('patterns', $patterns);
$page
->findButton('Save configuration')
->press();
$assert_session
->pageTextContains('The configuration options have been saved');
$this
->drupalGet('/webform/contact');
$assert_session
->fieldExists('Your Name');
$page
->fillField('subject', 'Foo');
$personal_info = [
'dob',
'birthday',
'date of birth',
'card number',
'credit card',
'4545 4545 1212 1212',
'123456789',
'license number',
'123-45-6789',
'ssn',
'social security number',
];
foreach ($personal_info as $value) {
$page
->fillField('message', 'aaa ' . $value . ' bbb');
$page
->findButton('Send message')
->press();
$this
->assertTrue($this
->assertAlertMessage('Hey ho, private info in here!'));
$this
->cancelAlert();
}
$page
->fillField('message', 'aaa ssn bbb');
$page
->findButton('Send message')
->press();
$this
->assertTrue($this
->assertAlertMessage('Hey ho, private info in here!'));
$this
->confirmAlert();
$assert_session
->pageTextContains('Your message has been sent');
}
protected function assertAlertMessage($text) {
return $text === $this
->getSession()
->getDriver()
->getWebDriverSession()
->getAlert_text();
}
protected function confirmAlert() {
$this
->getSession()
->getDriver()
->getWebDriverSession()
->accept_alert();
}
protected function cancelAlert() {
$this
->getSession()
->getDriver()
->getWebDriverSession()
->dismiss_alert();
}
}