assertArrayHasKey(UserInteractiveLoginEvent::class, $events); $methodName = $events[UserInteractiveLoginEvent::class]; $this->assertTrue(method_exists(LastLoginSubscriber::class, $methodName)); $this->assertArrayHasKey(LoginSuccessEvent::class, $events); $methodName = $events[LoginSuccessEvent::class]; $this->assertTrue(method_exists(LastLoginSubscriber::class, $methodName)); } public function testOnImplicitLogin() { $repository = $this->createMock(UserRepository::class); $repository->expects($this->once())->method('saveUser'); $sut = new LastLoginSubscriber($repository); $user = new User(); self::assertNull($user->getLastLogin()); $event = new UserInteractiveLoginEvent($user); $sut->onImplicitLogin($event); self::assertNotNull($user->getLastLogin()); } public function testOnLoginSuccessWithUser() { $repository = $this->createMock(UserRepository::class); $repository->expects($this->once())->method('saveUser'); $sut = new LastLoginSubscriber($repository); $user = new User(); self::assertNull($user->getLastLogin()); $authenticator = $this->createMock(AuthenticatorInterface::class); $passport = $this->createMock(Passport::class); $passport->method('getUser')->willReturn($user); $event = new LoginSuccessEvent($authenticator, $passport, new UsernamePasswordToken($user, 'sdf'), new Request(), null, 'xyz'); $sut->onFormLogin($event); self::assertNotNull($user->getLastLogin()); } }