*/ namespace ImageHebergTests; use ImageHeberg\ImageObject; use ImageHeberg\MaBDD; use ImageHeberg\HelperAdmin; use ImageHeberg\MiniatureObject; use ImageHeberg\HelperImage; use ImageHeberg\HelperSysteme; use ImageHeberg\RessourceInterface; use ImageHeberg\RessourceObject; use ImageHeberg\SessionObject; use ImageHeberg\UtilisateurObject; use PDO; use PHPUnit\Framework\TestCase; class MembreTest extends TestCase { /** * Fonction requise par l'extension Database * @return mixed */ public function getConnection(): mixed { $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(): PHPUnit_Extensions_Database_DataSet_DefaultDataSet { 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' ); } }