UsersControllerTest.php 4.38 KB
<?php
namespace App\Test\TestCase\Controller;

use App\Controller\UsersController;
use Cake\TestSuite\IntegrationTestCase;

/**
 * App\Controller\UsersController Test Case
 */
//class UsersControllerTest extends IntegrationTestCase
class UsersControllerTest extends General
{

    /**
     * Fixtures
     *
     * @var array
     */
    public $fixtures = [
        'app.fakeldapusers',
        'app.users',
        'app.groupes_metiers',
        'app.materiels',
        'app.sur_categories',
        'app.categories',
        'app.sous_categories',
        'app.groupes_thematiques',
        'app.organismes',
        'app.sites',
        'app.emprunts',
        'app.documents',
        'app.suivis',
        'app.type_suivis',
    	'app.configurations'
    ];

    /*
    public function authUser() {
    	$user = [
    			'Auth' => [
    					'User' => [
    							'sn' => [0 => 'test2'],
    							'mail' => [0 => 'test@test.fr'],
    							'givenname' => [0 => 'test1'],
    							'cn' => [0 => 'user1_SUPER'],
    							'userpassword' => [0 => 'test'],
    					]
    			]
    	];
    	$this->session($user);
    	 
    	$authType = ['authType' => 'cn'];
    	$this->session($authType);
    }
    */
    
    
    
    /**
     * Test UNauthentified access to website
     * 
     * By default, must have ONLY access to /about page, or /login page  
     *
     * @return void
     */
    public function testUser10AccessAsAnonymous() {
        $this->get('/pages/about');
        $this->assertResponseContains('A PROPOS DU LOGICIEL', 'Un utilisateur NON authentifié devrait avoir accès à la page /about');
        $this->get('/');
        $this->assertRedirect('/users/login', 'Un utilisateur NON authentifié devrait etre redirigé sur la page de login');
    }
    
    /**
     * Test login method
     *
     * @return void
     */
    public function testUser20LoginAsSuper()
    {
    	$this->post('/users/login', ['ldap' => 'user1_SUPER', 'password' => 'test']);
    	//$this->assertRedirect('/pages/home', 'Un utilisateur privilégié devrait pouvoir se loguer');
    	$this->assertRedirect('/', 'Un utilisateur privilégié devrait pouvoir se loguer');
    }
    public function testUser21LoginAsUser()
    {
        $this->post('/users/login', ['ldap' => 'user5_USER', 'password' => 'test']);
        //$this->assertRedirect('/pages/home', 'Un utilisateur non privilégié devrait pouvoir se loguer');
        $this->assertRedirect('/', 'Un utilisateur non privilégié devrait pouvoir se loguer');
    }
    

    /**
     * Test logout method
     * TODO: ca marche pas, impossible de simuler un vrai logout, l'utilisateur est toujours connecté !!!
     *
     * @return void
     */
    public function TODOtestUser30Logout()
    {
        //$this->authUser();
        $this->authSuperAdmin();
        $this->get('/pages/home');
        //$this->assertSession(1, 'Auth.User.id'); // Check user is logged in
        $this->assertSession('user1_SUPER', 'Auth.User.cn.0'); // Check user is logged in
        $this->assertSession(['SUPER'], 'Auth.User.sn'); // Check user is logged in

        $this->get('/users/logout');
        $this->assertSession(null, 'Auth.User'); // Check user is logged out
        //unset($this->session);
        //$this->assertRedirect('/pages/home', 'Un utilisateur devrait pouvoir se déloguer');
        //$this->get('/pages/home');
        $this->assertRedirect('/users/login', 'Un utilisateur devrait pouvoir se déloguer et ainsi revenir sur la page login');
        //$this->assertRedirect(['controller' => 'Users', 'action' => 'login']);
        $this->get('/materiels');
        $this->assertResponseNotContains('Liste des', 'On devrait normalement etre dé-logué !!! or on ne l\'est pas');
    }

    /**
     * Test add method
     *
     * @return void
     */
    public function testAdd()
    {
        //$this->authUser();
        $this->authSuperAdmin();
        
    	$data = [
            'id' => 6,
            'nom' => 'Test3 Test4',
            'username' => 'testo',
            'password' => 'test',
            'email' => 'testo@test.fr',
            'role' => 'Super Administrateur',
            'groupes_metier_id' => 1,
    		    'groupe_thematique_id' => 1,
			'sur_categorie_id' => 1
        ];
    	
    	$this->post('/users/add', $data);
    	$this->get('/users/view/6');
    	$this->assertResponseContains('Test3 Test4', 'L\'ajout d\'un utilisateur ne fonctionne pas correctement');
    }


}