Add tests for user_login_userkey()
This commit is contained in:
parent
a3fa1f0254
commit
aaac20f995
1 changed files with 202 additions and 0 deletions
|
@ -37,6 +37,12 @@ class auth_plugin_userkey_testcase extends advanced_testcase {
|
||||||
*/
|
*/
|
||||||
protected $auth;
|
protected $auth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User object.
|
||||||
|
* @var
|
||||||
|
*/
|
||||||
|
protected $user;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initial set up.
|
* Initial set up.
|
||||||
*/
|
*/
|
||||||
|
@ -48,6 +54,8 @@ class auth_plugin_userkey_testcase extends advanced_testcase {
|
||||||
require_once($CFG->dirroot . '/auth/userkey/auth.php');
|
require_once($CFG->dirroot . '/auth/userkey/auth.php');
|
||||||
|
|
||||||
$this->auth = new auth_plugin_userkey();
|
$this->auth = new auth_plugin_userkey();
|
||||||
|
$this->user = self::getDataGenerator()->create_user();
|
||||||
|
|
||||||
$this->resetAfterTest();
|
$this->resetAfterTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -368,4 +376,198 @@ class auth_plugin_userkey_testcase extends advanced_testcase {
|
||||||
$this->assertEquals(0, $config->iprestriction);
|
$this->assertEquals(0, $config->iprestriction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test required parameter exception gets thrown id try to login, but key is not set.
|
||||||
|
*
|
||||||
|
* @expectedException moodle_exception
|
||||||
|
* @expectedExceptionMessage A required parameter (key) was missing
|
||||||
|
*/
|
||||||
|
public function test_required_parameter_exception_thrown_if_key_not_set() {
|
||||||
|
$this->auth->user_login_userkey();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that incorrect key exception gets thrown if a key is incorrect.
|
||||||
|
*
|
||||||
|
* @expectedException moodle_exception
|
||||||
|
* @expectedExceptionMessage Incorrect key
|
||||||
|
*/
|
||||||
|
public function test_invalid_key_exception_thrown_if_invalid_key() {
|
||||||
|
$_POST['key'] = 'InvalidKey';
|
||||||
|
$this->auth->user_login_userkey();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that expired key exception gets thrown if a key is expired.
|
||||||
|
*
|
||||||
|
* @expectedException moodle_exception
|
||||||
|
* @expectedExceptionMessage Expired key
|
||||||
|
*/
|
||||||
|
public function test_expired_key_exception_thrown_if_expired_key() {
|
||||||
|
global $DB;
|
||||||
|
|
||||||
|
$key = new stdClass();
|
||||||
|
$key->value = 'ExpiredKey';
|
||||||
|
$key->script = 'auth/userkey';
|
||||||
|
$key->userid = $this->user->id;
|
||||||
|
$key->instance = $this->user->id;
|
||||||
|
$key->iprestriction = null;
|
||||||
|
$key->validuntil = time() - 3000;
|
||||||
|
$key->timecreated = time();
|
||||||
|
$DB->insert_record('user_private_key', $key);
|
||||||
|
|
||||||
|
$_POST['key'] = 'ExpiredKey';
|
||||||
|
$this->auth->user_login_userkey();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that IP address mismatch exception gets thrown if incorrect IP.
|
||||||
|
*
|
||||||
|
* @expectedException moodle_exception
|
||||||
|
* @expectedExceptionMessage Client IP address mismatch
|
||||||
|
*/
|
||||||
|
public function test_ipmismatch_exception_thrown_if_ip_is_incorrect() {
|
||||||
|
global $DB;
|
||||||
|
|
||||||
|
$key = new stdClass();
|
||||||
|
$key->value = 'IpmismatchKey';
|
||||||
|
$key->script = 'auth/userkey';
|
||||||
|
$key->userid = $this->user->id;
|
||||||
|
$key->instance = $this->user->id;
|
||||||
|
$key->iprestriction = '192.168.1.1';
|
||||||
|
$key->validuntil = time() + 300;
|
||||||
|
$key->timecreated = time();
|
||||||
|
$DB->insert_record('user_private_key', $key);
|
||||||
|
|
||||||
|
$_POST['key'] = 'IpmismatchKey';
|
||||||
|
$_SERVER['HTTP_CLIENT_IP'] = '192.168.1.2';
|
||||||
|
$this->auth->user_login_userkey();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that IP address mismatch exception gets thrown if incorrect IP.
|
||||||
|
*
|
||||||
|
* @expectedException moodle_exception
|
||||||
|
* @expectedExceptionMessage Invalid user id
|
||||||
|
*/
|
||||||
|
public function test_invalid_user_exception_thrown_if_ip_is_incorrect() {
|
||||||
|
global $DB;
|
||||||
|
|
||||||
|
$key = new stdClass();
|
||||||
|
$key->value = 'InvalidUser';
|
||||||
|
$key->script = 'auth/userkey';
|
||||||
|
$key->userid = 777;
|
||||||
|
$key->instance = 777;
|
||||||
|
$key->iprestriction = '192.168.1.1';
|
||||||
|
$key->validuntil = time() + 300;
|
||||||
|
$key->timecreated = time();
|
||||||
|
$DB->insert_record('user_private_key', $key);
|
||||||
|
|
||||||
|
$_POST['key'] = 'InvalidUser';
|
||||||
|
$_SERVER['HTTP_CLIENT_IP'] = '192.168.1.1';
|
||||||
|
$this->auth->user_login_userkey();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that key gets removed after a user logged in.
|
||||||
|
*/
|
||||||
|
public function test_that_key_gets_removed_after_user_logged_in() {
|
||||||
|
global $DB;
|
||||||
|
|
||||||
|
$key = new stdClass();
|
||||||
|
$key->value = 'RemoveKey';
|
||||||
|
$key->script = 'auth/userkey';
|
||||||
|
$key->userid = $this->user->id;
|
||||||
|
$key->instance = $this->user->id;
|
||||||
|
$key->iprestriction = '192.168.1.1';
|
||||||
|
$key->validuntil = time() + 300;
|
||||||
|
$key->timecreated = time();
|
||||||
|
$DB->insert_record('user_private_key', $key);
|
||||||
|
|
||||||
|
$_POST['key'] = 'RemoveKey';
|
||||||
|
$_SERVER['HTTP_CLIENT_IP'] = '192.168.1.1';
|
||||||
|
|
||||||
|
// Using @ is the only way to test this. Thanks moodle!
|
||||||
|
@$this->auth->user_login_userkey();
|
||||||
|
|
||||||
|
$keyexists = $DB->record_exists('user_private_key', array('value' => 'RemoveKey'));
|
||||||
|
$this->assertFalse($keyexists);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that a user loggs in correctly.
|
||||||
|
*/
|
||||||
|
public function test_that_user_logged_in() {
|
||||||
|
global $DB, $USER;
|
||||||
|
|
||||||
|
$key = new stdClass();
|
||||||
|
$key->value = 'UserLogin';
|
||||||
|
$key->script = 'auth/userkey';
|
||||||
|
$key->userid = $this->user->id;
|
||||||
|
$key->instance = $this->user->id;
|
||||||
|
$key->iprestriction = null;
|
||||||
|
$key->validuntil = time() + 300;
|
||||||
|
$key->timecreated = time();
|
||||||
|
$DB->insert_record('user_private_key', $key);
|
||||||
|
|
||||||
|
$_POST['key'] = 'UserLogin';
|
||||||
|
|
||||||
|
// Using @ is the only way to test this. Thanks moodle!
|
||||||
|
$redirect = @$this->auth->user_login_userkey();
|
||||||
|
|
||||||
|
$this->assertEquals('/', $redirect);
|
||||||
|
$this->assertEquals($this->user->id, $USER->id);
|
||||||
|
$this->assertSame(sesskey(), $USER->sesskey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that wantsurl URL gets returned after user logged in if wantsurl's set.
|
||||||
|
*/
|
||||||
|
public function test_that_return_wantsurl() {
|
||||||
|
global $DB;
|
||||||
|
|
||||||
|
$key = new stdClass();
|
||||||
|
$key->value = 'WantsUrl';
|
||||||
|
$key->script = 'auth/userkey';
|
||||||
|
$key->userid = $this->user->id;
|
||||||
|
$key->instance = $this->user->id;
|
||||||
|
$key->iprestriction = null;
|
||||||
|
$key->validuntil = time() + 300;
|
||||||
|
$key->timecreated = time();
|
||||||
|
$DB->insert_record('user_private_key', $key);
|
||||||
|
|
||||||
|
$_POST['key'] = 'WantsUrl';
|
||||||
|
$_POST['wantsurl'] = '/course/index.php';
|
||||||
|
|
||||||
|
// Using @ is the only way to test this. Thanks moodle!
|
||||||
|
$redirect = @$this->auth->user_login_userkey();
|
||||||
|
|
||||||
|
$this->assertEquals('/course/index.php', $redirect);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that wantsurl URL gets returned after user logged in if wantsurl's set to external URL.
|
||||||
|
*/
|
||||||
|
public function test_that_return_wantsurl_if_it_is_external_url() {
|
||||||
|
global $DB;
|
||||||
|
|
||||||
|
$key = new stdClass();
|
||||||
|
$key->value = 'WantsUrlExternal';
|
||||||
|
$key->script = 'auth/userkey';
|
||||||
|
$key->userid = $this->user->id;
|
||||||
|
$key->instance = $this->user->id;
|
||||||
|
$key->iprestriction = null;
|
||||||
|
$key->validuntil = time() + 300;
|
||||||
|
$key->timecreated = time();
|
||||||
|
$DB->insert_record('user_private_key', $key);
|
||||||
|
|
||||||
|
$_POST['key'] = 'WantsUrlExternal';
|
||||||
|
$_POST['wantsurl'] = 'http://test.com/course/index.php';
|
||||||
|
|
||||||
|
// Using @ is the only way to test this. Thanks moodle!
|
||||||
|
$redirect = @$this->auth->user_login_userkey();
|
||||||
|
|
||||||
|
$this->assertEquals('http://test.com/course/index.php', $redirect);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue