/** * @param string $username * @param string $password * @return AccessToken|null */ public function invoke($username, $password) { $user = $this->findUser($username); if (!$user) { return false; } if ($user->getEncodedPassword() !== $this->passwordEncoder->encode($password)) { return false; } $token = $this->tokenGenerator->generate(); $period = $this->now() + self::PERIOD_HOURS * 3600; $accessToken = new AccessToken(); $accessToken->setUser($user)->setToken($token)->setPeriod($period); $this->accessTokenRepository->add($accessToken); $this->entityManager->flush(); return $accessToken; }
/** * @test */ public function failIfAccessTokenIsExpired() { $userId = 42; $tokenString = "2hKUWekAQlAlNteA2D1gNhXLarQPDoLweuWREVen"; $now = 1234567890; $period = $now - 1; $user = new User(); $accessToken = new AccessToken(); $accessToken->setUser($user)->setPeriod($period); $accessTokenRepo = $this->getMock("RepositoryMock"); $em = $this->getEntityManagerMock(array("getRepository")); $em->expects($this->once())->method("getRepository")->with($this->equalTo(EntityConstant::ACCESS_TOKEN))->will($this->returnValue($accessTokenRepo)); $useCase = $this->getMockBuilder('Kumatch\\BBSAPI\\UseCase\\UserTokenAuthorization')->setConstructorArgs(array($em))->setMethods(array("now", "findAccessToken"))->getMock(); $useCase->expects($this->once())->method("findAccessToken")->with($this->equalTo($userId), $this->equalTo($tokenString))->will($this->returnValue(null)); /** @var UserTokenAuthorization $useCase */ $this->assertNull($useCase->invoke($userId, $tokenString)); }