image-heberg/__tests/membreTest.php
2018-05-09 00:45:48 +02:00

315 lines
No EOL
8.9 KiB
PHP

<?php
/*
* Copyright 2008-2018 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/>
*/
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/configV2.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::levelAdmin, $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';
/**
* 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';
/**
* 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::levelUser, $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");
}
}