null, 'username' => null, ]; public function testGetLoginUrl(): void { $router = $this->createMock(RouterInterface::class); $router->expects($this->once()) ->method('generate') ->with('bolt_login') ->willReturn('test_route'); $res = $this->getTestObj(null, $router, null, null)->start($this->createMock(Request::class)); $this->assertSame('test_route', $res->getTargetUrl()); } public function testGetUser(): void { $userRepository = $this->createConfiguredMock(UserRepository::class, [ 'findOneBy' => $this->createMock(User::class), ]); $csrfTokenManager = $this->createConfiguredMock(CsrfTokenManagerInterface::class, [ 'isTokenValid' => true, ]); $res = $this->getTestObj($userRepository, null, $csrfTokenManager, null)->getUser(self::TEST_TOKEN, $this->createMock(UserProviderInterface::class)); $this->assertInstanceOf(User::class, $res); } public function testGetUserThrows(): void { $csrfTokenManager = $this->createConfiguredMock(CsrfTokenManagerInterface::class, [ 'isTokenValid' => false, ]); $this->expectException(InvalidCsrfTokenException::class); $this->getTestObj(null, null, $csrfTokenManager, null)->getUser(self::TEST_TOKEN, $this->createMock(UserProviderInterface::class)); } private function getTestObj(?UserRepository $userRepository, ?RouterInterface $router, ?CsrfTokenManagerInterface $csrfTokenManager, ?UserPasswordEncoderInterface $userPasswordEncoder): LoginFormAuthenticator { return new LoginFormAuthenticator( $userRepository ?? $this->createMock(UserRepository::class), $router ?? $this->createMock(RouterInterface::class), $csrfTokenManager ?? $this->createMock(CsrfTokenManagerInterface::class), $userPasswordEncoder ?? $this->createMock(UserPasswordEncoderInterface::class) ); } }