Revert interface change so class can be extende

This commit is contained in:
sephster 2018-11-15 22:22:08 +00:00
parent a61c6a318a
commit 443d7c485a
No known key found for this signature in database
GPG Key ID: 077754CA23023F4F
2 changed files with 18 additions and 22 deletions

View File

@ -52,7 +52,7 @@ class AuthorizationServer implements EmitterAwareInterface
/**
* @var ResponseTypeInterface
*/
protected $responseTypePrototype;
protected $responseType;
/**
* @var ClientRepositoryInterface
@ -87,7 +87,7 @@ class AuthorizationServer implements EmitterAwareInterface
* @param ScopeRepositoryInterface $scopeRepository
* @param CryptKey|string $privateKey
* @param string|Key $encryptionKey
* @param null|ResponseTypeInterface $responseTypePrototype
* @param null|ResponseTypeInterface $responseType
*/
public function __construct(
ClientRepositoryInterface $clientRepository,
@ -95,7 +95,7 @@ class AuthorizationServer implements EmitterAwareInterface
ScopeRepositoryInterface $scopeRepository,
$privateKey,
$encryptionKey,
ResponseTypeInterface $responseTypePrototype = null
ResponseTypeInterface $responseType = null
) {
$this->clientRepository = $clientRepository;
$this->accessTokenRepository = $accessTokenRepository;
@ -108,19 +108,19 @@ class AuthorizationServer implements EmitterAwareInterface
$this->privateKey = $privateKey;
$this->encryptionKey = $encryptionKey;
if ($responseTypePrototype === null) {
$responseTypePrototype = new BearerTokenResponse();
if ($responseType === null) {
$responseType = new BearerTokenResponse();
} else {
$responseTypePrototype = clone $responseTypePrototype;
$responseType = clone $responseType;
}
if ($responseTypePrototype instanceof AbstractResponseType) {
$responseTypePrototype->setPrivateKey($this->privateKey);
if ($responseType instanceof AbstractResponseType) {
$responseType->setPrivateKey($this->privateKey);
}
$responseTypePrototype->setEncryptionKey($this->encryptionKey);
$responseType->setEncryptionKey($this->encryptionKey);
$this->responseTypePrototype = $responseTypePrototype;
$this->responseType = $responseType;
}
/**
@ -200,7 +200,7 @@ class AuthorizationServer implements EmitterAwareInterface
}
$tokenResponse = $grantType->respondToAccessTokenRequest(
$request,
$this->newResponseType(),
$this->getResponseType(),
$this->grantTypeAccessTokenTTL[$grantType->getIdentifier()]
);
@ -217,9 +217,9 @@ class AuthorizationServer implements EmitterAwareInterface
*
* @return ResponseTypeInterface
*/
protected function newResponseType()
protected function getResponseType()
{
return clone $this->responseTypePrototype;
return clone $this->responseType;
}
/**

View File

@ -91,7 +91,7 @@ class AuthorizationServerTest extends TestCase
$this->assertEquals(200, $response->getStatusCode());
}
public function testNewDefaultResponseType()
public function testGetResponseType()
{
$clientRepository = $this->getMockBuilder(ClientRepositoryInterface::class)->getMock();
@ -104,17 +104,13 @@ class AuthorizationServerTest extends TestCase
);
$abstractGrantReflection = new \ReflectionClass($server);
$method = $abstractGrantReflection->getMethod('newResponseType');
$method = $abstractGrantReflection->getMethod('getResponseType');
$method->setAccessible(true);
$responseTypeA = $method->invoke($server);
$responseTypeB = $method->invoke($server);
$this->assertInstanceOf(BearerTokenResponse::class, $responseTypeA);
$this->assertInstanceOf(BearerTokenResponse::class, $responseTypeB);
$this->assertNotSame($responseTypeA, $responseTypeB);
$this->assertInstanceOf(BearerTokenResponse::class, $method->invoke($server));
}
public function testNewResponseTypeFromPrototype()
public function testMultipleRequestsGetDifferentResponseTypeInstances()
{
$privateKey = 'file://' . __DIR__ . '/Stubs/private.key';
$encryptionKey = 'file://' . __DIR__ . '/Stubs/public.key';
@ -144,7 +140,7 @@ class AuthorizationServerTest extends TestCase
);
$abstractGrantReflection = new \ReflectionClass($server);
$method = $abstractGrantReflection->getMethod('newResponseType');
$method = $abstractGrantReflection->getMethod('getResponseType');
$method->setAccessible(true);
$responseTypeA = $method->invoke($server);