/**
  * Create a new token (and generate the token)
  *
  * @param string                  $redirectUri
  * @param TokenOwnerInterface     $owner
  * @param Client                  $client
  * @param string|string[]|Scope[] $scopes
  * @return AuthorizationCode
  * @throws OAuth2Exception
  */
 public function createToken($redirectUri, $owner, $client, $scopes) : AuthorizationCode
 {
     if (empty($scopes)) {
         $scopes = $this->scopeService->getDefaultScopes();
     } else {
         $this->validateTokenScopes($scopes);
     }
     do {
         $token = AuthorizationCode::createNewAuthorizationCode($this->serverOptions->getAuthorizationCodeTtl(), $redirectUri, $owner, $client, $scopes);
     } while ($this->tokenRepository->tokenExists($token->getToken()));
     return $this->tokenRepository->save($token);
 }
 /**
  * @todo I don't get this check
  */
 public function testDoNotSupportLongLiveToken()
 {
     $authorizationCode = AuthorizationCode::createNewAuthorizationCode(0, 'http://www.example.com', null, null, 'read write');
     $this->assertTrue($authorizationCode->isExpired());
 }