. * * @package LibreNMS * @link https://librenms.org * @copyright 2017 Adam Bishop * @author Adam Bishop */ namespace LibreNMS\Tests; use LibreNMS\Authentication\Auth; // Note that as this test set depends on mres(), it is a DBTestCase even though the database is unused class AuthHTTPTest extends DBTestCase { // Document the modules current behaviour, so that changes trigger test failures public function testCapabilityFunctions() { global $config; $config['auth_mechanism'] = 'http-auth'; $a = Auth::reset(); $this->assertFalse($a->reauthenticate(null, null)); $this->assertTrue($a->canUpdatePasswords() === 0); $this->assertTrue($a->changePassword(null, null) === 0); $this->assertTrue($a->canManageUsers() === 1); $this->assertTrue($a->canUpdateUsers() === 1); $this->assertTrue($a->authIsExternal() === 1); } public function testOldBehaviourAgainstCurrent() { global $config; $old_username = null; $new_username = null; $config['auth_mechanism'] = 'http-auth'; $users = array('steve', ' steve', 'steve ', ' steve ', ' steve ', '', 'CAT'); $vars = array('REMOTE_USER', 'PHP_AUTH_USER'); $a = Auth::reset(); foreach ($vars as $v) { foreach ($users as $u) { $_SERVER[$v] = $u; // Old Behaviour if (isset($_SERVER['REMOTE_USER'])) { $old_username = clean($_SERVER['REMOTE_USER']); } elseif (isset($_SERVER['PHP_AUTH_USER']) && $config['auth_mechanism'] === 'http-auth') { $old_username = clean($_SERVER['PHP_AUTH_USER']); } // Current Behaviour if ($a->authIsExternal()) { $new_username = $a->getExternalUsername(); } $this->assertFalse($old_username === null); $this->assertFalse($new_username === null); $this->assertTrue($old_username === $new_username); } unset($_SERVER[$v]); } unset($config['auth_mechanism']); } }