You are here

auto_login_url.test in Auto Login URL 7

Test Auto Login URL module works as expected.

File

tests/auto_login_url.test
View source
<?php

/**
 * @file
 * Test Auto Login URL module works as expected.
 */

/**
 * AutoLoginUrlTestCase Class.
 */
class AutoLoginUrlTestCase extends DrupalWebTestCase {

  /**
   * Test info function.
   */
  public static function getInfo() {
    return array(
      'name' => 'Auto Login URL test',
      'description' => 'Test Auto Login URL module works as expected.',
      'group' => 'Auto Login URL',
    );
  }

  /**
   * Set-up function.
   */
  public function setUp() {
    parent::setUp();
    $this
      ->resetAll();
    module_enable(array(
      'auto_login_url',
    ), TRUE);
    $this
      ->resetAll();
  }

  /**
   * Test token generation.
   */
  public function testAluTokenGenerationCheck() {

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

    // Create an 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(200, t('User logged in successfully.'));
    $this
      ->assertText($user->name, t('User name is visible, hence user is logged in.'));

    // Create another user and login again.
    $user2 = $this
      ->drupalCreateUser();

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

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

    // Make assertions.
    $this
      ->assertResponse(200, t('User 2 logged in successfully.'));
    $this
      ->assertText($user2->name, t('User 2 name is visible, hence user is logged in.'));
  }

  /**
   * Test token generation with different settings.
   */
  public function testAluSettingsCheck() {

    // Change settings.
    variable_set('auto_login_url_token_length', 6);
    variable_set('auto_login_url_secret', 'new secret');
    variable_set('auto_login_url_short_url', 'alu');

    // Clear menu cache.
    menu_rebuild();

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

    // Create an 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(200, t('User logged in successfully.'));
    $this
      ->assertText($user->name, t('User name is visible, hence user is logged in.'));
  }

  /**
   * Test flood.
   */
  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.'));
  }

}

Classes

Namesort descending Description
AutoLoginUrlTestCase AutoLoginUrlTestCase Class.