diff options
Diffstat (limited to 'tests/lib/allconfig.php')
-rw-r--r-- | tests/lib/allconfig.php | 419 |
1 files changed, 0 insertions, 419 deletions
diff --git a/tests/lib/allconfig.php b/tests/lib/allconfig.php deleted file mode 100644 index 869bf9b8d66..00000000000 --- a/tests/lib/allconfig.php +++ /dev/null @@ -1,419 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Morris Jobke <hey@morrisjobke.de> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -namespace Test; - -/** - * Class TestAllConfig - * - * @group DB - * - * @package Test - */ -class TestAllConfig extends \Test\TestCase { - - /** @var \OCP\IDBConnection */ - protected $connection; - - protected function getConfig($systemConfig = null, $connection = null) { - if($this->connection === null) { - $this->connection = \OC::$server->getDatabaseConnection(); - } - if($connection === null) { - $connection = $this->connection; - } - if($systemConfig === null) { - $systemConfig = $this->getMockBuilder('\OC\SystemConfig') - ->disableOriginalConstructor() - ->getMock(); - } - return new \OC\AllConfig($systemConfig, $connection); - } - - public function testDeleteUserValue() { - $config = $this->getConfig(); - - // preparation - add something to the database - $this->connection->executeUpdate( - 'INSERT INTO `*PREFIX*preferences` (`userid`, `appid`, ' . - '`configkey`, `configvalue`) VALUES (?, ?, ?, ?)', - array('userDelete', 'appDelete', 'keyDelete', 'valueDelete') - ); - - $config->deleteUserValue('userDelete', 'appDelete', 'keyDelete'); - - $result = $this->connection->executeQuery( - 'SELECT COUNT(*) AS `count` FROM `*PREFIX*preferences` WHERE `userid` = ?', - array('userDelete') - )->fetch(); - $actualCount = $result['count']; - - $this->assertEquals(0, $actualCount, 'There was one value in the database and after the tests there should be no entry left.'); - } - - public function testSetUserValue() { - $selectAllSQL = 'SELECT `userid`, `appid`, `configkey`, `configvalue` FROM `*PREFIX*preferences` WHERE `userid` = ?'; - $config = $this->getConfig(); - - $config->setUserValue('userSet', 'appSet', 'keySet', 'valueSet'); - - $result = $this->connection->executeQuery($selectAllSQL, array('userSet'))->fetchAll(); - - $this->assertEquals(1, count($result)); - $this->assertEquals(array( - 'userid' => 'userSet', - 'appid' => 'appSet', - 'configkey' => 'keySet', - 'configvalue' => 'valueSet' - ), $result[0]); - - // test if the method overwrites existing database entries - $config->setUserValue('userSet', 'appSet', 'keySet', 'valueSet2'); - - $result = $this->connection->executeQuery($selectAllSQL, array('userSet'))->fetchAll(); - - $this->assertEquals(1, count($result)); - $this->assertEquals(array( - 'userid' => 'userSet', - 'appid' => 'appSet', - 'configkey' => 'keySet', - 'configvalue' => 'valueSet2' - ), $result[0]); - - // cleanup - it therefore relies on the successful execution of the previous test - $config->deleteUserValue('userSet', 'appSet', 'keySet'); - } - - public function testSetUserValueWithPreCondition() { - $config = $this->getConfig(); - - $selectAllSQL = 'SELECT `userid`, `appid`, `configkey`, `configvalue` FROM `*PREFIX*preferences` WHERE `userid` = ?'; - - $config->setUserValue('userPreCond', 'appPreCond', 'keyPreCond', 'valuePreCond'); - - $result = $this->connection->executeQuery($selectAllSQL, array('userPreCond'))->fetchAll(); - - $this->assertEquals(1, count($result)); - $this->assertEquals(array( - 'userid' => 'userPreCond', - 'appid' => 'appPreCond', - 'configkey' => 'keyPreCond', - 'configvalue' => 'valuePreCond' - ), $result[0]); - - // test if the method overwrites existing database entries with valid precond - $config->setUserValue('userPreCond', 'appPreCond', 'keyPreCond', 'valuePreCond2', 'valuePreCond'); - - $result = $this->connection->executeQuery($selectAllSQL, array('userPreCond'))->fetchAll(); - - $this->assertEquals(1, count($result)); - $this->assertEquals(array( - 'userid' => 'userPreCond', - 'appid' => 'appPreCond', - 'configkey' => 'keyPreCond', - 'configvalue' => 'valuePreCond2' - ), $result[0]); - - // cleanup - $config->deleteUserValue('userPreCond', 'appPreCond', 'keyPreCond'); - } - - /** - * @expectedException \OCP\PreConditionNotMetException - */ - public function testSetUserValueWithPreConditionFailure() { - $config = $this->getConfig(); - - $selectAllSQL = 'SELECT `userid`, `appid`, `configkey`, `configvalue` FROM `*PREFIX*preferences` WHERE `userid` = ?'; - - $config->setUserValue('userPreCond1', 'appPreCond', 'keyPreCond', 'valuePreCond'); - - $result = $this->connection->executeQuery($selectAllSQL, array('userPreCond1'))->fetchAll(); - - $this->assertEquals(1, count($result)); - $this->assertEquals(array( - 'userid' => 'userPreCond1', - 'appid' => 'appPreCond', - 'configkey' => 'keyPreCond', - 'configvalue' => 'valuePreCond' - ), $result[0]); - - // test if the method overwrites existing database entries with valid precond - $config->setUserValue('userPreCond1', 'appPreCond', 'keyPreCond', 'valuePreCond2', 'valuePreCond3'); - - $result = $this->connection->executeQuery($selectAllSQL, array('userPreCond1'))->fetchAll(); - - $this->assertEquals(1, count($result)); - $this->assertEquals(array( - 'userid' => 'userPreCond1', - 'appid' => 'appPreCond', - 'configkey' => 'keyPreCond', - 'configvalue' => 'valuePreCond' - ), $result[0]); - - // cleanup - $config->deleteUserValue('userPreCond1', 'appPreCond', 'keyPreCond'); - } - - public function testSetUserValueUnchanged() { - // TODO - FIXME until the dependency injection is handled properly (in AllConfig) - $this->markTestSkipped('Skipped because this is just testable if database connection can be injected'); - - $resultMock = $this->getMockBuilder('\Doctrine\DBAL\Driver\Statement') - ->disableOriginalConstructor()->getMock(); - $resultMock->expects($this->once()) - ->method('fetchColumn') - ->will($this->returnValue('valueSetUnchanged')); - - $connectionMock = $this->getMock('\OCP\IDBConnection'); - $connectionMock->expects($this->once()) - ->method('executeQuery') - ->with($this->equalTo('SELECT `configvalue` FROM `*PREFIX*preferences` '. - 'WHERE `userid` = ? AND `appid` = ? AND `configkey` = ?'), - $this->equalTo(array('userSetUnchanged', 'appSetUnchanged', 'keySetUnchanged'))) - ->will($this->returnValue($resultMock)); - $connectionMock->expects($this->never()) - ->method('executeUpdate'); - - $config = $this->getConfig(null, $connectionMock); - - $config->setUserValue('userSetUnchanged', 'appSetUnchanged', 'keySetUnchanged', 'valueSetUnchanged'); - } - - public function testGetUserValue() { - $config = $this->getConfig(); - - // setup - it therefore relies on the successful execution of the previous test - $config->setUserValue('userGet', 'appGet', 'keyGet', 'valueGet'); - $value = $config->getUserValue('userGet', 'appGet', 'keyGet'); - - $this->assertEquals('valueGet', $value); - - $result = $this->connection->executeQuery( - 'SELECT `userid`, `appid`, `configkey`, `configvalue` FROM `*PREFIX*preferences` WHERE `userid` = ?', - array('userGet') - )->fetchAll(); - - $this->assertEquals(1, count($result)); - $this->assertEquals(array( - 'userid' => 'userGet', - 'appid' => 'appGet', - 'configkey' => 'keyGet', - 'configvalue' => 'valueGet' - ), $result[0]); - - // drop data from database - but the config option should be cached in the config object - $this->connection->executeUpdate('DELETE FROM `*PREFIX*preferences` WHERE `userid` = ?', array('userGet')); - - // testing the caching mechanism - $value = $config->getUserValue('userGet', 'appGet', 'keyGet'); - - $this->assertEquals('valueGet', $value); - - $result = $this->connection->executeQuery( - 'SELECT `userid`, `appid`, `configkey`, `configvalue` FROM `*PREFIX*preferences` WHERE `userid` = ?', - array('userGet') - )->fetchAll(); - - $this->assertEquals(0, count($result)); - } - - public function testGetUserKeys() { - $config = $this->getConfig(); - - // preparation - add something to the database - $data = array( - array('userFetch', 'appFetch1', 'keyFetch1', 'value1'), - array('userFetch', 'appFetch1', 'keyFetch2', 'value2'), - array('userFetch', 'appFetch2', 'keyFetch3', 'value3'), - array('userFetch', 'appFetch1', 'keyFetch4', 'value4'), - array('userFetch', 'appFetch4', 'keyFetch1', 'value5'), - array('userFetch', 'appFetch5', 'keyFetch1', 'value6'), - array('userFetch2', 'appFetch', 'keyFetch1', 'value7') - ); - foreach ($data as $entry) { - $this->connection->executeUpdate( - 'INSERT INTO `*PREFIX*preferences` (`userid`, `appid`, ' . - '`configkey`, `configvalue`) VALUES (?, ?, ?, ?)', - $entry - ); - } - - $value = $config->getUserKeys('userFetch', 'appFetch1'); - $this->assertEquals(array('keyFetch1', 'keyFetch2', 'keyFetch4'), $value); - - $value = $config->getUserKeys('userFetch2', 'appFetch'); - $this->assertEquals(array('keyFetch1'), $value); - - // cleanup - $this->connection->executeUpdate('DELETE FROM `*PREFIX*preferences`'); - } - - public function testGetUserValueDefault() { - $config = $this->getConfig(); - - $this->assertEquals('', $config->getUserValue('userGetUnset', 'appGetUnset', 'keyGetUnset')); - $this->assertEquals(null, $config->getUserValue('userGetUnset', 'appGetUnset', 'keyGetUnset', null)); - $this->assertEquals('foobar', $config->getUserValue('userGetUnset', 'appGetUnset', 'keyGetUnset', 'foobar')); - } - - public function testGetUserValueForUsers() { - $config = $this->getConfig(); - - // preparation - add something to the database - $data = array( - array('userFetch1', 'appFetch2', 'keyFetch1', 'value1'), - array('userFetch2', 'appFetch2', 'keyFetch1', 'value2'), - array('userFetch3', 'appFetch2', 'keyFetch1', 3), - array('userFetch4', 'appFetch2', 'keyFetch1', 'value4'), - array('userFetch5', 'appFetch2', 'keyFetch1', 'value5'), - array('userFetch6', 'appFetch2', 'keyFetch1', 'value6'), - array('userFetch7', 'appFetch2', 'keyFetch1', 'value7') - ); - foreach ($data as $entry) { - $this->connection->executeUpdate( - 'INSERT INTO `*PREFIX*preferences` (`userid`, `appid`, ' . - '`configkey`, `configvalue`) VALUES (?, ?, ?, ?)', - $entry - ); - } - - $value = $config->getUserValueForUsers('appFetch2', 'keyFetch1', - array('userFetch1', 'userFetch2', 'userFetch3', 'userFetch5')); - $this->assertEquals(array( - 'userFetch1' => 'value1', - 'userFetch2' => 'value2', - 'userFetch3' => 3, - 'userFetch5' => 'value5' - ), $value); - - $value = $config->getUserValueForUsers('appFetch2', 'keyFetch1', - array('userFetch1', 'userFetch4', 'userFetch9')); - $this->assertEquals(array( - 'userFetch1' => 'value1', - 'userFetch4' => 'value4' - ), $value, 'userFetch9 is an non-existent user and should not be shown.'); - - // cleanup - $this->connection->executeUpdate('DELETE FROM `*PREFIX*preferences`'); - } - - public function testDeleteAllUserValues() { - $config = $this->getConfig(); - - // preparation - add something to the database - $data = array( - array('userFetch3', 'appFetch1', 'keyFetch1', 'value1'), - array('userFetch3', 'appFetch1', 'keyFetch2', 'value2'), - array('userFetch3', 'appFetch2', 'keyFetch3', 'value3'), - array('userFetch3', 'appFetch1', 'keyFetch4', 'value4'), - array('userFetch3', 'appFetch4', 'keyFetch1', 'value5'), - array('userFetch3', 'appFetch5', 'keyFetch1', 'value6'), - array('userFetch4', 'appFetch2', 'keyFetch1', 'value7') - ); - foreach ($data as $entry) { - $this->connection->executeUpdate( - 'INSERT INTO `*PREFIX*preferences` (`userid`, `appid`, ' . - '`configkey`, `configvalue`) VALUES (?, ?, ?, ?)', - $entry - ); - } - - $config->deleteAllUserValues('userFetch3'); - - $result = $this->connection->executeQuery( - 'SELECT COUNT(*) AS `count` FROM `*PREFIX*preferences`' - )->fetch(); - $actualCount = $result['count']; - - $this->assertEquals(1, $actualCount, 'After removing `userFetch3` there should be exactly 1 entry left.'); - - // cleanup - $this->connection->executeUpdate('DELETE FROM `*PREFIX*preferences`'); - } - - public function testDeleteAppFromAllUsers() { - $config = $this->getConfig(); - - // preparation - add something to the database - $data = array( - array('userFetch5', 'appFetch1', 'keyFetch1', 'value1'), - array('userFetch5', 'appFetch1', 'keyFetch2', 'value2'), - array('userFetch5', 'appFetch2', 'keyFetch3', 'value3'), - array('userFetch5', 'appFetch1', 'keyFetch4', 'value4'), - array('userFetch5', 'appFetch4', 'keyFetch1', 'value5'), - array('userFetch5', 'appFetch5', 'keyFetch1', 'value6'), - array('userFetch6', 'appFetch2', 'keyFetch1', 'value7') - ); - foreach ($data as $entry) { - $this->connection->executeUpdate( - 'INSERT INTO `*PREFIX*preferences` (`userid`, `appid`, ' . - '`configkey`, `configvalue`) VALUES (?, ?, ?, ?)', - $entry - ); - } - - $config->deleteAppFromAllUsers('appFetch1'); - - $result = $this->connection->executeQuery( - 'SELECT COUNT(*) AS `count` FROM `*PREFIX*preferences`' - )->fetch(); - $actualCount = $result['count']; - - $this->assertEquals(4, $actualCount, 'After removing `appFetch1` there should be exactly 4 entries left.'); - - $config->deleteAppFromAllUsers('appFetch2'); - - $result = $this->connection->executeQuery( - 'SELECT COUNT(*) AS `count` FROM `*PREFIX*preferences`' - )->fetch(); - $actualCount = $result['count']; - - $this->assertEquals(2, $actualCount, 'After removing `appFetch2` there should be exactly 2 entries left.'); - - // cleanup - $this->connection->executeUpdate('DELETE FROM `*PREFIX*preferences`'); - } - - public function testGetUsersForUserValue() { - // mock the check for the database to run the correct SQL statements for each database type - $systemConfig = $this->getMockBuilder('\OC\SystemConfig') - ->disableOriginalConstructor() - ->getMock(); - $systemConfig->expects($this->once()) - ->method('getValue') - ->with($this->equalTo('dbtype'), - $this->equalTo('sqlite')) - ->will($this->returnValue(\OC::$server->getConfig()->getSystemValue('dbtype', 'sqlite'))); - $config = $this->getConfig($systemConfig); - - // preparation - add something to the database - $data = array( - array('user1', 'appFetch9', 'keyFetch9', 'value9'), - array('user2', 'appFetch9', 'keyFetch9', 'value9'), - array('user3', 'appFetch9', 'keyFetch9', 'value8'), - array('user4', 'appFetch9', 'keyFetch8', 'value9'), - array('user5', 'appFetch8', 'keyFetch9', 'value9'), - array('user6', 'appFetch9', 'keyFetch9', 'value9'), - ); - foreach ($data as $entry) { - $this->connection->executeUpdate( - 'INSERT INTO `*PREFIX*preferences` (`userid`, `appid`, ' . - '`configkey`, `configvalue`) VALUES (?, ?, ?, ?)', - $entry - ); - } - - $value = $config->getUsersForUserValue('appFetch9', 'keyFetch9', 'value9'); - $this->assertEquals(array('user1', 'user2', 'user6'), $value); - - // cleanup - $this->connection->executeUpdate('DELETE FROM `*PREFIX*preferences`'); - } - -} |