auto_login_url.test in Auto Login URL 7
Test Auto Login URL module works as expected.
File
tests/auto_login_url.testView 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
Name | Description |
---|---|
AutoLoginUrlTestCase | AutoLoginUrlTestCase Class. |