diff --git a/Sources/tests/units/model/UserManagerTest.php b/Sources/tests/units/model/UserManagerTest.php new file mode 100644 index 00000000..ae2ef0ec --- /dev/null +++ b/Sources/tests/units/model/UserManagerTest.php @@ -0,0 +1,116 @@ +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() + { + $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); + } +*/ +}