mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-24 10:23:17 +00:00
Some refactor to add ApiAccount version
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
namespace Alchemy\Tests\Phrasea\Functional;
|
namespace Alchemy\Tests\Phrasea\Functional;
|
||||||
|
use Alchemy\Phrasea\ControllerProvider\Api\V2;
|
||||||
use Alchemy\Phrasea\Model\Entities\ApiAccount;
|
use Alchemy\Phrasea\Model\Entities\ApiAccount;
|
||||||
use Alchemy\Phrasea\Model\Entities\ApiApplication;
|
use Alchemy\Phrasea\Model\Entities\ApiApplication;
|
||||||
use Alchemy\Phrasea\Model\Entities\User;
|
use Alchemy\Phrasea\Model\Entities\User;
|
||||||
|
|||||||
@@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
namespace Alchemy\Tests\Phrasea\Model\Manipulator;
|
namespace Alchemy\Tests\Phrasea\Model\Manipulator;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\ControllerProvider\Api\V2;
|
||||||
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
||||||
|
use Alchemy\Phrasea\Model\Manipulator\ApiAccountManipulator;
|
||||||
use Alchemy\Phrasea\Model\Manipulator\ApiApplicationManipulator;
|
use Alchemy\Phrasea\Model\Manipulator\ApiApplicationManipulator;
|
||||||
use Alchemy\Phrasea\Model\Entities\ApiApplication;
|
use Alchemy\Phrasea\Model\Entities\ApiApplication;
|
||||||
|
|
||||||
@@ -57,7 +59,8 @@ class ApiApplicationManipulatorTest extends \PhraseanetTestCase
|
|||||||
|
|
||||||
public function testDelete()
|
public function testDelete()
|
||||||
{
|
{
|
||||||
$manipulator = new ApiApplicationManipulator(self::$DI['app']['orm.em'], self::$DI['app']['repo.api-applications'], self::$DI['app']['random.medium']);
|
$app = $this->getApplication();
|
||||||
|
$manipulator = new ApiApplicationManipulator($app['orm.em'], $app['repo.api-applications'], $app['random.medium']);
|
||||||
$application = $manipulator->create(
|
$application = $manipulator->create(
|
||||||
'desktop-app2',
|
'desktop-app2',
|
||||||
ApiApplication::DESKTOP_TYPE,
|
ApiApplication::DESKTOP_TYPE,
|
||||||
@@ -65,15 +68,17 @@ class ApiApplicationManipulatorTest extends \PhraseanetTestCase
|
|||||||
'http://desktop-app2-url.net'
|
'http://desktop-app2-url.net'
|
||||||
);
|
);
|
||||||
$applicationSave = clone $application;
|
$applicationSave = clone $application;
|
||||||
$countBefore = count(self::$DI['app']['repo.api-applications']->findAll());
|
$countBefore = count($app['repo.api-applications']->findAll());
|
||||||
$account = self::$DI['app']['manipulator.api-account']->create($application, self::$DI['user']);
|
/** @var ApiAccountManipulator $apiAccountManipulator */
|
||||||
|
$apiAccountManipulator = $app['manipulator.api-account'];
|
||||||
|
$account = $apiAccountManipulator->create($application, self::$DI['user'], V2::VERSION);
|
||||||
$accountMem = clone $account;
|
$accountMem = clone $account;
|
||||||
self::$DI['app']['manipulator.api-oauth-token']->create($account);
|
$app['manipulator.api-oauth-token']->create($account);
|
||||||
$manipulator->delete($application);
|
$manipulator->delete($application);
|
||||||
$this->assertGreaterThan(count(self::$DI['app']['repo.api-applications']->findAll()), $countBefore);
|
$this->assertGreaterThan(count($app['repo.api-applications']->findAll()), $countBefore);
|
||||||
$accounts = self::$DI['app']['repo.api-accounts']->findByUserAndApplication(self::$DI['user'], $applicationSave);
|
$accounts = $app['repo.api-accounts']->findByUserAndApplication(self::$DI['user'], $applicationSave);
|
||||||
$this->assertEquals(0, count($accounts));
|
$this->assertEquals(0, count($accounts));
|
||||||
$tokens = self::$DI['app']['repo.api-oauth-tokens']->findOauthTokens($accountMem);
|
$tokens = $app['repo.api-oauth-tokens']->findOauthTokens($accountMem);
|
||||||
$this->assertEquals(0, count($tokens));
|
$this->assertEquals(0, count($tokens));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,13 @@
|
|||||||
|
|
||||||
namespace Alchemy\Tests\Phrasea\Model\Manipulator;
|
namespace Alchemy\Tests\Phrasea\Model\Manipulator;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\Application;
|
||||||
|
use Alchemy\Phrasea\ControllerProvider\Api\V2;
|
||||||
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
use Alchemy\Phrasea\Exception\InvalidArgumentException;
|
||||||
|
use Alchemy\Phrasea\Model\Entities\ApiAccount;
|
||||||
|
use Alchemy\Phrasea\Model\Manipulator\ApiAccountManipulator;
|
||||||
use Alchemy\Phrasea\Model\Manipulator\ApiOauthCodeManipulator;
|
use Alchemy\Phrasea\Model\Manipulator\ApiOauthCodeManipulator;
|
||||||
|
use Alchemy\Phrasea\Model\Repositories\ApiOauthCodeRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group functional
|
* @group functional
|
||||||
@@ -13,32 +18,40 @@ class ApiOauthCodeManipulatorTest extends \PhraseanetTestCase
|
|||||||
{
|
{
|
||||||
public function testCreate()
|
public function testCreate()
|
||||||
{
|
{
|
||||||
$manipulator = new ApiOauthCodeManipulator(self::$DI['app']['orm.em'], self::$DI['app']['repo.api-oauth-codes'], self::$DI['app']['random.medium']);
|
$app = $this->getApplication();
|
||||||
$nbCodes = count(self::$DI['app']['repo.api-oauth-codes']->findAll());
|
$oauthCodesRepository = $this->getOAuthCodesRepository($app);
|
||||||
$account = self::$DI['app']['manipulator.api-account']->create(self::$DI['oauth2-app-user'], self::$DI['user']);
|
|
||||||
|
$manipulator = new ApiOauthCodeManipulator($app['orm.em'], $oauthCodesRepository, $app['random.medium']);
|
||||||
|
$nbCodes = count($oauthCodesRepository->findAll());
|
||||||
|
$account = $this->getApiAccount($app);
|
||||||
$manipulator->create($account, 'http://www.redirect.url', time() + 30);
|
$manipulator->create($account, 'http://www.redirect.url', time() + 30);
|
||||||
$this->assertGreaterThan($nbCodes, count(self::$DI['app']['repo.api-oauth-codes']->findAll()));
|
$this->assertGreaterThan($nbCodes, count($oauthCodesRepository->findAll()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDelete()
|
public function testDelete()
|
||||||
{
|
{
|
||||||
$manipulator = new ApiOauthCodeManipulator(self::$DI['app']['orm.em'], self::$DI['app']['repo.api-oauth-codes'], self::$DI['app']['random.medium']);
|
$app = $this->getApplication();
|
||||||
$account = self::$DI['app']['manipulator.api-account']->create(self::$DI['oauth2-app-user'], self::$DI['user']);
|
$oauthCodesRepository = $this->getOAuthCodesRepository($app);
|
||||||
|
|
||||||
|
$manipulator = new ApiOauthCodeManipulator($app['orm.em'], $oauthCodesRepository, $app['random.medium']);
|
||||||
|
$account = $this->getApiAccount($app);
|
||||||
$code = $manipulator->create($account, 'http://www.redirect.url', time() + 30);
|
$code = $manipulator->create($account, 'http://www.redirect.url', time() + 30);
|
||||||
$countBefore = count(self::$DI['app']['repo.api-oauth-codes']->findAll());
|
$countBefore = count($oauthCodesRepository->findAll());
|
||||||
$manipulator->delete($code);
|
$manipulator->delete($code);
|
||||||
$this->assertGreaterThan(count(self::$DI['app']['repo.api-oauth-codes']->findAll()), $countBefore);
|
$this->assertGreaterThan(count($oauthCodesRepository->findAll()), $countBefore);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testUpdate()
|
public function testUpdate()
|
||||||
{
|
{
|
||||||
|
$app = $this->getApplication();
|
||||||
|
$oauthCodesRepository = $this->getOAuthCodesRepository($app);
|
||||||
|
|
||||||
$manipulator = new ApiOauthCodeManipulator(self::$DI['app']['orm.em'], self::$DI['app']['repo.api-oauth-codes'], self::$DI['app']['random.medium']);
|
$manipulator = new ApiOauthCodeManipulator($app['orm.em'], $oauthCodesRepository, $app['random.medium']);
|
||||||
$account = self::$DI['app']['manipulator.api-account']->create(self::$DI['oauth2-app-user'], self::$DI['user']);
|
$account = $this->getApiAccount($app);
|
||||||
$code = $manipulator->create($account, 'http://www.redirect.url', $t = time() + 30);
|
$code = $manipulator->create($account, 'http://www.redirect.url', $t = time() + 30);
|
||||||
$code->setExpires(time() + 40);
|
$code->setExpires(time() + 40);
|
||||||
$manipulator->update($code);
|
$manipulator->update($code);
|
||||||
$code = self::$DI['app']['repo.api-oauth-codes']->find($code->getCode());
|
$code = $oauthCodesRepository->find($code->getCode());
|
||||||
$this->assertGreaterThan($t, $code->getExpires());
|
$this->assertGreaterThan($t, $code->getExpires());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,8 +60,11 @@ class ApiOauthCodeManipulatorTest extends \PhraseanetTestCase
|
|||||||
*/
|
*/
|
||||||
public function testSetRedirectUriBadArgumentException()
|
public function testSetRedirectUriBadArgumentException()
|
||||||
{
|
{
|
||||||
$manipulator = new ApiOauthCodeManipulator(self::$DI['app']['orm.em'], self::$DI['app']['repo.api-oauth-codes'], self::$DI['app']['random.medium']);
|
$app = $this->getApplication();
|
||||||
$account = self::$DI['app']['manipulator.api-account']->create(self::$DI['oauth2-app-user'], self::$DI['user']);
|
$oauthCodesRepository = $this->getOAuthCodesRepository($app);
|
||||||
|
|
||||||
|
$manipulator = new ApiOauthCodeManipulator($app['orm.em'], $oauthCodesRepository, $app['random.medium']);
|
||||||
|
$account = $this->getApiAccount($app);
|
||||||
$code = $manipulator->create($account, 'http://www.redirect.url', time() + 30);
|
$code = $manipulator->create($account, 'http://www.redirect.url', time() + 30);
|
||||||
try {
|
try {
|
||||||
$manipulator->setRedirectUri($code, 'bad-url');
|
$manipulator->setRedirectUri($code, 'bad-url');
|
||||||
@@ -57,4 +73,32 @@ class ApiOauthCodeManipulatorTest extends \PhraseanetTestCase
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Application $app
|
||||||
|
* @return ApiOauthCodeRepository
|
||||||
|
*/
|
||||||
|
private function getOAuthCodesRepository(Application $app)
|
||||||
|
{
|
||||||
|
return $app['repo.api-oauth-codes'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Application $app
|
||||||
|
* @return ApiAccountManipulator
|
||||||
|
*/
|
||||||
|
private function getApiAccountManipulator(Application $app)
|
||||||
|
{
|
||||||
|
return $app['manipulator.api-account'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Application $app
|
||||||
|
* @return ApiAccount
|
||||||
|
*/
|
||||||
|
private function getApiAccount(Application $app)
|
||||||
|
{
|
||||||
|
return $this->getApiAccountManipulator($app)
|
||||||
|
->create(self::$DI['oauth2-app-user'], self::$DI['user'], V2::VERSION);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,12 @@
|
|||||||
|
|
||||||
namespace Alchemy\Tests\Phrasea\Model\Manipulator;
|
namespace Alchemy\Tests\Phrasea\Model\Manipulator;
|
||||||
|
|
||||||
|
use Alchemy\Phrasea\Application;
|
||||||
|
use Alchemy\Phrasea\ControllerProvider\Api\V2;
|
||||||
|
use Alchemy\Phrasea\Model\Entities\ApiAccount;
|
||||||
|
use Alchemy\Phrasea\Model\Manipulator\ApiAccountManipulator;
|
||||||
use Alchemy\Phrasea\Model\Manipulator\ApiOauthTokenManipulator;
|
use Alchemy\Phrasea\Model\Manipulator\ApiOauthTokenManipulator;
|
||||||
|
use Alchemy\Phrasea\Model\Repositories\ApiOauthTokenRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group functional
|
* @group functional
|
||||||
@@ -12,42 +17,82 @@ class ApiOauthTokenManipulatorTest extends \PhraseanetTestCase
|
|||||||
{
|
{
|
||||||
public function testCreate()
|
public function testCreate()
|
||||||
{
|
{
|
||||||
$manipulator = new ApiOauthTokenManipulator(self::$DI['app']['orm.em'], self::$DI['app']['repo.api-oauth-tokens'], self::$DI['app']['random.medium']);
|
$app = $this->getApplication();
|
||||||
$nbTokens = count(self::$DI['app']['repo.api-oauth-tokens']->findAll());
|
$tokenRepository = $this->getTokenRepository($app);
|
||||||
$account = self::$DI['app']['manipulator.api-account']->create(self::$DI['oauth2-app-user'], self::$DI['user']);
|
|
||||||
|
$manipulator = new ApiOauthTokenManipulator($app['orm.em'], $tokenRepository, $app['random.medium']);
|
||||||
|
$nbTokens = count($tokenRepository->findAll());
|
||||||
|
$account = $this->createAccount($app);
|
||||||
$manipulator->create($account);
|
$manipulator->create($account);
|
||||||
$this->assertGreaterThan($nbTokens, count(self::$DI['app']['repo.api-oauth-tokens']->findAll()));
|
$this->assertGreaterThan($nbTokens, count($tokenRepository->findAll()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDelete()
|
public function testDelete()
|
||||||
{
|
{
|
||||||
$manipulator = new ApiOauthTokenManipulator(self::$DI['app']['orm.em'], self::$DI['app']['repo.api-oauth-tokens'], self::$DI['app']['random.medium']);
|
$app = $this->getApplication();
|
||||||
$account = self::$DI['app']['manipulator.api-account']->create(self::$DI['oauth2-app-user'], self::$DI['user']);
|
$tokenRepository = $this->getTokenRepository($app);
|
||||||
|
|
||||||
|
$manipulator = new ApiOauthTokenManipulator($app['orm.em'], $tokenRepository, $app['random.medium']);
|
||||||
|
$account = $this->createAccount($app);
|
||||||
$token = $manipulator->create($account);
|
$token = $manipulator->create($account);
|
||||||
$countBefore = count(self::$DI['app']['repo.api-oauth-tokens']->findAll());
|
$countBefore = count($tokenRepository->findAll());
|
||||||
$manipulator->delete($token);
|
$manipulator->delete($token);
|
||||||
$this->assertGreaterThan(count(self::$DI['app']['repo.api-oauth-tokens']->findAll()), $countBefore);
|
$this->assertGreaterThan(count($tokenRepository->findAll()), $countBefore);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testUpdate()
|
public function testUpdate()
|
||||||
{
|
{
|
||||||
|
$app = $this->getApplication();
|
||||||
|
$tokenRepository = $this->getTokenRepository($app);
|
||||||
|
|
||||||
$manipulator = new ApiOauthTokenManipulator(self::$DI['app']['orm.em'], self::$DI['app']['repo.api-oauth-tokens'], self::$DI['app']['random.medium']);
|
$manipulator = new ApiOauthTokenManipulator($app['orm.em'], $tokenRepository, $app['random.medium']);
|
||||||
$account = self::$DI['app']['manipulator.api-account']->create(self::$DI['oauth2-app-user'], self::$DI['user']);
|
$account = $this->createAccount($app);
|
||||||
$token = $manipulator->create($account);
|
$token = $manipulator->create($account);
|
||||||
$token->setSessionId(123456);
|
$token->setSessionId(123456);
|
||||||
$manipulator->update($token);
|
$manipulator->update($token);
|
||||||
$token = self::$DI['app']['repo.api-oauth-tokens']->find($token->getOauthToken());
|
$token = $tokenRepository->find($token->getOauthToken());
|
||||||
$this->assertEquals(123456, $token->getSessionId());
|
$this->assertEquals(123456, $token->getSessionId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRenew()
|
public function testRenew()
|
||||||
{
|
{
|
||||||
$manipulator = new ApiOauthTokenManipulator(self::$DI['app']['orm.em'], self::$DI['app']['repo.api-oauth-tokens'], self::$DI['app']['random.medium']);
|
$app = $this->getApplication();
|
||||||
$account = self::$DI['app']['manipulator.api-account']->create(self::$DI['oauth2-app-user'], self::$DI['user']);
|
$tokenRepository = $this->getTokenRepository($app);
|
||||||
|
|
||||||
|
$manipulator = new ApiOauthTokenManipulator($app['orm.em'], $tokenRepository, $app['random.medium']);
|
||||||
|
$account = $this->createAccount($app);
|
||||||
$token = $manipulator->create($account);
|
$token = $manipulator->create($account);
|
||||||
$oauthTokenBefore = $token->getOauthToken();
|
$oauthTokenBefore = $token->getOauthToken();
|
||||||
$manipulator->renew($token);
|
$manipulator->renew($token);
|
||||||
$this->assertNotEquals($oauthTokenBefore, $token->getOauthToken());
|
$this->assertNotEquals($oauthTokenBefore, $token->getOauthToken());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Application $app
|
||||||
|
* @return ApiAccountManipulator
|
||||||
|
*/
|
||||||
|
private function getApiAccountManipulator(Application $app)
|
||||||
|
{
|
||||||
|
return $app['manipulator.api-account'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Application $app
|
||||||
|
* @return ApiOauthTokenRepository
|
||||||
|
*/
|
||||||
|
private function getTokenRepository(Application $app)
|
||||||
|
{
|
||||||
|
$tokenRepository = $app['repo.api-oauth-tokens'];
|
||||||
|
return $tokenRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Application $app
|
||||||
|
* @return ApiAccount
|
||||||
|
*/
|
||||||
|
private function createAccount(Application $app)
|
||||||
|
{
|
||||||
|
return $this->getApiAccountManipulator($app)
|
||||||
|
->create(self::$DI['oauth2-app-user'], self::$DI['user'], V2::VERSION);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user