public function refresh(Token $token) : Token { $newToken = new Token(Uuid::uuid4(), $this->generatePassCode(), $token->getUserUuid(), $this->generateExpires()); $this->tokenRepository->create($newToken); $this->tokenRepository->delete($token); return $newToken; }
public function create(Token $token) { $this->executeSql(' INSERT INTO tokens (token_uuid, pass_code, user_uuid, expires) VALUES (:token_uuid, :pass_code, :user_uuid, :expires) ', ['token_uuid' => $token->getUuid()->getBytes(), 'pass_code' => $token->getPassCode(), 'user_uuid' => $token->getUserUuid()->getBytes(), 'expires' => $token->getExpires()->format('Y-m-d H:i:s')]); }
public function it_can_refresh_a_token(Token $token) { $token->getUserUuid()->willReturn($userUuid = Uuid::uuid4()); $this->tokenRepository->create(new Argument\Token\TypeToken(Token::class)); $this->tokenRepository->delete($token); $newToken = $this->refresh($token); $newToken->shouldHaveType(Token::class); $newToken->getUserUuid()->shouldReturn($userUuid); }
public function it_can_insert_a_token(Token $token, \PDOStatement $statement) { $token->getUuid()->willReturn($uuid = Uuid::uuid4()); $token->getPassCode()->willReturn($passCode = bin2hex(random_bytes(20))); $token->getUserUuid()->willReturn($userUuid = Uuid::uuid4()); $token->getExpires()->willReturn($expires = new \DateTimeImmutable('+42 seconds')); $this->pdo->prepare(new Argument\Token\StringContainsToken('INSERT INTO tokens'))->willReturn($statement); $statement->execute(['token_uuid' => $uuid->getBytes(), 'pass_code' => $passCode, 'user_uuid' => $userUuid->getBytes(), 'expires' => $expires->format('Y-m-d H:i:s')])->shouldBeCalled(); $this->create($token); }