From 890fdeba160fa37c1d2603db688c720dde5081bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Guti=C3=A9rrez?= Date: Thu, 17 Mar 2016 21:18:28 +0100 Subject: [PATCH] CryptTrait tests --- src/Entities/AccessTokenEntity.php | 6 +- .../Interfaces/AccessTokenEntityInterface.php | 4 +- src/Grant/GrantTypeInterface.php | 8 +- tests/CryptTraitTest.php | 46 +++++++ tests/Grant/AbstractGrantTest.php | 4 +- tests/Grant/AuthCodeGrantTest.php | 124 ++++++++++-------- tests/Grant/ImplicitGrantTest.php | 67 ++++++---- tests/Grant/RefreshTokenGrantTest.php | 67 ++++++---- .../ResponseTypes/BearerResponseTypeTest.php | 20 +-- tests/Stubs/CryptTraitStub.php | 26 ++++ tests/{Utils => Stubs}/private.key | 0 tests/{Utils => Stubs}/public.key | 0 tests/Utils/KeyCryptTest.php | 34 ----- 13 files changed, 236 insertions(+), 170 deletions(-) create mode 100644 tests/CryptTraitTest.php create mode 100644 tests/Stubs/CryptTraitStub.php rename tests/{Utils => Stubs}/private.key (100%) rename tests/{Utils => Stubs}/public.key (100%) delete mode 100644 tests/Utils/KeyCryptTest.php diff --git a/src/Entities/AccessTokenEntity.php b/src/Entities/AccessTokenEntity.php index fc31a9fd..5b4b34a1 100644 --- a/src/Entities/AccessTokenEntity.php +++ b/src/Entities/AccessTokenEntity.php @@ -16,11 +16,11 @@ class AccessTokenEntity implements AccessTokenEntityInterface /** * Generate a JWT from the access token * - * @param string $pathToPrivateKey + * @param string $privateKeyPath * * @return string */ - public function convertToJWT($pathToPrivateKey) + public function convertToJWT($privateKeyPath) { return (new Builder()) ->setAudience($this->getClient()->getIdentifier()) @@ -30,7 +30,7 @@ class AccessTokenEntity implements AccessTokenEntityInterface ->setExpiration($this->getExpiryDateTime()->getTimestamp()) ->setSubject($this->getUserIdentifier()) ->set('scopes', $this->getScopes()) - ->sign(new Sha256(), new Key($pathToPrivateKey)) + ->sign(new Sha256(), new Key($privateKeyPath)) ->getToken(); } } diff --git a/src/Entities/Interfaces/AccessTokenEntityInterface.php b/src/Entities/Interfaces/AccessTokenEntityInterface.php index 884c0187..86ad1107 100644 --- a/src/Entities/Interfaces/AccessTokenEntityInterface.php +++ b/src/Entities/Interfaces/AccessTokenEntityInterface.php @@ -7,9 +7,9 @@ interface AccessTokenEntityInterface extends TokenInterface /** * Generate a JWT from the access token * - * @param string $pathToPrivateKey + * @param string $privateKeyPath * * @return string */ - public function convertToJWT($pathToPrivateKey); + public function convertToJWT($privateKeyPath); } diff --git a/src/Grant/GrantTypeInterface.php b/src/Grant/GrantTypeInterface.php index 8e7572c2..cb60bf90 100644 --- a/src/Grant/GrantTypeInterface.php +++ b/src/Grant/GrantTypeInterface.php @@ -89,14 +89,14 @@ interface GrantTypeInterface extends EmitterAwareInterface /** * Set the path to the private key. * - * @param string $pathToPrivateKey + * @param string $privateKeyPath */ - public function setPrivateKeyPath($pathToPrivateKey); + public function setPrivateKeyPath($privateKeyPath); /** * Set the path to the public key. * - * @param string $pathToPublicKey + * @param string $publicKeyPath */ - public function setPublicKeyPath($pathToPublicKey); + public function setPublicKeyPath($publicKeyPath); } diff --git a/tests/CryptTraitTest.php b/tests/CryptTraitTest.php new file mode 100644 index 00000000..fad2fdcf --- /dev/null +++ b/tests/CryptTraitTest.php @@ -0,0 +1,46 @@ +cryptStub = new CryptTraitStub; + } + + public function testEncryptDecrypt() + { + $payload = 'alex loves whisky'; + $encrypted = $this->cryptStub->doEncrypt($payload); + $plainText = $this->cryptStub->doDecrypt($encrypted); + + $this->assertNotEquals($payload, $encrypted); + $this->assertEquals($payload, $plainText); + } + + /** + * @expectedException \LogicException + */ + public function testBadPrivateKey() + { + $this->cryptStub->setPrivateKeyPath(__DIR__ . '/Stubs/public.key'); + $this->cryptStub->doEncrypt(''); + } + + /** + * @expectedException \LogicException + */ + public function testBadPublicKey() + { + $this->cryptStub->setPublicKeyPath(__DIR__ . '/Stubs/private.key'); + $this->cryptStub->doDecrypt(''); + } +} diff --git a/tests/Grant/AbstractGrantTest.php b/tests/Grant/AbstractGrantTest.php index 4820e3a2..5e71bdf7 100644 --- a/tests/Grant/AbstractGrantTest.php +++ b/tests/Grant/AbstractGrantTest.php @@ -23,8 +23,8 @@ class AbstractGrantTest extends \PHPUnit_Framework_TestCase { /** @var AbstractGrant $grantMock */ $grantMock = $this->getMockForAbstractClass(AbstractGrant::class); - $grantMock->setPathToPrivateKey('./private.key'); - $grantMock->setPathToPublicKey('./public.key'); + $grantMock->setPrivateKeyPath('./private.key'); + $grantMock->setPublicKeyPath('./public.key'); $grantMock->setEmitter(new Emitter()); } diff --git a/tests/Grant/AuthCodeGrantTest.php b/tests/Grant/AuthCodeGrantTest.php index 54973d8e..31cd2f53 100644 --- a/tests/Grant/AuthCodeGrantTest.php +++ b/tests/Grant/AuthCodeGrantTest.php @@ -12,8 +12,8 @@ use League\OAuth2\Server\Repositories\ClientRepositoryInterface; use League\OAuth2\Server\Repositories\RefreshTokenRepositoryInterface; use League\OAuth2\Server\Repositories\ScopeRepositoryInterface; use League\OAuth2\Server\Repositories\UserRepositoryInterface; -use League\OAuth2\Server\Utils\KeyCrypt; use LeagueTests\Stubs\ClientEntity; +use LeagueTests\Stubs\CryptTraitStub; use LeagueTests\Stubs\ScopeEntity; use LeagueTests\Stubs\StubResponseType; use LeagueTests\Stubs\UserEntity; @@ -22,6 +22,16 @@ use Zend\Diactoros\ServerRequest; class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase { + /** + * CryptTrait stub + */ + protected $cryptStub; + + public function setUp() + { + $this->cryptStub = new CryptTraitStub; + } + public function testGetIdentifier() { $grant = new AuthCodeGrant( @@ -78,8 +88,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase new \DateInterval('PT10M') ); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -92,9 +102,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => 123]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -133,8 +143,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase new \DateInterval('PT10M') ); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -147,9 +157,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => 123]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -193,8 +203,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase new \DateInterval('PT10M') ); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -207,9 +217,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => 123]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -244,8 +254,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase new \DateInterval('PT10M') ); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -258,9 +268,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => 123]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -299,8 +309,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase new \DateInterval('PT10M') ); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -313,9 +323,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => 123]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -360,8 +370,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase new \DateInterval('PT10M') ); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -410,8 +420,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase new \DateInterval('PT10M') ); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -424,9 +434,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => null]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -464,8 +474,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase new \DateInterval('PT10M') ); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -478,9 +488,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => null]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -520,8 +530,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase new \DateInterval('PT10M') ); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -534,9 +544,9 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => 123]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -587,8 +597,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase $grant->setScopeRepository($scopeRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); $grant->setRefreshTokenRepository($refreshTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [], @@ -603,7 +613,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'grant_type' => 'authorization_code', 'client_id' => 'foo', 'redirect_uri' => 'http://foo/bar', - 'code' => KeyCrypt::encrypt( + 'code' => $this->cryptStub->doEncrypt( json_encode( [ 'auth_code_id' => uniqid(), @@ -614,7 +624,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'redirect_uri' => 'http://foo/bar', ] ), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ] ); @@ -646,8 +656,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); $grant->setRefreshTokenRepository($refreshTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [], @@ -692,8 +702,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); $grant->setRefreshTokenRepository($refreshTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [], @@ -743,8 +753,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); $grant->setRefreshTokenRepository($refreshTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [], @@ -759,7 +769,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'grant_type' => 'authorization_code', 'client_id' => 'foo', 'redirect_uri' => 'http://foo/bar', - 'code' => KeyCrypt::encrypt( + 'code' => $this->cryptStub->doEncrypt( json_encode( [ 'auth_code_id' => uniqid(), @@ -770,7 +780,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'redirect_uri' => 'http://foo/bar', ] ), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ] ); @@ -813,8 +823,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); $grant->setRefreshTokenRepository($refreshTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [], @@ -829,7 +839,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'grant_type' => 'authorization_code', 'client_id' => 'foo', 'redirect_uri' => 'http://foo/bar', - 'code' => KeyCrypt::encrypt( + 'code' => $this->cryptStub->doEncrypt( json_encode( [ 'auth_code_id' => uniqid(), @@ -840,7 +850,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'redirect_uri' => 'http://foo/bar', ] ), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ] ); @@ -880,8 +890,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); $grant->setRefreshTokenRepository($refreshTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [], @@ -896,7 +906,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'grant_type' => 'authorization_code', 'client_id' => 'foo', 'redirect_uri' => 'http://foo/bar', - 'code' => KeyCrypt::encrypt( + 'code' => $this->cryptStub->doEncrypt( json_encode( [ 'auth_code_id' => uniqid(), @@ -907,7 +917,7 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase 'redirect_uri' => 'http://foo/bar', ] ), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ] ); @@ -947,8 +957,8 @@ class AuthCodeGrantTest extends \PHPUnit_Framework_TestCase $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); $grant->setRefreshTokenRepository($refreshTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [], diff --git a/tests/Grant/ImplicitGrantTest.php b/tests/Grant/ImplicitGrantTest.php index 5bc1156e..3c597978 100644 --- a/tests/Grant/ImplicitGrantTest.php +++ b/tests/Grant/ImplicitGrantTest.php @@ -7,7 +7,6 @@ use League\OAuth2\Server\Grant\ImplicitGrant; use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface; use League\OAuth2\Server\Repositories\ClientRepositoryInterface; use League\OAuth2\Server\Repositories\UserRepositoryInterface; -use League\OAuth2\Server\Utils\KeyCrypt; use LeagueTests\Stubs\ClientEntity; use LeagueTests\Stubs\StubResponseType; use LeagueTests\Stubs\UserEntity; @@ -16,6 +15,16 @@ use Zend\Diactoros\ServerRequest; class ImplicitGrantTest extends \PHPUnit_Framework_TestCase { + /** + * CryptTrait stub + */ + protected $cryptStub; + + public function setUp() + { + $this->cryptStub = new CryptTraitStub; + } + public function testGetIdentifier() { $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class)); @@ -60,8 +69,8 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase $grant = new ImplicitGrant($userRepositoryMock); $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -99,8 +108,8 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase public function testRespondToAuthorizationRequestMissingClientId() { $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class)); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -113,9 +122,9 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => 123]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -141,8 +150,8 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class)); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -155,9 +164,9 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => 123]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -191,8 +200,8 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class)); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -205,9 +214,9 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => 123]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -247,8 +256,8 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class)); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -292,8 +301,8 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class)); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -306,9 +315,9 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => null]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -341,8 +350,8 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class)); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -355,9 +364,9 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => 123]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ @@ -389,8 +398,8 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase $grant = new ImplicitGrant($this->getMock(UserRepositoryInterface::class)); $grant->setClientRepository($clientRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $request = new ServerRequest( [ @@ -403,9 +412,9 @@ class ImplicitGrantTest extends \PHPUnit_Framework_TestCase 'php://input', [], [ - 'oauth_authorize_request' => KeyCrypt::encrypt( + 'oauth_authorize_request' => $this->cryptStub->doEncrypt( json_encode(['user_id' => 123]), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ), ], [ diff --git a/tests/Grant/RefreshTokenGrantTest.php b/tests/Grant/RefreshTokenGrantTest.php index d6b63203..dc2056cb 100644 --- a/tests/Grant/RefreshTokenGrantTest.php +++ b/tests/Grant/RefreshTokenGrantTest.php @@ -9,7 +9,6 @@ use League\OAuth2\Server\Repositories\AccessTokenRepositoryInterface; use League\OAuth2\Server\Repositories\ClientRepositoryInterface; use League\OAuth2\Server\Repositories\RefreshTokenRepositoryInterface; use League\OAuth2\Server\Repositories\ScopeRepositoryInterface; -use League\OAuth2\Server\Utils\KeyCrypt; use LeagueTests\Stubs\ClientEntity; use LeagueTests\Stubs\ScopeEntity; use LeagueTests\Stubs\StubResponseType; @@ -17,6 +16,16 @@ use Zend\Diactoros\ServerRequest; class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase { + /** + * CryptTrait stub + */ + protected $cryptStub; + + public function setUp() + { + $this->cryptStub = new CryptTraitStub; + } + public function testGetIdentifier() { $refreshTokenRepositoryMock = $this->getMock(RefreshTokenRepositoryInterface::class); @@ -47,10 +56,10 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase $grant->setClientRepository($clientRepositoryMock); $grant->setScopeRepository($scopeRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); - $oldRefreshToken = KeyCrypt::encrypt( + $oldRefreshToken = $this->cryptStub->doEncrypt( json_encode( [ 'client_id' => 'foo', @@ -61,7 +70,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase 'expire_time' => time() + 3600, ] ), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ); $serverRequest = new ServerRequest(); @@ -103,10 +112,10 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); $grant->setScopeRepository($scopeRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); - $oldRefreshToken = KeyCrypt::encrypt( + $oldRefreshToken = $this->cryptStub->doEncrypt( json_encode( [ 'client_id' => 'foo', @@ -117,7 +126,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase 'expire_time' => time() + 3600, ] ), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ); $serverRequest = new ServerRequest(); @@ -164,10 +173,10 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); $grant->setScopeRepository($scopeRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); - $oldRefreshToken = KeyCrypt::encrypt( + $oldRefreshToken = $this->cryptStub->doEncrypt( json_encode( [ 'client_id' => 'foo', @@ -178,7 +187,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase 'expire_time' => time() + 3600, ] ), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ); $serverRequest = new ServerRequest(); @@ -213,8 +222,8 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase $grant = new RefreshTokenGrant($refreshTokenRepositoryMock); $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $serverRequest = new ServerRequest(); $serverRequest = $serverRequest->withParsedBody( @@ -246,8 +255,8 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase $grant = new RefreshTokenGrant($refreshTokenRepositoryMock); $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); $oldRefreshToken = 'foobar'; @@ -286,10 +295,10 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase $grant = new RefreshTokenGrant($refreshTokenRepositoryMock); $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); - $oldRefreshToken = KeyCrypt::encrypt( + $oldRefreshToken = $this->cryptStub->doEncrypt( json_encode( [ 'client_id' => 'bar', @@ -300,7 +309,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase 'expire_time' => time() + 3600, ] ), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ); $serverRequest = new ServerRequest(); @@ -334,10 +343,10 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase $grant = new RefreshTokenGrant($refreshTokenRepositoryMock); $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); - $oldRefreshToken = KeyCrypt::encrypt( + $oldRefreshToken = $this->cryptStub->doEncrypt( json_encode( [ 'client_id' => 'foo', @@ -348,7 +357,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase 'expire_time' => time() - 3600, ] ), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ); $serverRequest = new ServerRequest(); @@ -383,10 +392,10 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase $grant = new RefreshTokenGrant($refreshTokenRepositoryMock); $grant->setClientRepository($clientRepositoryMock); $grant->setAccessTokenRepository($accessTokenRepositoryMock); - $grant->setPathToPublicKey('file://' . __DIR__ . '/../Utils/public.key'); - $grant->setPathToPrivateKey('file://' . __DIR__ . '/../Utils/private.key'); + $grant->setPublicKeyPath('file://' . __DIR__ . '/../Stubs/public.key'); + $grant->setPrivateKeyPath('file://' . __DIR__ . '/../Stubs/private.key'); - $oldRefreshToken = KeyCrypt::encrypt( + $oldRefreshToken = $this->cryptStub->doEncrypt( json_encode( [ 'client_id' => 'foo', @@ -397,7 +406,7 @@ class RefreshTokenGrantTest extends \PHPUnit_Framework_TestCase 'expire_time' => time() + 3600, ] ), - 'file://' . __DIR__ . '/../Utils/private.key' + 'file://' . __DIR__ . '/../Stubs/private.key' ); $serverRequest = new ServerRequest(); diff --git a/tests/ResponseTypes/BearerResponseTypeTest.php b/tests/ResponseTypes/BearerResponseTypeTest.php index ce7620ea..fb9b91ca 100644 --- a/tests/ResponseTypes/BearerResponseTypeTest.php +++ b/tests/ResponseTypes/BearerResponseTypeTest.php @@ -20,8 +20,8 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock(); $responseType = new BearerTokenResponse( - 'file://' . __DIR__ . '/../Utils/private.key', - 'file://' . __DIR__ . '/../Utils/public.key', + 'file://' . __DIR__ . '/../Stubs/private.key', + 'file://' . __DIR__ . '/../Stubs/public.key', $accessTokenRepositoryMock ); @@ -66,8 +66,8 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock(); $responseType = new BearerTokenResponse( - 'file://' . __DIR__ . '/../Utils/private.key', - 'file://' . __DIR__ . '/../Utils/public.key', + 'file://' . __DIR__ . '/../Stubs/private.key', + 'file://' . __DIR__ . '/../Stubs/public.key', $accessTokenRepositoryMock ); @@ -108,8 +108,8 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock(); $responseType = new BearerTokenResponse( - 'file://' . __DIR__ . '/../Utils/private.key', - 'file://' . __DIR__ . '/../Utils/public.key', + 'file://' . __DIR__ . '/../Stubs/private.key', + 'file://' . __DIR__ . '/../Stubs/public.key', $accessTokenRepositoryMock ); @@ -154,8 +154,8 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase $responseType = new BearerTokenResponse( - 'file://' . __DIR__ . '/../Utils/private.key', - 'file://' . __DIR__ . '/../Utils/public.key', + 'file://' . __DIR__ . '/../Stubs/private.key', + 'file://' . __DIR__ . '/../Stubs/public.key', $accessTokenRepositoryMock ); @@ -198,8 +198,8 @@ class BearerResponseTypeTest extends \PHPUnit_Framework_TestCase $accessTokenRepositoryMock = $this->getMockBuilder(AccessTokenRepositoryInterface::class)->getMock(); $responseType = new BearerTokenResponse( - 'file://' . __DIR__ . '/../Utils/private.key', - 'file://' . __DIR__ . '/../Utils/public.key', + 'file://' . __DIR__ . '/../Stubs/private.key', + 'file://' . __DIR__ . '/../Stubs/public.key', $accessTokenRepositoryMock ); diff --git a/tests/Stubs/CryptTraitStub.php b/tests/Stubs/CryptTraitStub.php new file mode 100644 index 00000000..583a851c --- /dev/null +++ b/tests/Stubs/CryptTraitStub.php @@ -0,0 +1,26 @@ +setPrivateKeyPath('file://' . __DIR__ . '/private.key'); + $this->setPublicKeyPath('file://' . __DIR__ . '/public.key'); + } + + public function doEncrypt($unencryptedData) + { + return $this->encrypt($unencryptedData); + } + + public function doDecrypt($encryptedData) + { + return $this->decrypt($encryptedData); + } +} diff --git a/tests/Utils/private.key b/tests/Stubs/private.key similarity index 100% rename from tests/Utils/private.key rename to tests/Stubs/private.key diff --git a/tests/Utils/public.key b/tests/Stubs/public.key similarity index 100% rename from tests/Utils/public.key rename to tests/Stubs/public.key diff --git a/tests/Utils/KeyCryptTest.php b/tests/Utils/KeyCryptTest.php deleted file mode 100644 index 3fa1f17c..00000000 --- a/tests/Utils/KeyCryptTest.php +++ /dev/null @@ -1,34 +0,0 @@ -assertNotEquals($payload, $encrypted); - $this->assertEquals($payload, $plainText); - } - - /** - * @expectedException \LogicException - */ - public function testBadPrivateKey() - { - KeyCrypt::encrypt('', 'file://' . __DIR__ . '/public.key'); - } - - /** - * @expectedException \LogicException - */ - public function testBadPublicKey() - { - KeyCrypt::decrypt('', 'file://' . __DIR__ . '/private.key'); - } -}