From: Jan Schneider Date: Mon, 3 Jan 2011 21:15:38 +0000 (+0100) Subject: Add test case variations for any Horde_Db driver that we support. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=069dbd21ef330ea697808fb2388757bce700811a;p=horde.git Add test case variations for any Horde_Db driver that we support. --- diff --git a/.gitignore b/.gitignore index 36506d752..75d9f9ffe 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,11 @@ framework/Db/test/Horde/Db/Adapter/conf.php framework/Db/test/Horde/Db/Adapter/Pdo/conf.php framework/Kolab_Storage/test/Horde/Kolab/Storage/conf.php framework/Ldap/test/Horde/Ldap/conf.php +framework/Share/test/Horde/Share/conf.php +framework/Share/test/Horde/Share/Sql/conf.php +framework/Share/test/Horde/Share/Sql/Pdo/conf.php +framework/Share/test/Horde/Share/SqlHierarchical/conf.php +framework/Share/test/Horde/Share/SqlHierarchical/Pdo/conf.php # Dynamically generated content that may live in the repo directories /lib/ diff --git a/framework/Share/package.xml b/framework/Share/package.xml index 97f541eeb..cd1867394 100644 --- a/framework/Share/package.xml +++ b/framework/Share/package.xml @@ -12,7 +12,7 @@ owns or has access to. yes 2011-01-03 - + 0.0.4 0.0.4 @@ -320,11 +320,30 @@ owns or has access to. + + + + + + + + + + + + + + + + + + + + - - - + + @@ -452,9 +471,20 @@ owns or has access to. - - - + + + + + + + + + + + + + + diff --git a/framework/Share/test/Horde/Share/Base.php b/framework/Share/test/Horde/Share/Base.php new file mode 100644 index 000000000..a1904d4e4 --- /dev/null +++ b/framework/Share/test/Horde/Share/Base.php @@ -0,0 +1,249 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_Test_Base extends Horde_Test_Case +{ + protected static $share; + + public function testGetApp() + { + $this->assertEquals('test', self::$share->getApp()); + } + + public function baseAddShare() + { + $share = self::$share->newShare('john', 'myshare'); + $this->assertInstanceOf('Horde_Share_Object', $share); + self::$share->addShare($share); + return $share; + } + + public function basePermissions($myshareid) + { + // System share. + $share = self::$share->newShare(null, 'systemshare'); + $perm = $share->getPermission(); + $this->assertInstanceOf('Horde_Perms_Permission', $perm); + $perm->addDefaultPermission(Horde_Perms::SHOW | Horde_Perms::READ); + $share->setPermission($perm); + $share->save(); + $this->assertTrue($share->hasPermission('john', Horde_Perms::SHOW)); + $this->assertTrue($share->hasPermission('john', Horde_Perms::READ)); + $this->assertFalse($share->hasPermission('john', Horde_Perms::EDIT)); + $this->assertFalse($share->hasPermission('john', Horde_Perms::DELETE)); + + // Foreign share with user permissions. + $janeshare = self::$share->newShare('jane', 'janeshare'); + $janeshare->addUserPermission('john', Horde_Perms::SHOW | Horde_Perms::READ | Horde_Perms::EDIT); + $janeshare->save(); + $this->assertTrue($janeshare->hasPermission('john', Horde_Perms::SHOW)); + $this->assertTrue($janeshare->hasPermission('john', Horde_Perms::READ)); + $this->assertTrue($janeshare->hasPermission('john', Horde_Perms::EDIT)); + $this->assertFalse($janeshare->hasPermission('john', Horde_Perms::DELETE)); + + // Foreign share with group permissions. + $groupshare = self::$share->newShare('jane', 'groupshare'); + $groupshare->addGroupPermission('mygroup', Horde_Perms::SHOW | Horde_Perms::READ | Horde_Perms::DELETE); + $groupshare->save(); + $this->assertTrue($groupshare->hasPermission('john', Horde_Perms::SHOW)); + $this->assertTrue($groupshare->hasPermission('john', Horde_Perms::READ)); + $this->assertFalse($groupshare->hasPermission('john', Horde_Perms::EDIT)); + $this->assertTrue($groupshare->hasPermission('john', Horde_Perms::DELETE)); + + // Foreign share without permissions. + $share = self::$share->newShare('jane', 'noshare'); + $share->save(); + + return array($myshareid, $janeshare->getId(), $groupshare->getId()); + } + + public function baseExists() + { + $this->assertTrue(self::$share->exists('myshare')); + + // Reset cache. + self::$share->resetCache(); + + $this->assertTrue(self::$share->exists('myshare')); + } + + public function baseCountShares() + { + // Getting shares from cache. + $this->assertEquals(4, self::$share->countShares('john')); + $this->assertEquals(2, self::$share->countShares('john', Horde_Perms::EDIT)); + + // Reset cache. + self::$share->resetCache(); + + // Getting shares from backend. + $this->assertEquals(4, self::$share->countShares('john')); + $this->assertEquals(2, self::$share->countShares('john', Horde_Perms::EDIT)); + } + + public function baseGetShare() + { + $share = self::$share->getShare('myshare'); + $this->assertInstanceOf('Horde_Share_Object', $share); + + // Reset cache. + self::$share->resetCache(); + + $share = self::$share->getShare('myshare'); + $this->assertInstanceOf('Horde_Share_Object', $share); + + return array($share, self::$share->getShare('janeshare'), self::$share->getShare('groupshare')); + } + + public function baseGetShareById(array $shares) + { + $newshare = self::$share->getShareById($shares[0]->getId()); + $this->assertInstanceOf('Horde_Share_Object', $newshare); + $this->assertEquals($shares[0], $newshare); + $newshare = self::$share->getShareById($shares[1]->getId()); + $this->assertInstanceOf('Horde_Share_Object', $newshare); + $this->assertEquals($shares[1], $newshare); + $newshare = self::$share->getShareById($shares[2]->getId()); + $this->assertInstanceOf('Horde_Share_Object', $newshare); + $this->assertEquals($shares[2], $newshare); + + // Reset cache. + self::$share->resetCache(); + + $newshare = self::$share->getShareById($shares[0]->getId()); + $this->assertInstanceOf('Horde_Share_Object', $newshare); + $this->assertEquals($shares[0], $newshare); + $newshare = self::$share->getShareById($shares[1]->getId()); + $this->assertInstanceOf('Horde_Share_Object', $newshare); + $this->assertEquals($shares[1], $newshare); + $newshare = self::$share->getShareById($shares[2]->getId()); + $this->assertInstanceOf('Horde_Share_Object', $newshare); + $this->assertEquals($shares[2], $newshare); + } + + public function baseGetShares(array $shares) + { + $newshares = self::$share->getShares(array($shares[0]->getId(), $shares[1]->getId(), $shares[2]->getId())); + $this->assertType('array', $newshares); + $this->assertEquals(3, count($newshares)); + $this->assertArrayHasKey('myshare', $newshares); + $this->assertArrayHasKey('janeshare', $newshares); + $this->assertArrayHasKey('groupshare', $newshares); + $this->assertInstanceOf('Horde_Share_Object', $newshares['myshare']); + $this->assertInstanceOf('Horde_Share_Object', $newshares['janeshare']); + $this->assertInstanceOf('Horde_Share_Object', $newshares['groupshare']); + $this->assertEquals($newshares['myshare'], $shares[0]); + $this->assertEquals($newshares['janeshare'], $shares[1]); + $this->assertEquals($newshares['groupshare'], $shares[2]); + + // Reset cache. + self::$share->resetCache(); + + $newshares = self::$share->getShares(array($shares[0]->getId(), $shares[1]->getId(), $shares[2]->getId())); + $this->assertType('array', $newshares); + $this->assertEquals(3, count($newshares)); + $this->assertArrayHasKey('myshare', $newshares); + $this->assertArrayHasKey('janeshare', $newshares); + $this->assertArrayHasKey('groupshare', $newshares); + $this->assertInstanceOf('Horde_Share_Object', $newshares['myshare']); + $this->assertInstanceOf('Horde_Share_Object', $newshares['janeshare']); + $this->assertInstanceOf('Horde_Share_Object', $newshares['groupshare']); + $this->assertEquals($newshares['myshare'], $shares[0]); + $this->assertEquals($newshares['janeshare'], $shares[1]); + $this->assertEquals($newshares['groupshare'], $shares[2]); + } + + public function baseListAllShares() + { + // Getting shares from cache. + $shares = self::$share->listAllShares(); + $this->assertType('array', $shares); + $this->assertEquals(5, count($shares)); + $this->assertArrayHasKey('myshare', $shares); + $this->assertArrayHasKey('systemshare', $shares); + $this->assertArrayHasKey('janeshare', $shares); + $this->assertArrayHasKey('groupshare', $shares); + $this->assertArrayHasKey('noshare', $shares); + + // Reset cache. + self::$share->resetCache(); + + // Getting shares from backend. + $shares = self::$share->listAllShares(); + $this->assertType('array', $shares); + $this->assertEquals(5, count($shares)); + $this->assertArrayHasKey('myshare', $shares); + $this->assertArrayHasKey('systemshare', $shares); + $this->assertArrayHasKey('janeshare', $shares); + $this->assertArrayHasKey('groupshare', $shares); + $this->assertArrayHasKey('noshare', $shares); + } + + public function baseListSystemShares() + { + // Getting shares from cache. + $shares = self::$share->listSystemShares(); + $this->assertType('array', $shares); + $this->assertEquals(1, count($shares)); + $this->assertArrayHasKey('systemshare', $shares); + + // Reset cache. + self::$share->resetCache(); + + // Getting shares from backend. + $shares = self::$share->listSystemShares(); + $this->assertType('array', $shares); + $this->assertEquals(1, count($shares)); + $this->assertArrayHasKey('systemshare', $shares); + } + + public function baseRemoveShare(array $share) + { + self::$share->removeShare($share[0]); + try { + self::$share->getShareById($share[0]->getId()); + $this->fail('Share ' . $share[0]->getId() . ' should be removed by now.'); + } catch (Horde_Exception_NotFound $e) { + } + + // Reset cache. + self::$share->resetCache(); + + try { + self::$share->getShareById($share[0]->getId()); + $this->fail('Share ' . $share[0]->getId() . ' should be removed by now.'); + } catch (Horde_Exception_NotFound $e) { + } + } +} + +class Horde_Group_Test extends Horde_Group { + public function __construct() + { + } + + public function __wakeup() + { + } + + public function userIsInGroup($user, $gid, $subgroups = true) + { + return $user == 'john' && $gid == 'mygroup'; + } + + public function getGroupMemberships($user, $parentGroups = false) + { + return $user == 'john' ? array('mygroup' => 'mygroup') : array(); + } +} diff --git a/framework/Share/test/Horde/Share/Sql/Base.php b/framework/Share/test/Horde/Share/Sql/Base.php new file mode 100644 index 000000000..395e9e4c9 --- /dev/null +++ b/framework/Share/test/Horde/Share/Sql/Base.php @@ -0,0 +1,186 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_Test_Sql_Base extends Horde_Share_Test_Base +{ + protected static $db; + + public function testSetTable() + { + $this->assertEquals('test_shares', self::$share->getTable()); + self::$share->setTable('foo'); + $this->assertEquals('foo', self::$share->getTable()); + self::$share->setTable('test_shares'); + } + + public function testSetStorage() + { + self::$share->setStorage(self::$db); + $this->assertEquals(self::$db, self::$share->getStorage()); + } + + public function testAddShare() + { + $share = parent::baseAddShare(); + $this->assertInstanceOf('Horde_Share_Object_Sql', $share); + return $share->getId(); + } + + /** + * @depends testAddShare + */ + public function testPermissions($myshareid) + { + return parent::basePermissions($myshareid); + } + + /** + * @depends testAddShare + */ + public function testExists() + { + parent::baseExists(); + } + + /** + * @depends testPermissions + */ + public function testCountShares() + { + parent::baseCountShares(); + } + + /** + * @depends testPermissions + */ + public function testGetShare() + { + $shares = parent::baseGetShare(); + $this->assertInstanceOf('Horde_Share_Object_Sql', $shares[0]); + $this->assertInstanceOf('Horde_Share_Object_Sql', $shares[1]); + $this->assertInstanceOf('Horde_Share_Object_Sql', $shares[2]); + return $shares; + } + + /** + * @depends testGetShare + */ + public function testGetShareById(array $shares) + { + parent::baseGetShareById($shares); + } + + /** + * @depends testGetShare + */ + public function testGetShares(array $shares) + { + parent::baseGetShares($shares); + } + + /** + * @depends testPermissions + */ + public function testListAllShares() + { + parent::baseListAllShares(); + } + + /** + * @depends testPermissions + */ + public function testListSystemShares() + { + parent::baseListSystemShares(); + } + + /** + * @depends testGetShare + */ + public function testRemoveShare(array $share) + { + parent::baseRemoveShare($share); + } + + public static function setUpBeforeClass() + { + //self::$db->setLogger(new Horde_Log_Logger(new Horde_Log_Handler_Stream(STDOUT))); + $migration = new Horde_Db_Migration_Base(self::$db); + + $t = $migration->createTable('test_shares', array('primaryKey' => 'share_id')); + //$t->column('share_id', 'integer', array('null' => false, 'autoincrement' => true)); + $t->column('share_name', 'string', array('limit' => 255, 'null' => false)); + $t->column('share_owner', 'string', array('limit' => 255)); + $t->column('share_flags', 'integer', array('default' => 0, 'null' => false)); + $t->column('perm_creator', 'integer', array('default' => 0, 'null' => false)); + $t->column('perm_default', 'integer', array('default' => 0, 'null' => false)); + $t->column('perm_guest', 'integer', array('default' => 0, 'null' => false)); + $t->column('attribute_name', 'string', array('limit' => 255)); + $t->column('attribute_desc', 'string', array('limit' => 255)); + $t->end(); + + $migration->addIndex('test_shares', array('share_name')); + $migration->addIndex('test_shares', array('share_owner')); + $migration->addIndex('test_shares', array('perm_creator')); + $migration->addIndex('test_shares', array('perm_default')); + $migration->addIndex('test_shares', array('perm_guest')); + + $t = $migration->createTable('test_shares_groups'); + $t->column('share_id', 'integer', array('null' => false)); + $t->column('group_uid', 'string', array('limit' => 255, 'null' => false)); + $t->column('perm', 'integer', array('null' => false)); + $t->end(); + + $migration->addIndex('test_shares_groups', array('share_id')); + $migration->addIndex('test_shares_groups', array('group_uid')); + $migration->addIndex('test_shares_groups', array('perm')); + + $t = $migration->createTable('test_shares_users'); + $t->column('share_id', 'integer', array('null' => false)); + $t->column('user_uid', 'string', array('limit' => 255)); + $t->column('perm', 'integer', array('null' => false)); + $t->end(); + + $migration->addIndex('test_shares_users', array('share_id')); + $migration->addIndex('test_shares_users', array('user_uid')); + $migration->addIndex('test_shares_users', array('perm')); + + $migration->migrate('up'); + + $group = new Horde_Group_Test(); + self::$share = new Horde_Share_Sql('test', 'john', new Horde_Perms(), $group); + self::$share->setStorage(self::$db); + + // FIXME + $GLOBALS['injector'] = new Horde_Injector(new Horde_Injector_TopLevel()); + $GLOBALS['injector']->setInstance('Horde_Group', $group); + } + + public static function tearDownAfterClass() + { + if (self::$db) { + $migration = new Horde_Db_Migration_Base(self::$db); + $migration->dropTable('test_shares'); + $migration->dropTable('test_shares_groups'); + $migration->dropTable('test_shares_users'); + } + } + + public function setUp() + { + if (!self::$db) { + $this->markTestSkipped('No sqlite extension or no sqlite PDO driver.'); + } + } +} diff --git a/framework/Share/test/Horde/Share/Sql/MysqlTest.php b/framework/Share/test/Horde/Share/Sql/MysqlTest.php new file mode 100644 index 000000000..b2e69eca0 --- /dev/null +++ b/framework/Share/test/Horde/Share/Sql/MysqlTest.php @@ -0,0 +1,26 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_Sql_MysqlTest extends Horde_Share_Test_Sql_Base +{ + public static function setUpBeforeClass() + { + if (!extension_loaded('mysql')) { + return; + } + $config = self::getConfig('SHARE_SQL_MYSQL_TEST_CONFIG'); + self::$db = new Horde_Db_Adapter_Mysql($config['share']['sql']['mysql']); + parent::setUpBeforeClass(); + } +} diff --git a/framework/Share/test/Horde/Share/Sql/MysqliTest.php b/framework/Share/test/Horde/Share/Sql/MysqliTest.php new file mode 100644 index 000000000..bb81f8931 --- /dev/null +++ b/framework/Share/test/Horde/Share/Sql/MysqliTest.php @@ -0,0 +1,26 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_Sql_MysqliTest extends Horde_Share_Test_Sql_Base +{ + public static function setUpBeforeClass() + { + if (!extension_loaded('mysqli')) { + return; + } + $config = self::getConfig('SHARE_SQL_MYSQLI_TEST_CONFIG'); + self::$db = new Horde_Db_Adapter_Mysqli($config['share']['sql']['mysqli']); + parent::setUpBeforeClass(); + } +} diff --git a/framework/Share/test/Horde/Share/Sql/Pdo/MysqlTest.php b/framework/Share/test/Horde/Share/Sql/Pdo/MysqlTest.php new file mode 100644 index 000000000..95dee9dc8 --- /dev/null +++ b/framework/Share/test/Horde/Share/Sql/Pdo/MysqlTest.php @@ -0,0 +1,27 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_Sql_Pdo_MysqlTest extends Horde_Share_Test_Sql_Base +{ + public static function setUpBeforeClass() + { + if (!extension_loaded('pdo') || + !in_array('mysql', PDO::getAvailableDrivers())) { + return; + } + $config = self::getConfig('SHARE_SQL_PDO_MYSQL_TEST_CONFIG'); + self::$db = new Horde_Db_Adapter_Pdo_Mysql($config['share']['sql']['pdo_mysql']); + parent::setUpBeforeClass(); + } +} diff --git a/framework/Share/test/Horde/Share/Sql/Pdo/PgsqlTest.php b/framework/Share/test/Horde/Share/Sql/Pdo/PgsqlTest.php new file mode 100644 index 000000000..936a2dd69 --- /dev/null +++ b/framework/Share/test/Horde/Share/Sql/Pdo/PgsqlTest.php @@ -0,0 +1,27 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_Sql_Pdo_PgsqlTest extends Horde_Share_Test_Sql_Base +{ + public static function setUpBeforeClass() + { + if (!extension_loaded('pdo') || + !in_array('pgsql', PDO::getAvailableDrivers())) { + return; + } + $config = self::getConfig('SHARE_SQL_PDO_PGSQL_TEST_CONFIG'); + self::$db = new Horde_Db_Adapter_Pdo_Pgsql($config['share']['sql']['pdo_pgsql']); + parent::setUpBeforeClass(); + } +} diff --git a/framework/Share/test/Horde/Share/Sql/Pdo/SqliteTest.php b/framework/Share/test/Horde/Share/Sql/Pdo/SqliteTest.php new file mode 100644 index 000000000..aaaa7b128 --- /dev/null +++ b/framework/Share/test/Horde/Share/Sql/Pdo/SqliteTest.php @@ -0,0 +1,26 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_Sql_Pdo_SqliteTest extends Horde_Share_Test_Sql_Base +{ + public static function setUpBeforeClass() + { + if (!extension_loaded('pdo') || + !in_array('sqlite', PDO::getAvailableDrivers())) { + return; + } + self::$db = new Horde_Db_Adapter_Pdo_Sqlite(array('dbname' => ':memory:')); + parent::setUpBeforeClass(); + } +} diff --git a/framework/Share/test/Horde/Share/SqlHierarchical/Base.php b/framework/Share/test/Horde/Share/SqlHierarchical/Base.php new file mode 100644 index 000000000..2343866eb --- /dev/null +++ b/framework/Share/test/Horde/Share/SqlHierarchical/Base.php @@ -0,0 +1,206 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_Test_SqlHierarchical_Base extends Horde_Share_Test_Base +{ + protected static $db; + + public function testSetTable() + { + $this->assertEquals('test_shares', self::$share->getTable()); + self::$share->setTable('foo'); + $this->assertEquals('foo', self::$share->getTable()); + self::$share->setTable('test_shares'); + } + + public function testSetStorage() + { + self::$share->setStorage(self::$db); + $this->assertEquals(self::$db, self::$share->getStorage()); + } + + public function testAddShare() + { + $share = parent::baseAddShare(); + $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $share); + return $share->getId(); + } + + /** + * @depends testAddShare + */ + public function testPermissions($myshareid) + { + $shareids = parent::basePermissions($myshareid); + return array(self::$share->getShareById($shareids[0]), + self::$share->getShareById($shareids[1]), + self::$share->getShareById($shareids[2])); + } + + /** + * @depends testAddShare + */ + public function testExists() + { + $this->markTestSkipped('Not supported by hierarchical driver.'); + } + + /** + * @depends testPermissions + */ + public function testCountShares() + { + parent::baseCountShares(); + } + + /** + * @depends testPermissions + */ + public function testGetShare() + { + $this->markTestSkipped('Not supported by hierarchical driver.'); + } + + /** + * @depends testPermissions + */ + public function testGetShareById(array $shares) + { + parent::baseGetShareById($shares); + } + + /** + * @depends testPermissions + */ + public function testGetShares(array $shares) + { + $newshares = self::$share->getShares(array($shares[0]->getId(), $shares[1]->getId(), $shares[2]->getId())); + $this->assertType('array', $newshares); + $this->assertEquals(3, count($newshares)); + $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[0]); + $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[1]); + $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[2]); + $this->assertEquals($newshares[0], $shares[0]); + $this->assertEquals($newshares[1], $shares[1]); + $this->assertEquals($newshares[2], $shares[2]); + + // Reset cache. + self::$share->resetCache(); + + $newshares = self::$share->getShares(array($shares[0]->getId(), $shares[1]->getId(), $shares[2]->getId())); + $this->assertType('array', $newshares); + $this->assertEquals(3, count($newshares)); + $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[$shares[0]->getId()]); + $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[$shares[1]->getId()]); + $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[$shares[2]->getId()]); + $this->assertEquals($newshares[$shares[0]->getId()], $shares[0]); + $this->assertEquals($newshares[$shares[1]->getId()], $shares[1]); + $this->assertEquals($newshares[$shares[2]->getId()], $shares[2]); + } + + /** + * @depends testPermissions + */ + public function testListAllShares() + { + $this->markTestSkipped('Not supported by hierarchical driver.'); + } + + /** + * @depends testPermissions + */ + public function testListSystemShares() + { + $this->markTestSkipped('Not supported by hierarchical driver.'); + } + + /** + * @depends testPermissions + */ + public function testRemoveShare(array $share) + { + parent::baseRemoveShare($share); + } + + public static function setUpBeforeClass() + { + //self::$db->setLogger(new Horde_Log_Logger(new Horde_Log_Handler_Stream(STDOUT))); + $migration = new Horde_Db_Migration_Base(self::$db); + + $t = $migration->createTable('test_shares', array('primaryKey' => 'share_id')); + //$t->column('share_id', 'integer', array('null' => false, 'autoincrement' => true)); + $t->column('share_owner', 'string', array('limit' => 255)); + $t->column('share_flags', 'integer', array('default' => 0, 'null' => false)); + $t->column('share_parents', 'string', array('limit' => 255)); + $t->column('perm_creator', 'integer', array('default' => 0, 'null' => false)); + $t->column('perm_default', 'integer', array('default' => 0, 'null' => false)); + $t->column('perm_guest', 'integer', array('default' => 0, 'null' => false)); + $t->column('attribute_name', 'string', array('limit' => 255)); + $t->column('attribute_desc', 'string', array('limit' => 255)); + $t->end(); + + $migration->addIndex('test_shares', array('share_owner')); + $migration->addIndex('test_shares', array('perm_creator')); + $migration->addIndex('test_shares', array('perm_default')); + $migration->addIndex('test_shares', array('perm_guest')); + $migration->addIndex('test_shares', array('share_parents')); + + $t = $migration->createTable('test_shares_groups'); + $t->column('share_id', 'integer', array('null' => false)); + $t->column('group_uid', 'string', array('limit' => 255, 'null' => false)); + $t->column('perm', 'integer', array('null' => false)); + $t->end(); + + $migration->addIndex('test_shares_groups', array('share_id')); + $migration->addIndex('test_shares_groups', array('group_uid')); + $migration->addIndex('test_shares_groups', array('perm')); + + $t = $migration->createTable('test_shares_users'); + $t->column('share_id', 'integer', array('null' => false)); + $t->column('user_uid', 'string', array('limit' => 255)); + $t->column('perm', 'integer', array('null' => false)); + $t->end(); + + $migration->addIndex('test_shares_users', array('share_id')); + $migration->addIndex('test_shares_users', array('user_uid')); + $migration->addIndex('test_shares_users', array('perm')); + + $migration->migrate('up'); + + $group = new Horde_Group_Test(); + self::$share = new Horde_Share_Sql_Hierarchical('test', 'john', new Horde_Perms(), $group); + self::$share->setStorage(self::$db); + + // FIXME + $GLOBALS['injector'] = new Horde_Injector(new Horde_Injector_TopLevel()); + $GLOBALS['injector']->setInstance('Horde_Group', $group); + } + + public static function tearDownAfterClass() + { + if (self::$db) { + $migration = new Horde_Db_Migration_Base(self::$db); + $migration->dropTable('test_shares'); + $migration->dropTable('test_shares_groups'); + $migration->dropTable('test_shares_users'); + } + } + + public function setUp() + { + if (!self::$db) { + $this->markTestSkipped('No sqlite extension or no sqlite PDO driver.'); + } + } +} diff --git a/framework/Share/test/Horde/Share/SqlHierarchical/MysqlTest.php b/framework/Share/test/Horde/Share/SqlHierarchical/MysqlTest.php new file mode 100644 index 000000000..22a99f0e8 --- /dev/null +++ b/framework/Share/test/Horde/Share/SqlHierarchical/MysqlTest.php @@ -0,0 +1,26 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_SqlHierarchical_MysqlTest extends Horde_Share_Test_SqlHierarchical_Base +{ + public static function setUpBeforeClass() + { + if (!extension_loaded('mysql')) { + return; + } + $config = self::getConfig('SHARE_SQL_MYSQL_TEST_CONFIG'); + self::$db = new Horde_Db_Adapter_Mysql($config['share']['sql']['mysql']); + parent::setUpBeforeClass(); + } +} diff --git a/framework/Share/test/Horde/Share/SqlHierarchical/MysqliTest.php b/framework/Share/test/Horde/Share/SqlHierarchical/MysqliTest.php new file mode 100644 index 000000000..3f8b30b9a --- /dev/null +++ b/framework/Share/test/Horde/Share/SqlHierarchical/MysqliTest.php @@ -0,0 +1,26 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_SqlHierarchical_MysqliTest extends Horde_Share_Test_SqlHierarchical_Base +{ + public static function setUpBeforeClass() + { + if (!extension_loaded('mysqli')) { + return; + } + $config = self::getConfig('SHARE_SQL_MYSQLI_TEST_CONFIG'); + self::$db = new Horde_Db_Adapter_Mysqli($config['share']['sql']['mysqli']); + parent::setUpBeforeClass(); + } +} diff --git a/framework/Share/test/Horde/Share/SqlHierarchical/Pdo/MysqlTest.php b/framework/Share/test/Horde/Share/SqlHierarchical/Pdo/MysqlTest.php new file mode 100644 index 000000000..de0b0b31f --- /dev/null +++ b/framework/Share/test/Horde/Share/SqlHierarchical/Pdo/MysqlTest.php @@ -0,0 +1,27 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_SqlHierarchical_Pdo_MysqlTest extends Horde_Share_Test_SqlHierarchical_Base +{ + public static function setUpBeforeClass() + { + if (!extension_loaded('pdo') || + !in_array('mysql', PDO::getAvailableDrivers())) { + return; + } + $config = self::getConfig('SHARE_SQL_PDO_MYSQL_TEST_CONFIG'); + self::$db = new Horde_Db_Adapter_Pdo_Mysql($config['share']['sql']['pdo_mysql']); + parent::setUpBeforeClass(); + } +} diff --git a/framework/Share/test/Horde/Share/SqlHierarchical/Pdo/PgsqlTest.php b/framework/Share/test/Horde/Share/SqlHierarchical/Pdo/PgsqlTest.php new file mode 100644 index 000000000..4e331cb33 --- /dev/null +++ b/framework/Share/test/Horde/Share/SqlHierarchical/Pdo/PgsqlTest.php @@ -0,0 +1,27 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_SqlHierarchical_Pdo_PgsqlTest extends Horde_Share_Test_SqlHierarchical_Base +{ + public static function setUpBeforeClass() + { + if (!extension_loaded('pdo') || + !in_array('pgsql', PDO::getAvailableDrivers())) { + return; + } + $config = self::getConfig('SHARE_SQL_PDO_PGSQL_TEST_CONFIG'); + self::$db = new Horde_Db_Adapter_Pdo_Pgsql($config['share']['sql']['pdo_pgsql']); + parent::setUpBeforeClass(); + } +} diff --git a/framework/Share/test/Horde/Share/SqlHierarchical/Pdo/SqliteTest.php b/framework/Share/test/Horde/Share/SqlHierarchical/Pdo/SqliteTest.php new file mode 100644 index 000000000..1a5b22229 --- /dev/null +++ b/framework/Share/test/Horde/Share/SqlHierarchical/Pdo/SqliteTest.php @@ -0,0 +1,26 @@ + + * @category Horde + * @package Share + * @subpackage UnitTests + * @copyright 2010 The Horde Project (http://www.horde.org/) + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + */ +class Horde_Share_SqlHierarchical_Pdo_SqliteTest extends Horde_Share_Test_SqlHierarchical_Base +{ + public static function setUpBeforeClass() + { + if (!extension_loaded('pdo') || + !in_array('sqlite', PDO::getAvailableDrivers())) { + return; + } + self::$db = new Horde_Db_Adapter_Pdo_Sqlite(array('dbname' => ':memory:')); + parent::setUpBeforeClass(); + } +} diff --git a/framework/Share/test/Horde/Share/SqlHierarchicalTest.php b/framework/Share/test/Horde/Share/SqlHierarchicalTest.php deleted file mode 100644 index 423ddbb73..000000000 --- a/framework/Share/test/Horde/Share/SqlHierarchicalTest.php +++ /dev/null @@ -1,212 +0,0 @@ - - * @category Horde - * @package Share - * @subpackage UnitTests - * @copyright 2010 The Horde Project (http://www.horde.org/) - * @license http://www.fsf.org/copyleft/lgpl.html LGPL - */ -class Horde_Share_SqlHierarchicalTest extends Horde_Share_TestBase -{ - protected static $db; - - public function testSetTable() - { - $this->assertEquals('test_shares', self::$share->getTable()); - self::$share->setTable('foo'); - $this->assertEquals('foo', self::$share->getTable()); - self::$share->setTable('test_shares'); - } - - public function testSetStorage() - { - self::$share->setStorage(self::$db); - $this->assertEquals(self::$db, self::$share->getStorage()); - } - - public function testAddShare() - { - $share = parent::baseAddShare(); - $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $share); - return $share->getId(); - } - - /** - * @depends testAddShare - */ - public function testPermissions($myshareid) - { - $shareids = parent::basePermissions($myshareid); - return array(self::$share->getShareById($shareids[0]), - self::$share->getShareById($shareids[1]), - self::$share->getShareById($shareids[2])); - } - - /** - * @depends testAddShare - */ - public function testExists() - { - $this->markTestSkipped('Not supported by hierarchical driver.'); - } - - /** - * @depends testPermissions - */ - public function testCountShares() - { - parent::baseCountShares(); - } - - /** - * @depends testPermissions - */ - public function testGetShare() - { - $this->markTestSkipped('Not supported by hierarchical driver.'); - } - - /** - * @depends testPermissions - */ - public function testGetShareById(array $shares) - { - parent::baseGetShareById($shares); - } - - /** - * @depends testPermissions - */ - public function testGetShares(array $shares) - { - $newshares = self::$share->getShares(array($shares[0]->getId(), $shares[1]->getId(), $shares[2]->getId())); - $this->assertType('array', $newshares); - $this->assertEquals(3, count($newshares)); - $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[0]); - $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[1]); - $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[2]); - $this->assertEquals($newshares[0], $shares[0]); - $this->assertEquals($newshares[1], $shares[1]); - $this->assertEquals($newshares[2], $shares[2]); - - // Reset cache. - self::$share->resetCache(); - - $newshares = self::$share->getShares(array($shares[0]->getId(), $shares[1]->getId(), $shares[2]->getId())); - $this->assertType('array', $newshares); - $this->assertEquals(3, count($newshares)); - $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[$shares[0]->getId()]); - $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[$shares[1]->getId()]); - $this->assertInstanceOf('Horde_Share_Object_Sql_Hierarchical', $newshares[$shares[2]->getId()]); - $this->assertEquals($newshares[$shares[0]->getId()], $shares[0]); - $this->assertEquals($newshares[$shares[1]->getId()], $shares[1]); - $this->assertEquals($newshares[$shares[2]->getId()], $shares[2]); - } - - /** - * @depends testPermissions - */ - public function testListAllShares() - { - $this->markTestSkipped('Not supported by hierarchical driver.'); - } - - /** - * @depends testPermissions - */ - public function testListSystemShares() - { - $this->markTestSkipped('Not supported by hierarchical driver.'); - } - - /** - * @depends testPermissions - */ - public function testRemoveShare(array $share) - { - parent::baseRemoveShare($share); - } - - public static function setUpBeforeClass() - { - if (!extension_loaded('pdo') || - !in_array('sqlite', PDO::getAvailableDrivers())) { - return; - } - - self::$db = new Horde_Db_Adapter_Pdo_Sqlite(array('dbname' => ':memory:')); - //self::$db->setLogger(new Horde_Log_Logger(new Horde_Log_Handler_Stream(STDOUT))); - $migration = new Horde_Db_Migration_Base(self::$db); - - $t = $migration->createTable('test_shares', array('primaryKey' => 'share_id')); - //$t->column('share_id', 'integer', array('null' => false, 'autoincrement' => true)); - $t->column('share_owner', 'string', array('limit' => 255)); - $t->column('share_flags', 'integer', array('default' => 0, 'null' => false)); - $t->column('share_parents', 'string', array('limit' => 255)); - $t->column('perm_creator', 'integer', array('default' => 0, 'null' => false)); - $t->column('perm_default', 'integer', array('default' => 0, 'null' => false)); - $t->column('perm_guest', 'integer', array('default' => 0, 'null' => false)); - $t->column('attribute_name', 'string', array('limit' => 255)); - $t->column('attribute_desc', 'string', array('limit' => 255)); - $t->end(); - - $migration->addIndex('test_shares', array('share_owner')); - $migration->addIndex('test_shares', array('perm_creator')); - $migration->addIndex('test_shares', array('perm_default')); - $migration->addIndex('test_shares', array('perm_guest')); - $migration->addIndex('test_shares', array('share_parents')); - - $t = $migration->createTable('test_shares_groups'); - $t->column('share_id', 'integer', array('null' => false)); - $t->column('group_uid', 'string', array('limit' => 255, 'null' => false)); - $t->column('perm', 'integer', array('null' => false)); - $t->end(); - - $migration->addIndex('test_shares_groups', array('share_id')); - $migration->addIndex('test_shares_groups', array('group_uid')); - $migration->addIndex('test_shares_groups', array('perm')); - - $t = $migration->createTable('test_shares_users'); - $t->column('share_id', 'integer', array('null' => false)); - $t->column('user_uid', 'string', array('limit' => 255)); - $t->column('perm', 'integer', array('null' => false)); - $t->end(); - - $migration->addIndex('test_shares_users', array('share_id')); - $migration->addIndex('test_shares_users', array('user_uid')); - $migration->addIndex('test_shares_users', array('perm')); - - $migration->migrate('up'); - - $group = new Horde_Group_Test(); - self::$share = new Horde_Share_Sql_Hierarchical('test', 'john', new Horde_Perms(), $group); - self::$share->setStorage(self::$db); - - // FIXME - $GLOBALS['injector'] = new Horde_Injector(new Horde_Injector_TopLevel()); - $GLOBALS['injector']->setInstance('Horde_Group', $group); - } - - public static function tearDownAfterClass() - { - if (self::$db) { - $migration = new Horde_Db_Migration_Base(self::$db); - $migration->dropTable('test_shares'); - $migration->dropTable('test_shares_groups'); - $migration->dropTable('test_shares_users'); - } - } - - public function setUp() - { - if (!self::$db) { - $this->markTestSkipped('No sqlite extension or no sqlite PDO driver.'); - } - } -} diff --git a/framework/Share/test/Horde/Share/SqlTest.php b/framework/Share/test/Horde/Share/SqlTest.php deleted file mode 100644 index 7ddbe4cf3..000000000 --- a/framework/Share/test/Horde/Share/SqlTest.php +++ /dev/null @@ -1,192 +0,0 @@ - - * @category Horde - * @package Share - * @subpackage UnitTests - * @copyright 2010 The Horde Project (http://www.horde.org/) - * @license http://www.fsf.org/copyleft/lgpl.html LGPL - */ -class Horde_Share_SqlTest extends Horde_Share_TestBase -{ - protected static $db; - - public function testSetTable() - { - $this->assertEquals('test_shares', self::$share->getTable()); - self::$share->setTable('foo'); - $this->assertEquals('foo', self::$share->getTable()); - self::$share->setTable('test_shares'); - } - - public function testSetStorage() - { - self::$share->setStorage(self::$db); - $this->assertEquals(self::$db, self::$share->getStorage()); - } - - public function testAddShare() - { - $share = parent::baseAddShare(); - $this->assertInstanceOf('Horde_Share_Object_Sql', $share); - return $share->getId(); - } - - /** - * @depends testAddShare - */ - public function testPermissions($myshareid) - { - return parent::basePermissions($myshareid); - } - - /** - * @depends testAddShare - */ - public function testExists() - { - parent::baseExists(); - } - - /** - * @depends testPermissions - */ - public function testCountShares() - { - parent::baseCountShares(); - } - - /** - * @depends testPermissions - */ - public function testGetShare() - { - $shares = parent::baseGetShare(); - $this->assertInstanceOf('Horde_Share_Object_Sql', $shares[0]); - $this->assertInstanceOf('Horde_Share_Object_Sql', $shares[1]); - $this->assertInstanceOf('Horde_Share_Object_Sql', $shares[2]); - return $shares; - } - - /** - * @depends testGetShare - */ - public function testGetShareById(array $shares) - { - parent::baseGetShareById($shares); - } - - /** - * @depends testGetShare - */ - public function testGetShares(array $shares) - { - parent::baseGetShares($shares); - } - - /** - * @depends testPermissions - */ - public function testListAllShares() - { - parent::baseListAllShares(); - } - - /** - * @depends testPermissions - */ - public function testListSystemShares() - { - parent::baseListSystemShares(); - } - - /** - * @depends testGetShare - */ - public function testRemoveShare(array $share) - { - parent::baseRemoveShare($share); - } - - public static function setUpBeforeClass() - { - if (!extension_loaded('pdo') || - !in_array('sqlite', PDO::getAvailableDrivers())) { - return; - } - - self::$db = new Horde_Db_Adapter_Pdo_Sqlite(array('dbname' => ':memory:')); - //self::$db->setLogger(new Horde_Log_Logger(new Horde_Log_Handler_Stream(STDOUT))); - $migration = new Horde_Db_Migration_Base(self::$db); - - $t = $migration->createTable('test_shares', array('primaryKey' => 'share_id')); - //$t->column('share_id', 'integer', array('null' => false, 'autoincrement' => true)); - $t->column('share_name', 'string', array('limit' => 255, 'null' => false)); - $t->column('share_owner', 'string', array('limit' => 255)); - $t->column('share_flags', 'integer', array('default' => 0, 'null' => false)); - $t->column('perm_creator', 'integer', array('default' => 0, 'null' => false)); - $t->column('perm_default', 'integer', array('default' => 0, 'null' => false)); - $t->column('perm_guest', 'integer', array('default' => 0, 'null' => false)); - $t->column('attribute_name', 'string', array('limit' => 255)); - $t->column('attribute_desc', 'string', array('limit' => 255)); - $t->end(); - - $migration->addIndex('test_shares', array('share_name')); - $migration->addIndex('test_shares', array('share_owner')); - $migration->addIndex('test_shares', array('perm_creator')); - $migration->addIndex('test_shares', array('perm_default')); - $migration->addIndex('test_shares', array('perm_guest')); - - $t = $migration->createTable('test_shares_groups'); - $t->column('share_id', 'integer', array('null' => false)); - $t->column('group_uid', 'string', array('limit' => 255, 'null' => false)); - $t->column('perm', 'integer', array('null' => false)); - $t->end(); - - $migration->addIndex('test_shares_groups', array('share_id')); - $migration->addIndex('test_shares_groups', array('group_uid')); - $migration->addIndex('test_shares_groups', array('perm')); - - $t = $migration->createTable('test_shares_users'); - $t->column('share_id', 'integer', array('null' => false)); - $t->column('user_uid', 'string', array('limit' => 255)); - $t->column('perm', 'integer', array('null' => false)); - $t->end(); - - $migration->addIndex('test_shares_users', array('share_id')); - $migration->addIndex('test_shares_users', array('user_uid')); - $migration->addIndex('test_shares_users', array('perm')); - - $migration->migrate('up'); - - $group = new Horde_Group_Test(); - self::$share = new Horde_Share_Sql('test', 'john', new Horde_Perms(), $group); - self::$share->setStorage(self::$db); - - // FIXME - $GLOBALS['injector'] = new Horde_Injector(new Horde_Injector_TopLevel()); - $GLOBALS['injector']->setInstance('Horde_Group', $group); - } - - public static function tearDownAfterClass() - { - if (self::$db) { - $migration = new Horde_Db_Migration_Base(self::$db); - $migration->dropTable('test_shares'); - $migration->dropTable('test_shares_groups'); - $migration->dropTable('test_shares_users'); - } - } - - public function setUp() - { - if (!self::$db) { - $this->markTestSkipped('No sqlite extension or no sqlite PDO driver.'); - } - } -} diff --git a/framework/Share/test/Horde/Share/TestBase.php b/framework/Share/test/Horde/Share/TestBase.php deleted file mode 100644 index 7a810b640..000000000 --- a/framework/Share/test/Horde/Share/TestBase.php +++ /dev/null @@ -1,249 +0,0 @@ - - * @category Horde - * @package Share - * @subpackage UnitTests - * @copyright 2010 The Horde Project (http://www.horde.org/) - * @license http://www.fsf.org/copyleft/lgpl.html LGPL - */ -class Horde_Share_TestBase extends PHPUnit_Framework_TestCase -{ - protected static $share; - - public function testGetApp() - { - $this->assertEquals('test', self::$share->getApp()); - } - - public function baseAddShare() - { - $share = self::$share->newShare('john', 'myshare'); - $this->assertInstanceOf('Horde_Share_Object', $share); - self::$share->addShare($share); - return $share; - } - - public function basePermissions($myshareid) - { - // System share. - $share = self::$share->newShare(null, 'systemshare'); - $perm = $share->getPermission(); - $this->assertInstanceOf('Horde_Perms_Permission', $perm); - $perm->addDefaultPermission(Horde_Perms::SHOW | Horde_Perms::READ); - $share->setPermission($perm); - $share->save(); - $this->assertTrue($share->hasPermission('john', Horde_Perms::SHOW)); - $this->assertTrue($share->hasPermission('john', Horde_Perms::READ)); - $this->assertFalse($share->hasPermission('john', Horde_Perms::EDIT)); - $this->assertFalse($share->hasPermission('john', Horde_Perms::DELETE)); - - // Foreign share with user permissions. - $janeshare = self::$share->newShare('jane', 'janeshare'); - $janeshare->addUserPermission('john', Horde_Perms::SHOW | Horde_Perms::READ | Horde_Perms::EDIT); - $janeshare->save(); - $this->assertTrue($janeshare->hasPermission('john', Horde_Perms::SHOW)); - $this->assertTrue($janeshare->hasPermission('john', Horde_Perms::READ)); - $this->assertTrue($janeshare->hasPermission('john', Horde_Perms::EDIT)); - $this->assertFalse($janeshare->hasPermission('john', Horde_Perms::DELETE)); - - // Foreign share with group permissions. - $groupshare = self::$share->newShare('jane', 'groupshare'); - $groupshare->addGroupPermission('mygroup', Horde_Perms::SHOW | Horde_Perms::READ | Horde_Perms::DELETE); - $groupshare->save(); - $this->assertTrue($groupshare->hasPermission('john', Horde_Perms::SHOW)); - $this->assertTrue($groupshare->hasPermission('john', Horde_Perms::READ)); - $this->assertFalse($groupshare->hasPermission('john', Horde_Perms::EDIT)); - $this->assertTrue($groupshare->hasPermission('john', Horde_Perms::DELETE)); - - // Foreign share without permissions. - $share = self::$share->newShare('jane', 'noshare'); - $share->save(); - - return array($myshareid, $janeshare->getId(), $groupshare->getId()); - } - - public function baseExists() - { - $this->assertTrue(self::$share->exists('myshare')); - - // Reset cache. - self::$share->resetCache(); - - $this->assertTrue(self::$share->exists('myshare')); - } - - public function baseCountShares() - { - // Getting shares from cache. - $this->assertEquals(4, self::$share->countShares('john')); - $this->assertEquals(2, self::$share->countShares('john', Horde_Perms::EDIT)); - - // Reset cache. - self::$share->resetCache(); - - // Getting shares from backend. - $this->assertEquals(4, self::$share->countShares('john')); - $this->assertEquals(2, self::$share->countShares('john', Horde_Perms::EDIT)); - } - - public function baseGetShare() - { - $share = self::$share->getShare('myshare'); - $this->assertInstanceOf('Horde_Share_Object', $share); - - // Reset cache. - self::$share->resetCache(); - - $share = self::$share->getShare('myshare'); - $this->assertInstanceOf('Horde_Share_Object', $share); - - return array($share, self::$share->getShare('janeshare'), self::$share->getShare('groupshare')); - } - - public function baseGetShareById(array $shares) - { - $newshare = self::$share->getShareById($shares[0]->getId()); - $this->assertInstanceOf('Horde_Share_Object', $newshare); - $this->assertEquals($shares[0], $newshare); - $newshare = self::$share->getShareById($shares[1]->getId()); - $this->assertInstanceOf('Horde_Share_Object', $newshare); - $this->assertEquals($shares[1], $newshare); - $newshare = self::$share->getShareById($shares[2]->getId()); - $this->assertInstanceOf('Horde_Share_Object', $newshare); - $this->assertEquals($shares[2], $newshare); - - // Reset cache. - self::$share->resetCache(); - - $newshare = self::$share->getShareById($shares[0]->getId()); - $this->assertInstanceOf('Horde_Share_Object', $newshare); - $this->assertEquals($shares[0], $newshare); - $newshare = self::$share->getShareById($shares[1]->getId()); - $this->assertInstanceOf('Horde_Share_Object', $newshare); - $this->assertEquals($shares[1], $newshare); - $newshare = self::$share->getShareById($shares[2]->getId()); - $this->assertInstanceOf('Horde_Share_Object', $newshare); - $this->assertEquals($shares[2], $newshare); - } - - public function baseGetShares(array $shares) - { - $newshares = self::$share->getShares(array($shares[0]->getId(), $shares[1]->getId(), $shares[2]->getId())); - $this->assertType('array', $newshares); - $this->assertEquals(3, count($newshares)); - $this->assertArrayHasKey('myshare', $newshares); - $this->assertArrayHasKey('janeshare', $newshares); - $this->assertArrayHasKey('groupshare', $newshares); - $this->assertInstanceOf('Horde_Share_Object', $newshares['myshare']); - $this->assertInstanceOf('Horde_Share_Object', $newshares['janeshare']); - $this->assertInstanceOf('Horde_Share_Object', $newshares['groupshare']); - $this->assertEquals($newshares['myshare'], $shares[0]); - $this->assertEquals($newshares['janeshare'], $shares[1]); - $this->assertEquals($newshares['groupshare'], $shares[2]); - - // Reset cache. - self::$share->resetCache(); - - $newshares = self::$share->getShares(array($shares[0]->getId(), $shares[1]->getId(), $shares[2]->getId())); - $this->assertType('array', $newshares); - $this->assertEquals(3, count($newshares)); - $this->assertArrayHasKey('myshare', $newshares); - $this->assertArrayHasKey('janeshare', $newshares); - $this->assertArrayHasKey('groupshare', $newshares); - $this->assertInstanceOf('Horde_Share_Object', $newshares['myshare']); - $this->assertInstanceOf('Horde_Share_Object', $newshares['janeshare']); - $this->assertInstanceOf('Horde_Share_Object', $newshares['groupshare']); - $this->assertEquals($newshares['myshare'], $shares[0]); - $this->assertEquals($newshares['janeshare'], $shares[1]); - $this->assertEquals($newshares['groupshare'], $shares[2]); - } - - public function baseListAllShares() - { - // Getting shares from cache. - $shares = self::$share->listAllShares(); - $this->assertType('array', $shares); - $this->assertEquals(5, count($shares)); - $this->assertArrayHasKey('myshare', $shares); - $this->assertArrayHasKey('systemshare', $shares); - $this->assertArrayHasKey('janeshare', $shares); - $this->assertArrayHasKey('groupshare', $shares); - $this->assertArrayHasKey('noshare', $shares); - - // Reset cache. - self::$share->resetCache(); - - // Getting shares from backend. - $shares = self::$share->listAllShares(); - $this->assertType('array', $shares); - $this->assertEquals(5, count($shares)); - $this->assertArrayHasKey('myshare', $shares); - $this->assertArrayHasKey('systemshare', $shares); - $this->assertArrayHasKey('janeshare', $shares); - $this->assertArrayHasKey('groupshare', $shares); - $this->assertArrayHasKey('noshare', $shares); - } - - public function baseListSystemShares() - { - // Getting shares from cache. - $shares = self::$share->listSystemShares(); - $this->assertType('array', $shares); - $this->assertEquals(1, count($shares)); - $this->assertArrayHasKey('systemshare', $shares); - - // Reset cache. - self::$share->resetCache(); - - // Getting shares from backend. - $shares = self::$share->listSystemShares(); - $this->assertType('array', $shares); - $this->assertEquals(1, count($shares)); - $this->assertArrayHasKey('systemshare', $shares); - } - - public function baseRemoveShare(array $share) - { - self::$share->removeShare($share[0]); - try { - self::$share->getShareById($share[0]->getId()); - $this->fail('Share ' . $share[0]->getId() . ' should be removed by now.'); - } catch (Horde_Exception_NotFound $e) { - } - - // Reset cache. - self::$share->resetCache(); - - try { - self::$share->getShareById($share[0]->getId()); - $this->fail('Share ' . $share[0]->getId() . ' should be removed by now.'); - } catch (Horde_Exception_NotFound $e) { - } - } -} - -class Horde_Group_Test extends Horde_Group { - public function __construct() - { - } - - public function __wakeup() - { - } - - public function userIsInGroup($user, $gid, $subgroups = true) - { - return $user == 'john' && $gid == 'mygroup'; - } - - public function getGroupMemberships($user, $parentGroups = false) - { - return $user == 'john' ? array('mygroup' => 'mygroup') : array(); - } -} diff --git a/framework/Share/test/Horde/Share/conf.php.dist b/framework/Share/test/Horde/Share/conf.php.dist new file mode 100644 index 000000000..67ca8e78d --- /dev/null +++ b/framework/Share/test/Horde/Share/conf.php.dist @@ -0,0 +1,21 @@ +