First commit of AuthCode grant and entity

This commit is contained in:
Alex Bilbie 2014-03-09 20:03:05 +00:00
parent 2a524efff5
commit c60b29d201
3 changed files with 130 additions and 1 deletions

View File

@ -176,7 +176,7 @@ abstract class AbstractToken
* @param array $unformated Array of \League\OAuth2\Server\Entity\Scope
* @return array
*/
private function formatScopes($unformated = [])
protected function formatScopes($unformated = [])
{
$scopes = [];
foreach ($unformated as $scope) {

View File

@ -0,0 +1,78 @@
<?php
/**
* OAuth 2.0 Auth code entity
*
* @package league/oauth2-server
* @author Alex Bilbie <hello@alexbilbie.com>
* @copyright Copyright (c) Alex Bilbie
* @license http://mit-license.org/
* @link http://github.com/php-loep/oauth2-server
*/
namespace League\OAuth2\Server\Entity;
use League\OAuth2\Server\Storage\SessionStorageInterface;
use League\OAuth2\Server\Storage\AccessTokenInterface;
use League\OAuth2\Server\Util\SecureKey;
use League\OAuth2\Server\Exception\InvalidAccessTokenException;
use Symfony\Component\HttpFoundation\ParameterBag;
/**
* Access token entity class
*/
class AuthCode extends AbstractToken
{
/**
* {@inheritdoc}
*/
public function getSession()
{
if ($this->session instanceof Session) {
return $this->session;
}
$this->session = $this->server->getStorage('session')->getByAuthCode($this->token);
return $this->session;
}
/**
* {@inheritdoc}
*/
public function getScopes()
{
if ($this->scopes === null) {
$this->scopes = $this->formatScopes(
$this->server->getStorage('auth_code')->getScopes($this->getToken())
);
}
return $this->scopes;
}
/**
* {@inheritdoc}
*/
public function save()
{
$this->server->getStorage('auth_code')->create(
$this->getToken(),
$this->getExpireTime(),
$this->getSession()->getId()
);
// Associate the scope with the token
foreach ($this->getScopes() as $scope) {
$this->server->getStorage('auth_code')->associateScope($this->getToken(), $scope->getId());
}
return $this;
}
/**
* {@inheritdoc}
*/
public function expire()
{
$this->server->getStorage('auth_code')->delete($this->getToken());
}
}

View File

@ -0,0 +1,51 @@
<?php
namespace LeagueTests\Entities;
use League\OAuth2\Server\Entity\Scope;
use League\OAuth2\Server\Entity\Session;
use League\OAuth2\Server\Entity\AuthCode;
use League\OAuth2\Server\AuthorizationServer as Authorization;
use \Mockery as M;
class AuthCodeTest extends \PHPUnit_Framework_TestCase
{
function testSave()
{
$server = new Authorization();
$authCodeStorage = M::mock('League\OAuth2\Server\Storage\AuthCodeInterface');
$authCodeStorage->shouldReceive('create');
$authCodeStorage->shouldReceive('associateScope');
$authCodeStorage->shouldReceive('setServer');
$authCodeStorage->shouldReceive('getScopes')->andReturn([
(new Scope($server))->setId('foo')
]);
$sessionStorage = M::mock('League\OAuth2\Server\Storage\SessionInterface');
$sessionStorage->shouldReceive('getByAuthCode')->andReturn(
(new Session($server))
);
$sessionStorage->shouldReceive('setServer');
$server->setAuthCodeStorage($authCodeStorage);
$server->setSessionStorage($sessionStorage);
$entity = new AuthCode($server);
$this->assertTrue($entity->save() instanceof AuthCode);
}
function testExpire()
{
$server = new Authorization();
$authCodeStorage = M::mock('League\OAuth2\Server\Storage\AuthCodeInterface');
$authCodeStorage->shouldReceive('delete');
$authCodeStorage->shouldReceive('setServer');
$server->setAuthCodeStorage($authCodeStorage);
$entity = new AuthCode($server);
$this->assertSame($entity->expire(), null);
}
}