mirror of
				https://github.com/Icinga/icingaweb2.git
				synced 2025-11-03 20:54:27 +01:00 
			
		
		
		
	- remove Storable inheritance from User and make it a plain DAO - remove Authorization methods from User refs #4265 refs #4250
		
			
				
	
	
		
			123 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
namespace Tests\Icinga\Authentication;
 | 
						|
 | 
						|
require_once("../../library/Icinga/Application/Logger.php");
 | 
						|
require_once("../../library/Icinga/Authentication/Manager.php");
 | 
						|
require_once("../../library/Icinga/Authentication/Credentials.php");
 | 
						|
require_once("Zend/Log.php");
 | 
						|
require_once("BackendMock.php");
 | 
						|
require_once("SessionMock.php");
 | 
						|
 | 
						|
use Icinga\Authentication\Manager as AuthManager;
 | 
						|
use Icinga\Authentication\Credentials as Credentials;
 | 
						|
 | 
						|
/**
 | 
						|
*
 | 
						|
* Test class for Manager 
 | 
						|
* Created Mon, 10 Jun 2013 07:54:34 +0000 
 | 
						|
*
 | 
						|
**/
 | 
						|
class ManagerTest extends \PHPUnit_Framework_TestCase
 | 
						|
{
 | 
						|
    public function getTestCredentials()
 | 
						|
    {
 | 
						|
        return (object) array("credentials" => array(
 | 
						|
            new Credentials("jdoe", "passjdoe"),
 | 
						|
            new Credentials("root", "passroot"),
 | 
						|
            new Credentials("test", "passtest")
 | 
						|
        ));
 | 
						|
    }
 | 
						|
 | 
						|
    public function getManagerInstance(&$session = null, $write = false)
 | 
						|
    {
 | 
						|
        if ($session == null) {
 | 
						|
            $session = new SessionMock();
 | 
						|
        }
 | 
						|
        return  AuthManager::getInstance(
 | 
						|
            (object) array(),
 | 
						|
            array(
 | 
						|
                "userBackendClass" => new BackendMock(
 | 
						|
                    $this->getTestCredentials()
 | 
						|
                ),
 | 
						|
                "groupBackendClass" => new BackendMock(),
 | 
						|
                "sessionClass" => $session,
 | 
						|
                "writeSession" => $write
 | 
						|
            )
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function testManagerInstanciation()
 | 
						|
    {
 | 
						|
        AuthManager::clearInstance();
 | 
						|
        $this->setPreserveGlobalState(false);
 | 
						|
        $authMgr = $this->getManagerInstance();
 | 
						|
        $auth = $this->assertEquals($authMgr, AuthManager::getInstance());
 | 
						|
        AuthManager::clearInstance();
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function testAuthentication()
 | 
						|
    {
 | 
						|
        AuthManager::clearInstance();
 | 
						|
        $auth = $this->getManagerInstance();
 | 
						|
        $this->assertFalse(
 | 
						|
            $auth->authenticate(
 | 
						|
                new Credentials("jhoe", "passjdoe"),
 | 
						|
                false
 | 
						|
            )
 | 
						|
        );
 | 
						|
        $this->assertFalse(
 | 
						|
            $auth->authenticate(
 | 
						|
                new Credentials("joe", "passjhoe"),
 | 
						|
                false
 | 
						|
            )
 | 
						|
        );
 | 
						|
        $this->assertTrue(
 | 
						|
            $auth->authenticate(
 | 
						|
                new Credentials("jdoe", "passjdoe"),
 | 
						|
                false
 | 
						|
            )
 | 
						|
        );
 | 
						|
        AuthManager::clearInstance();
 | 
						|
    }
 | 
						|
 | 
						|
    public function testPersistAuthInSession()
 | 
						|
    {
 | 
						|
        AuthManager::clearInstance();
 | 
						|
        $session = new SessionMock();
 | 
						|
        $auth = $this->getManagerInstance($session, true);
 | 
						|
        $this->assertFalse($auth->isAuthenticated(true));
 | 
						|
        $auth->authenticate(new Credentials("jdoe", "passjdoe"));
 | 
						|
        $this->assertNotEquals(null, $session->get("user"));
 | 
						|
        $user = $session->get("user");
 | 
						|
        $this->assertEquals("Username", $user->getUsername());
 | 
						|
        $this->assertTrue($auth->isAuthenticated(true));
 | 
						|
        AuthManager::clearInstance();
 | 
						|
    }
 | 
						|
 | 
						|
    public function testAuthenticateFromSession()
 | 
						|
    {
 | 
						|
        AuthManager::clearInstance();
 | 
						|
        $session = new SessionMock();
 | 
						|
        $session->set("user", BackendMock::getDummyUser());
 | 
						|
        $auth = $this->getManagerInstance($session, false);
 | 
						|
        $this->assertFalse($auth->isAuthenticated(true));
 | 
						|
        $this->assertTrue($auth->isAuthenticated());
 | 
						|
        $this->assertTrue($auth->isAuthenticated());
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
    *
 | 
						|
    *   @expectedException \Exception
 | 
						|
    **/
 | 
						|
    public function testWriteSessionTwice()
 | 
						|
    {
 | 
						|
        $auth = $this->getManagerInstance($session, false);
 | 
						|
        $this->assertFalse($auth->isAuthenticated(true));
 | 
						|
        $auth->authenticate(new Credentials("jdoe", "passjdoe"));
 | 
						|
        
 | 
						|
    }
 | 
						|
}
 |