355 lines
9.9 KiB
PHP
355 lines
9.9 KiB
PHP
<?php
|
|
|
|
/*
|
|
* Copyright 2008-2021 Anael MOBILIA
|
|
*
|
|
* This file is part of image-heberg.fr.
|
|
*
|
|
* image-heberg.fr is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* image-heberg.fr is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with image-heberg.fr. If not, see <http://www.gnu.org/licenses/>
|
|
*/
|
|
|
|
namespace ImageHebergTests;
|
|
|
|
use ImageHeberg\ImageObject;
|
|
use ImageHeberg\MaBDD;
|
|
use ImageHeberg\MetaObject;
|
|
use ImageHeberg\MiniatureObject;
|
|
use ImageHeberg\Outils;
|
|
use ImageHeberg\RessourceInterface;
|
|
use ImageHeberg\RessourceObject;
|
|
use ImageHeberg\SessionObject;
|
|
use ImageHeberg\UtilisateurObject;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class MembreTest extends TestCase
|
|
{
|
|
|
|
/**
|
|
* Fonction requise par l'extension Database
|
|
* @return type
|
|
*/
|
|
public function getConnection()
|
|
{
|
|
$pdo = new PDO('sqlite::memory:');
|
|
return $this->createDefaultDBConnection($pdo, ':memory:');
|
|
}
|
|
|
|
/**
|
|
* Fonction requise par l'extension Database
|
|
* @return \PHPUnit_Extensions_Database_DataSet_DefaultDataSet
|
|
*/
|
|
public function getDataSet()
|
|
{
|
|
return new PHPUnit_Extensions_Database_DataSet_DefaultDataSet();
|
|
}
|
|
|
|
public function testConnexionMembreExistant()
|
|
{
|
|
// Chargement de la configuration
|
|
require_once 'config/config.php';
|
|
unset($_POST);
|
|
/**
|
|
* Injection des valeurs du formulaire
|
|
*/
|
|
$_POST['valider'] = 1;
|
|
$_POST['userName'] = 'admin';
|
|
$_POST['userPassword'] = 'password';
|
|
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
|
|
|
/**
|
|
* Appel de la page
|
|
*/
|
|
ob_start();
|
|
require 'membre/connexionCompte.php';
|
|
ob_end_clean();
|
|
|
|
/**
|
|
* Vérification des valeurs
|
|
*/
|
|
$maSession = new SessionObject();
|
|
$this->assertEquals(UtilisateurObject::LEVEL_ADMIN, $maSession->getLevel(), "connexion : doit être OK");
|
|
}
|
|
|
|
/**
|
|
* Création d'un compte membre avec un nom déjà existant
|
|
* @depends testConnexionMembreExistant
|
|
*/
|
|
public function testMembreCreerCompteDoublon()
|
|
{
|
|
unset($_POST);
|
|
/**
|
|
* Injection des valeurs du formulaire
|
|
*/
|
|
$_POST['valider'] = 1;
|
|
$_POST['userName'] = 'admin';
|
|
$_POST['userPassword'] = 'monPassword';
|
|
$_POST['userMail'] = 'myMail@example.com';
|
|
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
|
$_SESSION['flag'] = true;
|
|
|
|
/**
|
|
* Appel de la page
|
|
*/
|
|
ob_start();
|
|
require 'membre/creerCompte.php';
|
|
ob_end_clean();
|
|
|
|
/**
|
|
* Vérification des valeurs
|
|
*/
|
|
$monMembre = new UtilisateurObject();
|
|
$this->assertEquals(
|
|
false,
|
|
$monMembre->connexion($_POST['userName'], $_POST['userPassword']),
|
|
"connexion : le nom d'utilisateur doit être unique"
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Création d'un compte membre.
|
|
* @depends testMembreCreerCompteDoublon
|
|
*/
|
|
public function testMembreCreerCompte()
|
|
{
|
|
unset($_POST);
|
|
/**
|
|
* Injection des valeurs du formulaire
|
|
*/
|
|
$_POST['valider'] = 1;
|
|
$_POST['userName'] = 'username';
|
|
$_POST['userPassword'] = 'password';
|
|
$_POST['userMail'] = 'myMail@example.com';
|
|
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
|
$_SESSION['flag'] = true;
|
|
|
|
/**
|
|
* Appel de la page
|
|
*/
|
|
ob_start();
|
|
require 'membre/creerCompte.php';
|
|
ob_end_clean();
|
|
|
|
/**
|
|
* Récupération d'un objet
|
|
*/
|
|
$monMembre = new UtilisateurObject(3);
|
|
|
|
/**
|
|
* Vérification des valeurs
|
|
*/
|
|
// Email
|
|
$this->assertEquals('myMail@example.com', $monMembre->getEmail(), "Vérification email");
|
|
// ID
|
|
$this->assertEquals(3, $monMembre->getId());
|
|
// @ IP d'inscription
|
|
$this->assertEquals('127.0.0.1', $monMembre->getIpInscription());
|
|
// Niveau de droits
|
|
$this->assertEquals(UtilisateurObject::LEVEL_USER, $monMembre->getLevel());
|
|
// Nom
|
|
$this->assertEquals('username', $monMembre->getUserName());
|
|
$this->assertEquals(true, $monMembre->connexion($_POST['userName'], $_POST['userPassword']));
|
|
}
|
|
|
|
/**
|
|
* Modification du mail
|
|
* @depends testMembreCreerCompte
|
|
*/
|
|
public function testMembreModifierMail()
|
|
{
|
|
unset($_POST);
|
|
/**
|
|
* Injection des valeurs du formulaire
|
|
*/
|
|
$_POST['modifierMail'] = 1;
|
|
$_POST['userPasswordMail'] = 'password';
|
|
$_POST['userMail'] = 'john.doe@example.com';
|
|
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
|
|
|
/**
|
|
* Simulation d'une connexion
|
|
*/
|
|
$unMembre = new UtilisateurObject();
|
|
$this->assertEquals(true, $unMembre->connexion('username', $_POST['userPasswordMail']), "connexion avant");
|
|
|
|
/**
|
|
* Appel de la page
|
|
*/
|
|
ob_start();
|
|
require 'membre/monCompte.php';
|
|
ob_end_clean();
|
|
|
|
/**
|
|
* Récupération de l'utilisateur
|
|
*/
|
|
$monMembre = new UtilisateurObject(3);
|
|
|
|
/**
|
|
* Vérification des valeurs
|
|
*/
|
|
// Email
|
|
$this->assertEquals('john.doe@example.com', $monMembre->getEmail(), "getEmail");
|
|
$this->assertEquals(true, $monMembre->connexion('username', $_POST['userPasswordMail']), "connexion après");
|
|
}
|
|
|
|
/**
|
|
* Modification du mot de passe
|
|
* @depends testMembreModifierMail
|
|
*/
|
|
public function testMembreModifierPassword()
|
|
{
|
|
unset($_POST);
|
|
/**
|
|
* Injection des valeurs du formulaire
|
|
*/
|
|
$_POST['modifierPwd'] = 1;
|
|
$_POST['oldUserPassword'] = 'password';
|
|
$_POST['newUserPassword'] = 'monPassword';
|
|
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
|
|
|
/**
|
|
* Simulation d'une connexion
|
|
*/
|
|
$unMembre = new UtilisateurObject();
|
|
$this->assertEquals(true, $unMembre->connexion('username', $_POST['oldUserPassword']), "connexion avant");
|
|
|
|
/**
|
|
* Appel de la page
|
|
*/
|
|
ob_start();
|
|
require 'membre/monCompte.php';
|
|
ob_end_clean();
|
|
|
|
/**
|
|
* Récupération d'un objet
|
|
*/
|
|
$monMembre = new UtilisateurObject();
|
|
|
|
/**
|
|
* Vérification des valeurs
|
|
*/
|
|
$this->assertEquals(true, $monMembre->connexion('username', $_POST['newUserPassword']), "connexion");
|
|
$this->assertEquals(false, $monMembre->connexion('username', $_POST['oldUserPassword']), "connexion");
|
|
}
|
|
|
|
/**
|
|
* Suppression du compte sans cochage de la checkbox
|
|
* @depends testMembreModifierPassword
|
|
*/
|
|
public function testMembreSupprimerCompteRequiertCheckbox()
|
|
{
|
|
unset($_POST);
|
|
/**
|
|
* Injection des valeurs du formulaire
|
|
*/
|
|
$_POST['supprimerCompte'] = 1;
|
|
$_POST['userPasswordDelete'] = 'monPassword';
|
|
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
|
|
|
/**
|
|
* Simulation d'une connexion
|
|
*/
|
|
$unMembre = new UtilisateurObject();
|
|
$this->assertEquals(true, $unMembre->connexion('username', $_POST['userPasswordDelete']), "connexion avant");
|
|
|
|
/**
|
|
* Appel de la page
|
|
*/
|
|
ob_start();
|
|
require 'membre/monCompte.php';
|
|
ob_end_clean();
|
|
|
|
/**
|
|
* Récupération d'un objet
|
|
*/
|
|
$monMembre = new UtilisateurObject();
|
|
|
|
/**
|
|
* Vérification des valeurs
|
|
*/
|
|
$this->assertEquals(
|
|
true,
|
|
$monMembre->connexion('username', $_POST['userPasswordDelete']),
|
|
"connexion devrait être possible"
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Suppression du compte
|
|
* @depends testMembreSupprimerCompteRequiertCheckbox
|
|
*/
|
|
public function testMembreSupprimerCompte()
|
|
{
|
|
unset($_POST);
|
|
/**
|
|
* Injection des valeurs du formulaire
|
|
*/
|
|
$_POST['supprimerCompte'] = 1;
|
|
$_POST['userPasswordDelete'] = 'monPassword';
|
|
$_POST['confirmeDelete'] = 1;
|
|
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
|
|
|
/**
|
|
* Simulation d'une connexion
|
|
*/
|
|
$unMembre = new UtilisateurObject();
|
|
$this->assertEquals(true, $unMembre->connexion('username', $_POST['userPasswordDelete']), "connexion avant");
|
|
|
|
/**
|
|
* Appel de la page
|
|
*/
|
|
ob_start();
|
|
require 'membre/monCompte.php';
|
|
ob_end_clean();
|
|
|
|
/**
|
|
* Récupération d'un objet
|
|
*/
|
|
$monMembre = new UtilisateurObject();
|
|
|
|
/**
|
|
* Vérification des valeurs
|
|
*/
|
|
$this->assertEquals(
|
|
false,
|
|
$monMembre->connexion('username', $_POST['userPasswordDelete']),
|
|
"connexion ne devrait plus être possible"
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Connexion au compte créé lors de la création de la BDD
|
|
* @depends testMembreSupprimerCompte
|
|
*/
|
|
public function testConnexionCompteHistorique()
|
|
{
|
|
unset($_POST);
|
|
/**
|
|
* Injection des valeurs du formulaire
|
|
*/
|
|
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
|
/**
|
|
* Récupération d'un objet
|
|
*/
|
|
$monMembre = new UtilisateurObject();
|
|
|
|
/**
|
|
* Vérification des valeurs
|
|
*/
|
|
$this->assertEquals(
|
|
true,
|
|
$monMembre->connexion('admin', 'password'),
|
|
"connexion au compte créé à l'import de la BDD devrait être possible"
|
|
);
|
|
}
|
|
}
|