diff options
author | 2020-10-06 11:22:15 -0400 | |
---|---|---|
committer | 2020-10-06 11:22:15 -0400 | |
commit | 4a2d3a0b7596731e11ef9257138653bec81d6fd3 (patch) | |
tree | 0e33fdfd38e791cc9ffe46f11f954a7dce86d618 /OAuth/tests/phpunit/Repository | |
parent | OpenIDConnect: Fix newly protected function (diff) | |
download | extensions-4a2d3a0b7596731e11ef9257138653bec81d6fd3.tar.gz extensions-4a2d3a0b7596731e11ef9257138653bec81d6fd3.tar.bz2 extensions-4a2d3a0b7596731e11ef9257138653bec81d6fd3.zip |
Add OAuth for API access
Signed-off-by: Brian Evans <grknight@gentoo.org>
Diffstat (limited to 'OAuth/tests/phpunit/Repository')
3 files changed, 129 insertions, 0 deletions
diff --git a/OAuth/tests/phpunit/Repository/AccessTokenRepositoryTest.php b/OAuth/tests/phpunit/Repository/AccessTokenRepositoryTest.php new file mode 100644 index 00000000..084c30b3 --- /dev/null +++ b/OAuth/tests/phpunit/Repository/AccessTokenRepositoryTest.php @@ -0,0 +1,52 @@ +<?php + +namespace MediaWiki\Extensions\OAuth\Tests\Repository; + +use MediaWiki\Extensions\OAuth\Entity\AccessTokenEntity; +use MediaWiki\Extensions\OAuth\Repository\AccessTokenRepository; +use MediaWiki\Extensions\OAuth\Tests\Entity\Mock_ClientEntity; +use MediaWikiTestCase; + +/** + * @covers \MediaWiki\Extensions\OAuth\Repository\AccessTokenRepository + * @group Database + */ +class AccessTokenRepositoryTest extends MediaWikiTestCase { + protected $accessToken; + protected $accessTokenRepo; + + protected $tablesUsed = [ 'oauth2_access_tokens' ]; + + protected function setUp() : void { + parent::setUp(); + + $this->accessToken = new AccessTokenEntity( + Mock_ClientEntity::newMock( $this->getTestUser()->getUser() ), [] + ); + $identifier = bin2hex( random_bytes( 40 ) ); + $this->accessToken->setIdentifier( $identifier ); + $this->accessToken->setExpiryDateTime( + ( new \DateTimeImmutable() )->add( new \DateInterval( 'PT1H' ) ) + ); + + $this->accessTokenRepo = new AccessTokenRepository(); + } + + public function testPersistingToken() { + $this->accessTokenRepo->persistNewAccessToken( $this->accessToken ); + + $this->assertFalse( + $this->accessTokenRepo->isAccessTokenRevoked( $this->accessToken->getIdentifier() ), + 'Access token should not be revoked' + ); + } + + public function testRevokingToken() { + $this->accessTokenRepo->revokeAccessToken( $this->accessToken->getIdentifier() ); + + $this->assertTrue( + $this->accessTokenRepo->isAccessTokenRevoked( $this->accessToken->getIdentifier() ), + 'Access token should be revoked' + ); + } +} diff --git a/OAuth/tests/phpunit/Repository/AuthCodeRepositoryTest.php b/OAuth/tests/phpunit/Repository/AuthCodeRepositoryTest.php new file mode 100644 index 00000000..2d2dc431 --- /dev/null +++ b/OAuth/tests/phpunit/Repository/AuthCodeRepositoryTest.php @@ -0,0 +1,47 @@ +<?php + +namespace MediaWiki\Extensions\OAuth\Tests\Repository; + +use MediaWiki\Extensions\OAuth\Repository\AuthCodeRepository; +use MediaWiki\Extensions\OAuth\Tests\Entity\Mock_ClientEntity; +use MediaWikiTestCase; + +/** + * @covers \MediaWiki\Extensions\OAuth\Repository\AuthCodeRepository + */ +class AuthCodeRepositoryTest extends MediaWikiTestCase { + protected $authCodeToken; + protected $authCodeTokenRepo; + + protected function setUp() : void { + parent::setUp(); + + $this->authCodeTokenRepo = AuthCodeRepository::factory(); + $this->authCodeToken = $this->authCodeTokenRepo->getNewAuthCode(); + $this->authCodeToken->setIdentifier( bin2hex( random_bytes( 20 ) ) ); + $this->authCodeToken->setClient( + Mock_ClientEntity::newMock( $this->getTestUser()->getUser() ) + ); + $this->authCodeToken->setExpiryDateTime( + ( new \DateTimeImmutable() )->add( new \DateInterval( 'PT1H' ) ) + ); + } + + public function testPersistingToken() { + $this->authCodeTokenRepo->persistNewAuthCode( $this->authCodeToken ); + + $this->assertFalse( + $this->authCodeTokenRepo->isAuthCodeRevoked( $this->authCodeToken->getIdentifier() ), + 'AuthCode token must be persisted' + ); + } + + public function testRevokingToken() { + $this->authCodeTokenRepo->revokeAuthCode( $this->authCodeToken->getIdentifier() ); + + $this->assertTrue( + $this->authCodeTokenRepo->isAuthCodeRevoked( $this->authCodeToken->getIdentifier() ), + 'AuthCode token should be revoked' + ); + } +} diff --git a/OAuth/tests/phpunit/Repository/ScopeRepositoryTest.php b/OAuth/tests/phpunit/Repository/ScopeRepositoryTest.php new file mode 100644 index 00000000..41196aef --- /dev/null +++ b/OAuth/tests/phpunit/Repository/ScopeRepositoryTest.php @@ -0,0 +1,30 @@ +<?php + +namespace MediaWiki\Extensions\OAuth\Tests\Repository; + +use MediaWiki\Extensions\OAuth\Entity\ScopeEntity; +use MediaWiki\Extensions\OAuth\Repository\ScopeRepository; +use MediaWikiTestCase; + +/** + * @covers \MediaWiki\Extensions\OAuth\Repository\ScopeRepository + */ +class ScopeRepositoryTest extends MediaWikiTestCase { + public function testScopes() { + $repo = new ScopeRepository(); + + $this->assertInstanceOf( + ScopeEntity::class, $repo->getScopeEntityByIdentifier( 'editpage' ), + 'Scope \"editpage\" should be a valid scope' + ); + $this->assertInstanceOf( + ScopeEntity::class, $repo->getScopeEntityByIdentifier( 'mwoauth-authonlyprivate' ), + 'Scope \"mwoauth-authonlyprivate\" should be a valid scope' + ); + + $this->assertNotInstanceOf( + ScopeEntity::class, $repo->getScopeEntityByIdentifier( 'dummynonexistent' ), + 'Scope \"dummynonexistent\" should not be a valid scope' + ); + } +} |