PHPUnit Cleanup

This commit is contained in:
Romain Neutron
2012-01-11 20:51:45 +01:00
parent 4791311089
commit e9d3e66cd8
3 changed files with 0 additions and 558 deletions

View File

@@ -1,41 +0,0 @@
<?php
require_once __DIR__ . '/../../../PhraseanetWebTestCaseAuthenticatedAbstract.class.inc';
require_once __DIR__ . '/../../../../Alchemy/Phrasea/Application/OAuth2.php';
use Silex\WebTestCase;
use Symfony\Component\HttpFoundation\Response;
class ApplicationOauth2Test extends \PhraseanetWebTestCaseAuthenticatedAbstract
{
protected $client;
protected static $need_records = false;
public function createApplication()
{
return require __DIR__ . '/../../../../Alchemy/Phrasea/Application/OAuth2.php';
}
public function setUp()
{
parent::setUp();
$this->client = $this->createClient();
}
public function tearDown()
{
$this->feed->delete();
parent::tearDown();
}
public function testRouteSlash()
{
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
}

View File

@@ -1,333 +0,0 @@
<?php
require_once __DIR__ . '/../PhraseanetWebTestCaseAuthenticatedAbstract.class.inc';
require_once __DIR__ . '/../../bootstrap.php';
require_once __DIR__ . '/Bridge_datas.inc';
use Silex\WebTestCase;
use Symfony\Component\HttpFoundation\Response;
class Bridge_Application extends PhraseanetWebTestCaseAuthenticatedAbstract
{
public static $account = null;
public static $api = null;
protected $client;
public static function setUpBeforeClass()
{
parent::setUpBeforeClass();
// try
// {
// self::$api = Bridge_Api::get_by_api_name(appbox::get_instance(), 'youtube');
// }
// catch (Bridge_Exception_ApiNotFound $e)
// {
// self::$api = Bridge_Api::create(appbox::get_instance(), 'youtube');
// }
//
// try
// {
// self::$account = Bridge_Account::load_account_from_distant_id(appbox::get_instance(), self::$api, self::$user, 'kirikoo');
// }
// catch (Bridge_Exception_AccountNotFound $e)
// {
// self::$account = Bridge_Account::create(appbox::get_instance(), self::$api, self::$user, 'kirikoo', 'coucou');
// }
}
public static function tearDownAfterClass()
{
parent::tearDownAfterClass();
// self::$api->delete();
// if (self::$account instanceof Bridge_Account)
// self::$account->delete();
}
public function setUp()
{
parent::setUp();
$this->client = $this->createClient();
try
{
self::$api = Bridge_Api::get_by_api_name(appbox::get_instance(), 'apitest');
}
catch (Bridge_Exception_ApiNotFound $e)
{
self::$api = Bridge_Api::create(appbox::get_instance(), 'apitest');
}
try
{
self::$account = Bridge_Account::load_account_from_distant_id(appbox::get_instance(), self::$api, self::$user, 'kirikoo');
}
catch (Bridge_Exception_AccountNotFound $e)
{
self::$account = Bridge_Account::create(appbox::get_instance(), self::$api, self::$user, 'kirikoo', 'coucou');
}
}
public function tearDown()
{
parent::tearDown();
self::$api->delete();
if (self::$account instanceof Bridge_Account)
self::$account->delete();
}
public function createApplication()
{
$app = require __DIR__ . '/../../Alchemy/Phrasea/Application/Prod.php';
return $app;
}
/**
* @todo create a new basket dont take an existing one
*/
public function testManager()
{
$appbox = appbox::get_instance();
$accounts = Bridge_Account::get_accounts_by_user($appbox, self::$user);
$usr_id = self::$user->get_id();
$basket = $this->insertOneBasket();
$crawler = $this->client->request('POST', '/bridge/manager/', array('ssel' => $basket->getId()));
$pageContent = $this->client->getResponse()->getContent();
$this->assertTrue($this->client->getResponse()->isOk());
}
public function testLogin()
{
$this->client->request('GET', '/bridge/login/Apitest/');
$test = new Bridge_Api_Apitest(registry::get_instance(), new Bridge_Api_Auth_None());
$this->assertTrue($this->client->getResponse()->getStatusCode() == 302);
$this->assertTrue($this->client->getResponse()->isRedirect($test->get_auth_url()));
}
public function testCallBackAccountAlreadyDefined()
{
$appbox = appbox::get_instance();
$crawler = $this->client->request('GET', '/bridge/callback/apitest/');
$this->assertTrue($this->client->getResponse()->isOk());
$pageContent = $this->client->getResponse()->getContent();
//check for errors in the crawler
$phpunit = $this;
$crawler
->filter('div')
->reduce(function ($node, $i) use ($phpunit)
{
if (!$node->getAttribute('class'))
{
return false;
}
elseif ($node->getAttribute('class') == 'error_auth')
{
$phpunit->fail("Erreur callback");
}
});
$settings = self::$account->get_settings();
$this->assertEquals("kikoo", $settings->get("auth_token"));
$this->assertEquals("kooki", $settings->get("refresh_token"));
$this->assertEquals("biloute", $settings->get("access_token"));
$settings->delete("auth_token");
$settings->delete("refresh_token");
$settings->delete("access_token");
}
public function testCallBackAccountNoDefined()
{
if (self::$account instanceof Bridge_Account)
self::$account->delete();
$crawler = $this->client->request('GET', '/bridge/callback/apitest/');
$this->assertTrue($this->client->getResponse()->isOk());
$phpunit = $this;
$crawler
->filter('div')
->reduce(function ($node, $i) use ($phpunit)
{
if (!$node->getAttribute('class'))
{
return false;
}
elseif ($node->getAttribute('class') == 'error_auth')
{
$phpunit->fail("Erreur callback");
}
});
try
{
self::$account = Bridge_Account::load_account_from_distant_id(appbox::get_instance(), self::$api, self::$user, 'kirikoo');
$settings = self::$account->get_settings();
$this->assertEquals("kikoo", $settings->get("auth_token"));
$this->assertEquals("kooki", $settings->get("refresh_token"));
$this->assertEquals("biloute", $settings->get("access_token"));
$settings->delete("auth_token");
$settings->delete("refresh_token");
$settings->delete("access_token");
}
catch (Bridge_Exception_AccountNotFound $e)
{
$this->fail("No account created after callback");
}
if (!self::$account instanceof Bridge_Account)
self::$account = Bridge_Account::create(appbox::get_instance(), self::$api, self::$user, 'kirikoo', 'coucou');
}
public function testLogoutDeconnected()
{
$url = sprintf('/bridge/adapter/%d/logout/', self::$account->get_id());
$crawler = $this->client->request('GET', $url);
$pageContent = $this->client->getResponse()->getContent();
$this->assertContains("/adapter/" . self::$account->get_id() . "/logout/", $pageContent);
$this->deconnected($crawler, $pageContent);
}
public function testLogout()
{
self::$account->get_settings()->set("auth_token", "somethingNotNull"); //connected
$url = sprintf('/bridge/adapter/%d/logout/', self::$account->get_id());
$this->client->request('GET', $url);
$redirect = sprintf("/prod/bridge/adapter/%s/load-elements/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_element_type());
$this->assertTrue($this->client->getResponse()->isRedirect($redirect));
$this->assertNull(self::$account->get_settings()->get("auth_token"));
}
public function testLoadElements()
{
self::$account->get_settings()->set("auth_token", "somethingNotNull"); //connected
$url = sprintf("/bridge/adapter/%s/load-elements/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_element_type());
$account = new Bridge_Account(appbox::get_instance(), self::$api, self::$account->get_id());
$crawler = $this->client->request('GET', $url, array("page" => 1));
$this->assertTrue($this->client->getResponse()->isOk());
$this->assertNotContains(self::$account->get_api()->generate_login_url(registry::get_instance(), self::$account->get_api()->get_connector()->get_name()), $this->client->getResponse()->getContent());
}
public function testLoadElementsDisconnected()
{
$url = sprintf("/bridge/adapter/%s/load-elements/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_element_type());
$crawler = $this->client->request('GET', $url, array("page" => 1));
$this->assertTrue($this->client->getResponse()->isOk());
$pageContent = $this->client->getResponse()->getContent();
$this->assertContains($url, $pageContent);
$this->deconnected($crawler, $pageContent);
}
public function testLoadRecords()
{
self::$account->get_settings()->set("auth_token", "somethingNotNull"); //connected
$url = sprintf("/bridge/adapter/%s/load-records/", self::$account->get_id());
$crawler = $this->client->request('GET', $url, array("page" => 1));
$elements = Bridge_Element::get_elements_by_account(appbox::get_instance(), self::$account);
$this->assertTrue($this->client->getResponse()->isOk());
$this->assertEquals(sizeof($elements), $crawler->filterXPath("//table/tr")->count());
$this->assertNotContains(self::$account->get_api()->generate_login_url(registry::get_instance(), self::$account->get_api()->get_connector()->get_name()), $this->client->getResponse()->getContent());
}
public function testLoadRecordsDisconnected()
{
$url = sprintf("/bridge/adapter/%s/load-records/", self::$account->get_id());
$crawler = $this->client->request('GET', $url, array("page" => 1));
$pageContent = $this->client->getResponse()->getContent();
$this->assertContains($url, $pageContent);
$this->deconnected($crawler, $pageContent);
}
public function testLoadContainers()
{
self::$account->get_settings()->set("auth_token", "somethingNotNull"); //connected
$url = sprintf("/bridge/adapter/%s/load-containers/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_container_type());
$crawler = $this->client->request('GET', $url, array("page" => 1));
$elements = Bridge_Element::get_elements_by_account(appbox::get_instance(), self::$account);
$this->assertTrue($this->client->getResponse()->isOk());
$this->assertNotContains(self::$account->get_api()->generate_login_url(registry::get_instance(), self::$account->get_api()->get_connector()->get_name()), $this->client->getResponse()->getContent());
}
public function testLoadContainersDisconnected()
{
$url = sprintf("/bridge/adapter/%s/load-containers/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_container_type());
$crawler = $this->client->request('GET', $url, array("page" => 1));
$pageContent = $this->client->getResponse()->getContent();
$this->assertContains($url, $pageContent);
$this->deconnected($crawler, $pageContent);
}
public function testActionDeconnected()
{
$url = sprintf("/bridge/action/%s/une action/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_element_type());
$crawler = $this->client->request('GET', $url);
$pageContent = $this->client->getResponse()->getContent();
$this->assertContains($url, $pageContent);
$this->deconnected($crawler, $pageContent);
}
public function testActionUnknow()
{
self::$account->get_settings()->set("auth_token", "somethingNotNull"); //connected
$url = sprintf("/bridge/action/%s/ajjfhfjozqd/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_element_type());
try
{
$crawler = $this->client->request('GET', $url, array("elements_list" => "1;2;3"));
$this->fail("expected Exception here");
}
catch (Exception $e)
{
}
}
public function testActionModifyTooManyElements()
{
self::$account->get_settings()->set("auth_token", "somethingNotNull"); //connected
$url = sprintf("/bridge/action/%s/modify/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_element_type());
$crawler = $this->client->request('GET', $url, array("element_list" => "1_2;1_3;1_4"));
$redirect = sprintf("/prod/bridge/adapter/%s/load-elements/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_element_type());
$this->assertTrue($this->client->getResponse()->isRedirect());
$this->assertContains($redirect, $this->client->getResponse()->headers->get("location"));
$this->assertContains("error=", $this->client->getResponse()->headers->get("location"));
$this->assertNotContains(self::$account->get_api()->generate_login_url(registry::get_instance(), self::$account->get_api()->get_connector()->get_name()), $this->client->getResponse()->getContent());
}
public function testActionModifyElement()
{
self::$account->get_settings()->set("auth_token", "somethingNotNull"); //connected
$url = sprintf("/bridge/action/%s/modify/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_element_type());
$crawler = $this->client->request('GET', $url, array("elements_list" => "element123qcs789"));
$this->assertTrue($this->client->getResponse()->isOk());
$this->assertNotContains(self::$account->get_api()->generate_login_url(registry::get_instance(), self::$account->get_api()->get_connector()->get_name()), $this->client->getResponse()->getContent());
}
/**
* @todo no templates declared for modify a container in any apis
*/
public function testActionModifyContainer()
{
$this->markTestSkipped("No templates declared for modify a container in any apis");
self::$account->get_settings()->set("auth_token", "somethingNotNull"); //connected
$url = sprintf("/bridge/action/%s/modify/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_container_type());
$crawler = $this->client->request('GET', $url, array("elements_list" => "containerudt456shn"));
$this->assertTrue($this->client->getResponse()->isOk());
$pageContent = $this->client->getResponse()->getContent();
$this->assertNotContains(self::$account->get_api()->generate_login_url(registry::get_instance(), self::$account->get_api()->get_connector()->get_name()), $this->client->getResponse()->getContent());
}
public function testActionMoveInto()
{
self::$account->get_settings()->set("auth_token", "somethingNotNull"); //connected
$url = sprintf("/bridge/action/%s/moveinto/%s/", self::$account->get_id(), self::$account->get_api()->get_connector()->get_default_element_type());
$crawler = $this->client->request('GET', $url, array("elements_list" => "containerudt456shn", 'destination' => self::$account->get_api()->get_connector()->get_default_container_type()));
$this->assertNotContains("http://dev.phrasea.net/prod/bridge/login/youtube/", $this->client->getResponse()->getContent());
$this->assertTrue($this->client->getResponse()->isOk());
}
public function deconnected($crawler, $pageContent)
{
$this->assertTrue($this->client->getResponse()->isOk());
$this->assertContains("prod/bridge/login/" . mb_strtolower(self::$account->get_api()->get_connector()->get_name())."/", $pageContent);
}
}

View File

@@ -1,184 +0,0 @@
<?php
require_once __DIR__ . '/../../PhraseanetWebTestCaseAuthenticatedAbstract.class.inc';
require_once __DIR__ . "/../../../../lib/vendor/Silex/autoload.php";
/*
* This file is part of Phraseanet
*
* (c) 2005-2010 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/**
*
*
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com
*/
require_once __DIR__ . "/../../../../lib/bootstrap.php";
API_OAuth2_Autoloader::register();
use Symfony\Component\HttpFoundation\Response;
use Silex\WebTestCase;
/**
* Test oauthv2 flow based on ietf authv2 spec
* @link http://tools.ietf.org/html/draft-ietf-oauth-v2-18
*/
/**
*
*
*/
class oauthv2_application_test extends PhraseanetWebTestCaseAuthenticatedAbstract
{
/**
*
* @var API_OAuth2_Application
*/
public static $appli;
public static $account_id;
public static $account;
public $oauth;
protected $client;
protected $queryParameters;
public static function setUpBeforeClass()
{
parent::setUpBeforeClass();
$parameters = array(
'type' => 'web'
, 'name' => 'test'
, 'description' => 'une description'
, 'callback' => 'http://callback.com/callback/'
, 'website' => 'http://website.com/'
);
self::$appli = API_OAuth2_Application::create(appbox::get_instance(), self::$user, 'test');
self::$appli->set_description('une description')
->set_redirect_uri('http://callback.com/callback/')
->set_website('http://website.com/')
->set_type(API_OAuth2_Application::WEB_TYPE);
}
public static function tearDownAfterClass()
{
parent::tearDownAfterClass();
if (self::$appli !== false)
self::deleteInsertedRow(appbox::get_instance(), self::$appli);
}
public function tearDown()
{
parent::tearDown();
}
public function setUp()
{
parent::setUp();
$this->client = $this->createClient();
$this->queryParameters = array(
"response_type" => "code",
"client_id" => self::$appli->get_client_id(),
"redirect_uri" => self::$appli->get_redirect_uri(),
"scope" => "",
"state" => "valueTest"
);
}
public static function deleteInsertedRow(appbox $appbox, API_OAuth2_Application $app)
{
$conn = $appbox->get_connection();
$sql = '
DELETE FROM api_applications
WHERE application_id = :id
';
$t = array(':id' => $app->get_id());
$stmt = $conn->prepare($sql);
$stmt->execute($t);
$sql = '
DELETE FROM api_accounts
WHERE api_account_id = :id
';
$acc = self::getAccount();
$t = array(':id' => $acc->get_id());
$stmt = $conn->prepare($sql);
$stmt->execute($t);
}
public static function getApp($rowId)
{
$sql = "SELECT * FROM api_applications WHERE application_id = :app_id";
$t = array(":app_id" => $rowId);
$appbox = appbox::get_instance();
$conn = $appbox->get_connection();
$stmt = $conn->prepare($sql);
$stmt->execute($t);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result;
}
public static function getAccount()
{
$sql = "SELECT api_account_id FROM api_accounts WHERE application_id = :app_id AND usr_id = :usr_id";
$t = array(":app_id" => self::$appli->get_id(), ":usr_id" => self::$user->get_id());
$appbox = appbox::get_instance();
$conn = $appbox->get_connection();
$stmt = $conn->prepare($sql);
$stmt->execute($t);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
return new API_OAuth2_Account(appbox::get_instance(), $row["api_account_id"]);
}
public function setQueryParameters($parameter, $value)
{
$this->queryParameters[$parameter] = $value;
}
public function unsetQueryParameter($parameter)
{
if (isset($this->queryParameters[$parameter]))
unset($this->queryParameters[$parameter]);
}
public function createApplication()
{
return require __DIR__ . '/../../../../lib/Alchemy/Phrasea/Application/OAuth2.php';
}
public function testAuthorizeRedirect()
{
//session off
$apps = API_OAuth2_Application::load_authorized_app_by_user(appbox::get_instance(), self::$user);
foreach($apps as $app)
{
if($app->get_client_id() == self::$appli->get_client_id())
{
$authorize = true;
$this->client->followRedirects();
}
}
}
public function testAuthorize()
{
$acc = self::getAccount();
$acc->set_revoked(true); // revoked to show form
$crawler = $this->client->request('GET', '/authorize', $this->queryParameters);
$this->assertTrue($this->client->getResponse()->isSuccessful());
$this->assertRegExp("/" . self::$appli->get_client_id() . "/", $this->client->getResponse()->getContent());
$this->assertRegExp("/" . str_replace("/", '\/', self::$appli->get_redirect_uri()) . "/", $this->client->getResponse()->getContent());
$this->assertRegExp("/" . $this->queryParameters["response_type"] . "/", $this->client->getResponse()->getContent());
$this->assertRegExp("/" . $this->queryParameters["scope"] . "/", $this->client->getResponse()->getContent());
$this->assertRegExp("/" . $this->queryParameters["state"] . "/", $this->client->getResponse()->getContent());
}
}