You are here

public function CaptchaPersistenceTest::testPersistenceOnlyOnce in CAPTCHA 8

Test Persistence "Only once".

File

tests/src/Functional/CaptchaPersistenceTest.php, line 184

Class

CaptchaPersistenceTest
Tests CAPTCHA Persistence.

Namespace

Drupal\Tests\captcha\Functional

Code

public function testPersistenceOnlyOnce() {

  // Set up of persistence and CAPTCHAs.
  $this
    ->setUpPersistence(CAPTCHA_PERSISTENCE_SKIP_ONCE_SUCCESSFUL);

  // Go to login form and check if there is a CAPTCHA on the login form.
  $this
    ->drupalGet('<front>');
  $this
    ->assertCaptchaPresence(TRUE);
  $captcha_sid_initial = $this
    ->getCaptchaSidFromForm();

  // Try to with wrong user name and password, but correct CAPTCHA.
  $edit = [
    'name' => 'foobar',
    'pass' => 'bazlaz',
    'captcha_response' => 'Test 123',
  ];
  $this
    ->submitForm($edit, $this
    ->t('Log in'), self::LOGIN_HTML_FORM_ID);

  // Check that there was no error message for the CAPTCHA.
  $this
    ->assertCaptchaResponseAccepted();

  // There shouldn't be a CAPTCHA on the new form.
  $this
    ->assertCaptchaPresence(FALSE);
  $this
    ->assertPreservedCsid($captcha_sid_initial);

  // Start a new form instance/session.
  $this
    ->drupalGet('node');
  $this
    ->drupalGet('user');
  $this
    ->assertCaptchaPresence(FALSE);
  $this
    ->assertDifferentCsid($captcha_sid_initial);

  // Check another form.
  $this
    ->drupalGet('user/register');
  $this
    ->assertCaptchaPresence(FALSE);
  $this
    ->assertDifferentCsid($captcha_sid_initial);
}