/tests/PHPUnit/Integration/Core/OptionTest.php
PHP | 192 lines | 98 code | 33 blank | 61 comment | 0 complexity | c5d0c47092583a390044214c2d8db3f2 MD5 | raw file
Possible License(s): LGPL-3.0, JSON, MIT, GPL-3.0, LGPL-2.1, GPL-2.0, AGPL-1.0, BSD-2-Clause, BSD-3-Clause
- <?php
- /**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
- use Piwik\Common;
- use Piwik\Db;
- use Piwik\Option;
- require_once "Option.php";
- /**
- * Class Core_OptionTest
- *
- * @group Core
- */
- class Core_OptionTest extends DatabaseTestCase
- {
- /**
- * @group Core
- */
- public function testGet()
- {
- // empty table, expect false (i.e., not found)
- $this->assertFalse(Option::get('anonymous_defaultReport'));
- // populate table, expect '1' (i.e., found)
- Db::query("INSERT INTO `" . Common::prefixTable('option') . "` VALUES ('anonymous_defaultReport', '1', false)");
- $this->assertSame('1', Option::get('anonymous_defaultReport'));
- // delete row (bypassing API), expect '1' (i.e., from cache)
- Db::query("DELETE FROM `" . Common::prefixTable('option') . "` WHERE option_name = ?", array('anonymous_defaultReport'));
- $this->assertSame('1', Option::get('anonymous_defaultReport'));
- // force cache reload, expect false (i.e., not found)
- Option::clearCache();
- $this->assertFalse(Option::get('anonymous_defaultReport'));
- }
- /**
- * @group Core
- */
- public function testGetOption()
- {
- // empty table, expect false (i.e., not found)
- $this->assertFalse(Option::get('anonymous_defaultReport'));
- // populate table, expect '1' (i.e., found)
- Db::query("INSERT INTO `" . Common::prefixTable('option') . "` VALUES ('anonymous_defaultReport', '1',true)");
- $this->assertSame('1', Option::get('anonymous_defaultReport'));
- // delete row (bypassing API), expect '1' (i.e., from cache)
- Db::query("DELETE FROM `" . Common::prefixTable('option') . "` WHERE option_name = ?", array('anonymous_defaultReport'));
- $this->assertSame('1', Option::get('anonymous_defaultReport'));
- // force cache reload, expect false (i.e., not found)
- Option::clearCache();
- $this->assertFalse(Option::get('anonymous_defaultReport'));
- }
- /**
- * @group Core
- */
- public function testSet()
- {
- // empty table, expect false (i.e., not found)
- $this->assertFalse(Option::get('anonymous_defaultReport'));
- // populate table, expect '1'
- Option::set('anonymous_defaultReport', '1', true);
- $this->assertSame('1', Option::get('anonymous_defaultReport'));
- }
- /**
- * @group Core
- */
- public function testSetOption()
- {
- // empty table, expect false (i.e., not found)
- $this->assertFalse(Option::get('anonymous_defaultReport'));
- // populate table, expect '1'
- Option::set('anonymous_defaultReport', '1', false);
- $this->assertSame('1', Option::get('anonymous_defaultReport'));
- }
- /**
- * @group Core
- */
- public function testDelete()
- {
- // empty table, expect false (i.e., not found)
- $this->assertFalse(Option::get('anonymous_defaultReport'));
- $this->assertFalse(Option::get('admin_defaultReport'));
- // populate table, expect '1'
- Option::set('anonymous_defaultReport', '1', true);
- Option::delete('_defaultReport');
- $this->assertSame('1', Option::get('anonymous_defaultReport'));
- // populate table, expect '2'
- Option::set('admin_defaultReport', '2', false);
- Option::delete('_defaultReport');
- $this->assertSame('2', Option::get('admin_defaultReport'));
- // delete with non-matching value, expect '1'
- Option::delete('anonymous_defaultReport', '2');
- $this->assertSame('1', Option::get('anonymous_defaultReport'));
- // delete with matching value, expect false
- Option::delete('anonymous_defaultReport', '1');
- $this->assertFalse(Option::get('anonymous_defaultReport'));
- // this shouldn't have been deleted, expect '2'
- $this->assertSame('2', Option::get('admin_defaultReport'));
- // deleted, expect false
- Option::delete('admin_defaultReport');
- $this->assertFalse(Option::get('admin_defaultReport'));
- }
- /**
- * @group Core
- */
- public function testDeleteLike()
- {
- // empty table, expect false (i.e., not found)
- $this->assertFalse(Option::get('anonymous_defaultReport'));
- $this->assertFalse(Option::get('admin_defaultReport'));
- $this->assertFalse(Option::get('visitor_defaultReport'));
- // insert guard - to test unescaped underscore
- Option::set('adefaultReport', '0', true);
- $this->assertTrue(Option::get('adefaultReport') === '0');
- // populate table, expect '1'
- Option::set('anonymous_defaultReport', '1', true);
- Option::deleteLike('\_defaultReport');
- $this->assertSame('1', Option::get('anonymous_defaultReport'));
- $this->assertSame('0', Option::get('adefaultReport'));
- // populate table, expect '2'
- Option::set('admin_defaultReport', '2', false);
- Option::deleteLike('\_defaultReport');
- $this->assertSame('2', Option::get('admin_defaultReport'));
- $this->assertSame('0', Option::get('adefaultReport'));
- // populate table, expect '3'
- Option::set('visitor_defaultReport', '3', false);
- Option::deleteLike('\_defaultReport');
- $this->assertSame('3', Option::get('visitor_defaultReport'));
- $this->assertSame('0', Option::get('adefaultReport'));
- // delete with non-matching value, expect '1'
- Option::deleteLike('%\_defaultReport', '4');
- $this->assertSame('1', Option::get('anonymous_defaultReport'));
- $this->assertSame('0', Option::get('adefaultReport'));
- // delete with matching pattern, expect false
- Option::deleteLike('%\_defaultReport', '1');
- $this->assertFalse(Option::get('anonymous_defaultReport'));
- $this->assertSame('0', Option::get('adefaultReport'));
- // this shouldn't have been deleted, expect '2' and '3'
- $this->assertSame('2', Option::get('admin_defaultReport'));
- $this->assertSame('3', Option::get('visitor_defaultReport'));
- $this->assertSame('0', Option::get('adefaultReport'));
- // deleted, expect false (except for the guard)
- Option::deleteLike('%\_defaultReport');
- $this->assertFalse(Option::get('admin_defaultReport'));
- $this->assertFalse(Option::get('visitor_defaultReport'));
- // unescaped backslash (single quotes)
- Option::deleteLike('%\_defaultReport');
- $this->assertSame('0', Option::get('adefaultReport'));
- // escaped backslash (single quotes)
- Option::deleteLike('%\\_defaultReport');
- $this->assertSame('0', Option::get('adefaultReport'));
- // unescaped backslash (double quotes)
- Option::deleteLike("%\_defaultReport");
- $this->assertSame('0', Option::get('adefaultReport'));
- // escaped backslash (double quotes)
- Option::deleteLike("%\\_defaultReport");
- $this->assertSame('0', Option::get('adefaultReport'));
- }
- }