Compare commits
5 Commits
master
...
issue_020_
Author | SHA1 | Date |
---|---|---|
|
4af6a741eb | 1 year ago |
|
98e7c22cb9 | 1 year ago |
|
afc107ef93 | 1 year ago |
|
3c8594d73c | 1 year ago |
|
6359969856 | 1 year ago |
@ -0,0 +1 @@
|
|||||||
|
{"version":1,"defects":{"MaClasseTest::testMethode":5,"toto::testMethode":5,"AuthServiceTest::testLoginWithValidCredentials":5,"AuthServiceTest::testLoginWithInvalidUsername":5,"AuthServiceTest::testLoginWithInvalidPassword":5,"AuthServiceTest::testRegisterNewUser":5,"AuthServiceTest::testRegisterWithExistingUser":4,"AuthServiceTest::testLogoutUserMethodNotImplemented":5},"times":{"MaClasseTest::testMethode":0.03,"toto::testMethode":0.037,"AuthServiceTest::testLoginWithValidCredentials":0.088,"AuthServiceTest::testLoginWithInvalidUsername":0.005,"AuthServiceTest::testLoginWithInvalidPassword":0.004,"AuthServiceTest::testRegisterNewUser":0.084,"AuthServiceTest::testRegisterWithExistingUser":0,"AuthServiceTest::testLogoutUserMethodNotImplemented":0.005}}
|
@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
use PHPUnit\Framework\TestCase;
|
|
||||||
|
|
||||||
class MaClasseTest extends TestCase
|
|
||||||
{
|
|
||||||
public function testMethode()
|
|
||||||
{
|
|
||||||
echo "TEST MEC";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,117 @@
|
|||||||
|
<?php
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use Manager\UserManager;
|
||||||
|
use Model\User;
|
||||||
|
use Model\Coach;
|
||||||
|
use Model\Athlete;
|
||||||
|
use Network\IAuthService;
|
||||||
|
|
||||||
|
class UserManagerTest extends TestCase
|
||||||
|
{
|
||||||
|
private $authService;
|
||||||
|
private $userManager;
|
||||||
|
|
||||||
|
protected function setUp(): void
|
||||||
|
{
|
||||||
|
$this->authService = $this->createMock(IAuthService::class);
|
||||||
|
$this->userManager = new UserManager($this->authService);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLoginSuccess()
|
||||||
|
{
|
||||||
|
$loginUser = 'john.doe@example.com';
|
||||||
|
$passwordUser = 'password123';
|
||||||
|
$mockUser = new User(1, "Doe", "John", $loginUser, $passwordUser, 'M', 1.80, 75, new \DateTime("1985-05-15"), new Coach());
|
||||||
|
|
||||||
|
$this->authService->expects($this->once())
|
||||||
|
->method('login')
|
||||||
|
->with($loginUser, $passwordUser)
|
||||||
|
->willReturn($mockUser);
|
||||||
|
|
||||||
|
$result = $this->userManager->login($loginUser, $passwordUser);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
$this->assertSame($mockUser, $this->userManager->currentUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testLoginFailure()
|
||||||
|
//Ne fonctionne pas : Error: Typed property Manager\UserManager::$currentUser must not be accessed before initialization
|
||||||
|
{
|
||||||
|
$loginUser = 'john.doe@example.com';
|
||||||
|
$passwordUser = 'wrong_password';
|
||||||
|
|
||||||
|
// Configure authService to return null during login
|
||||||
|
$this->authService->expects($this->once())
|
||||||
|
->method('login')
|
||||||
|
->with($loginUser, $passwordUser)
|
||||||
|
->willReturn(null);
|
||||||
|
|
||||||
|
// Ensure currentUser is null before attempting to access it
|
||||||
|
$this->assertNull($this->userManager->currentUser);
|
||||||
|
|
||||||
|
$result = $this->userManager->login($loginUser, $passwordUser);
|
||||||
|
|
||||||
|
$this->assertFalse($result);
|
||||||
|
$this->assertNull($this->userManager->currentUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRegisterSuccess()
|
||||||
|
{
|
||||||
|
$loginUser = 'new.user@example.com';
|
||||||
|
$passwordUser = 'newpassword123';
|
||||||
|
$data = [
|
||||||
|
'nom' => 'New',
|
||||||
|
'prenom' => 'User',
|
||||||
|
'taille' => 1.75,
|
||||||
|
'poids' => 70,
|
||||||
|
'roleName' => 'Athlete',
|
||||||
|
'sexe' => 'M',
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->authService->expects($this->once())
|
||||||
|
->method('register')
|
||||||
|
->with($loginUser, $passwordUser, $data)
|
||||||
|
->willReturn(true);
|
||||||
|
|
||||||
|
$result = $this->userManager->register($loginUser, $passwordUser, $data);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
/* Manque les Exception
|
||||||
|
public function testRegisterValidationException(){
|
||||||
|
$loginUser = 'invalid.user@example.com';
|
||||||
|
$passwordUser = 'invalidpassword123';
|
||||||
|
$data = [
|
||||||
|
'nom' => 'Invalid',
|
||||||
|
'prenom' => 'User',
|
||||||
|
'taille' => 1.75,
|
||||||
|
'poids' => 70,
|
||||||
|
'roleName' => 'Athlete',
|
||||||
|
'sexe' => 'M',
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->expectException(\Exception::class);
|
||||||
|
$this->userManager->register($loginUser, $passwordUser, $data);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
/* Manque la fonction de déconnexion
|
||||||
|
public function testDeconnecterSuccess(){
|
||||||
|
$this->authService->expects($this->once())
|
||||||
|
->method('logoutUser');
|
||||||
|
|
||||||
|
$result = $this->userManager->deconnecter();
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testDeconnecterFailure(){
|
||||||
|
$this->authService->expects($this->once())
|
||||||
|
->method('logoutUser');
|
||||||
|
|
||||||
|
$result = $this->userManager->deconnecter();
|
||||||
|
|
||||||
|
$this->assertFalse($result);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
@ -0,0 +1,115 @@
|
|||||||
|
<?php
|
||||||
|
use Model\User;
|
||||||
|
use Model\Role;
|
||||||
|
use Model\Coach;
|
||||||
|
use Model\Athlete;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class UserTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testGettersAndSetters()
|
||||||
|
{
|
||||||
|
$role = new Coach();
|
||||||
|
|
||||||
|
$user = new User(
|
||||||
|
1,
|
||||||
|
'John',
|
||||||
|
'Doe',
|
||||||
|
'john@example.com',
|
||||||
|
'hashed_password',
|
||||||
|
'M',
|
||||||
|
1.80,
|
||||||
|
75.0,
|
||||||
|
new \DateTime('1990-01-01'),
|
||||||
|
$role,
|
||||||
|
);
|
||||||
|
|
||||||
|
// Test getters
|
||||||
|
$this->assertSame(1, $user->getId());
|
||||||
|
$this->assertSame('John', $user->getNom());
|
||||||
|
$this->assertSame('Doe', $user->getPrenom());
|
||||||
|
$this->assertSame('john@example.com', $user->getEmail());
|
||||||
|
$this->assertSame('hashed_password', $user->getMotDePasse());
|
||||||
|
$this->assertSame('M', $user->getSexe());
|
||||||
|
$this->assertSame(1.80, $user->getTaille());
|
||||||
|
$this->assertSame(75.0, $user->getPoids());
|
||||||
|
$this->assertInstanceOf(\DateTime::class, $user->getDateNaissance());
|
||||||
|
$this->assertSame($role, $user->getRole());
|
||||||
|
|
||||||
|
// Test setters
|
||||||
|
$user->setId(2);
|
||||||
|
$this->assertSame(2, $user->getId());
|
||||||
|
|
||||||
|
$user->setNom('Jane');
|
||||||
|
$this->assertSame('Jane', $user->getNom());
|
||||||
|
|
||||||
|
$user->setPrenom('Doe');
|
||||||
|
$this->assertSame('Doe', $user->getPrenom());
|
||||||
|
|
||||||
|
$user->setEmail('jane@example.com');
|
||||||
|
$this->assertSame('jane@example.com', $user->getEmail());
|
||||||
|
|
||||||
|
$user->setMotDePasse('new_hashed_password');
|
||||||
|
$this->assertSame('new_hashed_password', $user->getMotDePasse());
|
||||||
|
|
||||||
|
$user->setSexe('F');
|
||||||
|
$this->assertSame('F', $user->getSexe());
|
||||||
|
|
||||||
|
$user->setTaille(1.60);
|
||||||
|
$this->assertSame(1.60, $user->getTaille());
|
||||||
|
|
||||||
|
$user->setPoids(60.0);
|
||||||
|
$this->assertSame(60.0, $user->getPoids());
|
||||||
|
|
||||||
|
$newDateNaissance = new \DateTime('1995-01-01');
|
||||||
|
$user->setDateNaissance($newDateNaissance);
|
||||||
|
$this->assertSame($newDateNaissance, $user->getDateNaissance());
|
||||||
|
|
||||||
|
$newRole = new Athlete();
|
||||||
|
$user->setRole($newRole);
|
||||||
|
$this->assertSame($newRole, $user->getRole());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testIsValidPassword()
|
||||||
|
{
|
||||||
|
$role = new Coach();
|
||||||
|
|
||||||
|
$user = new User(
|
||||||
|
1,
|
||||||
|
'John',
|
||||||
|
'Doe',
|
||||||
|
'john@example.com',
|
||||||
|
'test123',
|
||||||
|
'H',
|
||||||
|
1.80,
|
||||||
|
75.0,
|
||||||
|
new \DateTime('1990-01-01'),
|
||||||
|
$role
|
||||||
|
);
|
||||||
|
|
||||||
|
// Assuming the hashed password is 'hashed_password'
|
||||||
|
$this->assertTrue($user->isValidPassword('test123'));
|
||||||
|
$this->assertFalse($user->isValidPassword('test1234'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testToString()
|
||||||
|
{
|
||||||
|
$role = new Coach();
|
||||||
|
|
||||||
|
$user = new User(
|
||||||
|
1,
|
||||||
|
'John',
|
||||||
|
'Doe',
|
||||||
|
'john@example.com',
|
||||||
|
'hashed_password',
|
||||||
|
'M',
|
||||||
|
1.80,
|
||||||
|
75.0,
|
||||||
|
new \DateTime('1990-01-01'),
|
||||||
|
$role
|
||||||
|
);
|
||||||
|
|
||||||
|
$expectedString = "Athlete [ID: 1, Nom: John, Prénom: Doe, Email: john@example.com]";
|
||||||
|
$this->assertSame($expectedString, (string)$user);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,92 @@
|
|||||||
|
<?php
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use Stub\UserRepository;
|
||||||
|
use Model\User;
|
||||||
|
use Model\Coach;
|
||||||
|
use Model\Athlete;
|
||||||
|
|
||||||
|
class UserRepositoryTest extends TestCase
|
||||||
|
{
|
||||||
|
private $userRepository;
|
||||||
|
|
||||||
|
protected function setUp(): void
|
||||||
|
{
|
||||||
|
$this->userRepository = new UserRepository();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetItemById()
|
||||||
|
{
|
||||||
|
$user = $this->userRepository->getItemById(1);
|
||||||
|
$this->assertInstanceOf(User::class, $user);
|
||||||
|
$this->assertSame("Doe", $user->getNom());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetItemByEmail()
|
||||||
|
{
|
||||||
|
$user = $this->userRepository->getItemByEmail("jane.smith@example.com");
|
||||||
|
$this->assertInstanceOf(User::class, $user);
|
||||||
|
$this->assertSame("Smith", $user->getNom());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetNbItems()
|
||||||
|
{
|
||||||
|
$count = $this->userRepository->GetNbItems();
|
||||||
|
$this->assertSame(5, $count);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetItems()
|
||||||
|
{
|
||||||
|
$items = $this->userRepository->GetItems(0, 2);
|
||||||
|
$this->assertCount(2, $items);
|
||||||
|
$this->assertInstanceOf(User::class, $items[0]);
|
||||||
|
$this->assertInstanceOf(User::class, $items[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetItemsByName()
|
||||||
|
{
|
||||||
|
$items = $this->userRepository->GetItemsByName("John", 0, 2);
|
||||||
|
$this->assertCount(1, $items);
|
||||||
|
$this->assertInstanceOf(User::class, $items[0]);
|
||||||
|
$this->assertSame("John", $items[0]->getPrenom());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetItemByName()
|
||||||
|
{
|
||||||
|
$item = $this->userRepository->GetItemByName("Doe", 0, 2);
|
||||||
|
$this->assertInstanceOf(User::class, $item);
|
||||||
|
$this->assertSame("Doe", $item->getNom());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateItem()
|
||||||
|
{
|
||||||
|
$oldUser = $this->userRepository->getItemById(1);
|
||||||
|
$newUser = new User(1, "UpdatedDoe", "John", "john.doe@example.com", "newpassword", 'M', 1.80, 75, new \DateTime("1985-05-15"), new Coach());
|
||||||
|
|
||||||
|
$this->userRepository->UpdateItem($oldUser, $newUser);
|
||||||
|
|
||||||
|
$updatedUser = $this->userRepository->getItemById(1);
|
||||||
|
$this->assertSame("UpdatedDoe", $updatedUser->getNom());
|
||||||
|
$this->assertSame("newpassword", $updatedUser->getMotDePasse());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testAddItem()
|
||||||
|
{
|
||||||
|
$newUser = new User(6, "NewUser", "Test", "new.user@example.com", "newpassword123", 'F', 1.70, 60, new \DateTime("1990-01-01"), new Athlete());
|
||||||
|
|
||||||
|
$this->userRepository->AddItem($newUser);
|
||||||
|
|
||||||
|
$addedUser = $this->userRepository->getItemById(6);
|
||||||
|
$this->assertInstanceOf(User::class, $addedUser);
|
||||||
|
$this->assertSame("NewUser", $addedUser->getNom());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testDeleteItem()
|
||||||
|
{
|
||||||
|
$userToDelete = $this->userRepository->getItemById(1);
|
||||||
|
|
||||||
|
$result = $this->userRepository->DeleteItem($userToDelete);
|
||||||
|
|
||||||
|
$this->assertTrue($result);
|
||||||
|
$this->assertNull($this->userRepository->getItemById(1));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,93 @@
|
|||||||
|
<?php
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use Stub\AuthService;
|
||||||
|
use Model\Coach;
|
||||||
|
use Model\Athlete;
|
||||||
|
|
||||||
|
use Model\User;
|
||||||
|
use Shared\Exception\NotImplementedException;
|
||||||
|
use Network\IAuthService;
|
||||||
|
use Shared\HashPassword;
|
||||||
|
use Stub\UserRepository;
|
||||||
|
|
||||||
|
class AuthServiceTest extends TestCase{
|
||||||
|
public function testLoginWithValidCredentials() {
|
||||||
|
// Arrange
|
||||||
|
$userRepository = new UserRepository();
|
||||||
|
$passwordHasher = new HashPassword();
|
||||||
|
$authService = new AuthService($userRepository, $passwordHasher);
|
||||||
|
|
||||||
|
// Create a user for testing
|
||||||
|
$user = new User(6, "Truc", "Test", "truc.test@example.com", "test123", "M", 1.75, 80, new \DateTime("2000-01-01"), new Athlete);
|
||||||
|
$userRepository->addItem($user);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
$result = $authService->login($user->getNom(), "test123");
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
$this->assertInstanceOf(User::class, $result);
|
||||||
|
// Add more assertions if needed
|
||||||
|
}
|
||||||
|
public function testLoginWithInvalidUsername() {
|
||||||
|
// Arrange
|
||||||
|
$userRepository = new UserRepository();
|
||||||
|
$passwordHasher = new HashPassword();
|
||||||
|
$authService = new AuthService($userRepository, $passwordHasher);
|
||||||
|
|
||||||
|
// Act and Assert
|
||||||
|
$this->expectException(\Exception::class);
|
||||||
|
$authService->login("Machin", "password123");
|
||||||
|
}
|
||||||
|
public function testLoginWithInvalidPassword() {
|
||||||
|
// Arrange
|
||||||
|
$userRepository = new UserRepository();
|
||||||
|
$passwordHasher = new HashPassword();
|
||||||
|
$authService = new AuthService($userRepository, $passwordHasher);
|
||||||
|
|
||||||
|
// Create a user for testing
|
||||||
|
$user = new User(6, "Truc", "Test", "truc.test@example.com", "test123", "M", 1.75, 80, new \DateTime("2000-01-01"), new Athlete);
|
||||||
|
$userRepository->addItem($user);
|
||||||
|
|
||||||
|
// Act and Assert
|
||||||
|
$this->assertNull($authService->login($user->getNom(), "machin"));
|
||||||
|
}
|
||||||
|
public function testRegisterNewUser() {
|
||||||
|
// Arrange
|
||||||
|
$userRepository = new UserRepository();
|
||||||
|
$passwordHasher = new HashPassword();
|
||||||
|
$authService = new AuthService($userRepository, $passwordHasher);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
$result = $authService->register("truc.test@example.com", "test123", array("prenom"=>"Truc", "nom"=>"Test", "email"=>"truc.test@example.com", "sexe"=>"M","poids"=>1.75, "taille"=>80,"dateNaissance"=>new \DateTime("2000-01-01"), "roleName"=>"Athlete"));
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
$this->assertTrue($result);
|
||||||
|
// Add more assertions if needed
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
public function testRegisterWithExistingUser() {
|
||||||
|
// Arrange
|
||||||
|
$userRepository = new UserRepository();
|
||||||
|
$passwordHasher = new HashPassword();
|
||||||
|
$authService = new AuthService($userRepository, $passwordHasher);
|
||||||
|
|
||||||
|
// Create an existing user for testing
|
||||||
|
$existingUser = new User(6, "Truc", "Test", "truc.test@example.com", "test123", "M", 1.75, 80, new \DateTime("2000-01-01"), new Athlete);
|
||||||
|
$userRepository->addItem($existingUser);
|
||||||
|
|
||||||
|
// Act and Assert
|
||||||
|
$this->expectException(\Exception::class);
|
||||||
|
$authService->register($existingUser->getNom(), "test123", array("prenom"=>"Truc", "nom"=>"Test", "email"=>"truc.test@example.com", "sexe"=>"M","poids"=>1.75, "taille"=>80,"dateNaissance"=>new \DateTime("2000-01-01"), "roleName"=>"Athlete"));
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
public function testLogoutUserMethodNotImplemented() {
|
||||||
|
// Arrange
|
||||||
|
$userRepository = new UserRepository();
|
||||||
|
$passwordHasher = new HashPassword();
|
||||||
|
$authService = new AuthService($userRepository, $passwordHasher);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
$this->expectOutputString('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! logout method not implemented !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
|
||||||
|
$authService->logoutUser();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue