PHPUnit_TestCase($name); } function setUp() { require dirname(__FILE__) . '/_config.inc.php'; require_once '../lib/Auth_SQL.inc.php'; $this->Auth_SQL =& new Auth_SQL('testauth'); $this->Auth_SQL->setParam(array( 'db_table' => 'test_user_tbl', 'db_primary_key' => 'user_id', 'db_login_table' => 'test_login_tbl', 'login_url' => '/login.php', 'blocking' => true )); // Use fresh user table. $this->Auth_SQL->initDB(true); // Insert test data. DB::query(" INSERT INTO test_user_tbl ( username, userpass, first_name, last_name, email, user_type ) VALUES ( 'testuser', md5('testpass'), 'John', 'Doe', 'root@localhost', 'admin' ) "); } function tearDown() { unset($this->Auth_SQL); DB::query("DROP TABLE IF EXISTS test_user_tbl"); DB::query("DROP TABLE IF EXISTS test_login_tbl"); } function test_setval() { $this->Auth_SQL->setval('testuserkey', 'testuserval'); $this->assertEquals('testuserval', $_SESSION[$this->Auth_SQL->_sess]['user_data']['testuserkey']); } function test_getval() { $_SESSION[$this->Auth_SQL->_sess]['user_data']['testuserkey'] = 'testuserval'; $val = $this->Auth_SQL->getVal('testuserkey'); $this->assertEquals('testuserval', $val); } function test_setparam() { $this->Auth_SQL->setParam(array( 'login_url' => 'testloginurl.php' )); $this->assertEquals('testloginurl.php', $this->Auth_SQL->_params['login_url']); } function test_getparam() { $this->Auth_SQL->_params['login_url'] = 'testloginurl.php'; $param = $this->Auth_SQL->getParam('login_url'); $this->assertEquals('testloginurl.php', $param); } function test_clearauth() { $login = $this->Auth_SQL->login('testuser', 'testpass'); $this->assertTrue($login, 'User login failed, but should have succeeded.'); $before_logged_in = $this->Auth_SQL->isloggedin(); $this->assertTrue($before_logged_in, 'User is not logged in, but should be.'); $this->Auth_SQL->clearauth(); $after_logged_in = $this->Auth_SQL->isloggedin(); $this->assertFalse($after_logged_in, 'User is still logged in but should not be.'); } function test_authenticate() { $true = $this->Auth_SQL->authenticate('testuser', 'testpass'); $this->assertTrue($true, 'User login failed, but should have succeeded.'); echo "Testing wrong password...\n"; $false = $this->Auth_SQL->authenticate('testuser', 'wrongpass'); $this->assertfalse($false, 'User login succeeded, but should have failed.'); } function test_login_and_isLoggedIn() { $login = $this->Auth_SQL->login('testuser', 'testpass'); $this->assertTrue($login, '1. User login failed, but should have succeeded.'); $before_logged_in = $this->Auth_SQL->isloggedin(); $this->assertTrue($before_logged_in, '2. User is not logged in, but should be.'); $this->Auth_SQL->clearauth(); $after_logged_in = $this->Auth_SQL->isloggedin(); $this->assertFalse($after_logged_in, '3. User is still logged in but should not be.'); echo "Testing wrong password...\n"; $login2 = $this->Auth_SQL->login('testuser', 'wrongpass'); $this->assertFalse($login2, '4. User login succeeded, but should have failed.'); $before_logged_in2 = $this->Auth_SQL->isloggedin(); $this->assertFalse($before_logged_in2, '5. User is logged in, but should not be.'); $this->Auth_SQL->clearauth(); $after_logged_in2 = $this->Auth_SQL->isloggedin(); $this->assertFalse($after_logged_in2, '6. Wrong user is still logged in but should not be.'); } function test_requirelogin() { // $this->Auth_SQL->requirelogin('Login is required!'); } function test_blockaccount() { $this->Auth_SQL->login('testuser', 'testpass'); $this->Auth_SQL->blockaccount(null, 'blocktestuser'); $qid = DB::query(" SELECT blocked_reason FROM test_user_tbl "); list($reason) = mysql_fetch_row($qid); $this->assertEquals('blocktestuser', $reason, "Block not found in DB record."); } function test_unblockaccount() { DB::query(" UPDATE test_user_tbl SET blocked_reason = 'blocktestuser' "); $this->Auth_SQL->unblockaccount(); $qid = DB::query(" SELECT blocked_reason FROM test_user_tbl "); list($reason) = mysql_fetch_row($qid); $this->assertTrue('' == $reason, "Block not removed from DB record."); } function test_usernameexists() { $result = $this->Auth_SQL->usernameexists('testuser'); $this->assertTrue($result); } function test_getusername() { $result = $this->Auth_SQL->getusername(1); $this->assertEquals('testuser', $result); } function test_generatepassword() { $result = $this->Auth_SQL->generatepassword('xCVcvd'); $this->assertRegExp('/[bcdfghjklmnprstvwxzBCDFGHJKLMNPRSTVWXZaeiouyAEIOUY0123456789][bcdfghjklmnprstvwxzBCDFGHJKLMNPRSTVWXZ][aeiouyAEIOUY][bcdfghjklmnprstvwxz][aeiouy][0123456789]/', $result, 'Generated password does not match intended pattern'); } function test_encryptpassword() { $result = $this->Auth_SQL->encryptpassword('123'); $this->assertEquals('202cb962ac59075b964b07152d234b70', $result); } function test_setpassword() { $this->Auth_SQL->setpassword(null, '123'); $qid = DB::query(" SELECT userpass FROM test_user_tbl "); list($pass) = mysql_fetch_row($qid); $this->assertEquals('202cb962ac59075b964b07152d234b70', $pass); } function test_resetpassword() { $result = $this->Auth_SQL->resetpassword(1, 'Because this is a test.'); $this->assertType('array', $result); } // function test_inclearancezone() // { // $result = $this->Auth_SQL->inclearancezone(PARAM); // $expected = EXPECTED_VAL; // $this->assertEquals($expected, $result); // } // // function test_requireaccessclearance() // { // $result = $this->Auth_SQL->requireaccessclearance(PARAM); // $expected = EXPECTED_VAL; // $this->assertEquals($expected, $result); // } } // Running the test. $suite = new PHPUnit_TestSuite('Auth_SQLTest'); $result = PHPUnit::run($suite); echo $result->toString(); ?>