You are here

public function AutoLoginUrlTestCase::testAluFloodCheck in Auto Login URL 7

Test flood.

File

tests/auto_login_url.test, line 106
Test Auto Login URL module works as expected.

Class

AutoLoginUrlTestCase
AutoLoginUrlTestCase Class.

Code

public function testAluFloodCheck() {

  // Set failed attempts to 5 for easier testing.
  variable_set('user_failed_login_ip_limit', 5);

  // Create user.
  $user = $this
    ->drupalCreateUser();

  // Access 10 false URLs. Essentially triggering flood.
  for ($i = 1; $i < 6; $i++) {
    $this
      ->drupalGet('autologinurl/' . $i . '/some-token' . $i);
    $this
      ->assertResponse(403, t('Got access denied page.'));
  }

  // Generate actual auto login url for this user.
  $url = auto_login_url_create($user->uid, 'user/' . $user->uid);
  debug('Generated URL is: ' . $url);

  // Access url.
  $this
    ->drupalGet($url);

  // Make assertions.
  $this
    ->assertResponse(403, t('Got access denied page.'));
  $this
    ->assertText(t('Sorry, too many failed login attempts from your IP address. This IP address is temporarily blocked. Try again later.'), t('Cannot login message visible.'));

  // Clear flood table.
  db_truncate('flood')
    ->execute();

  // Try to login again.
  $this
    ->drupalGet($url);
  $this
    ->assertResponse(200, t('User logged in successfully.'));
  $this
    ->assertText($user->name, t('User name is visible, hence user is logged in.'));
}