PageRenderTime 42ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/PHPUnit/Integration/Core/OptionTest.php

https://github.com/CodeYellowBV/piwik
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
  1. <?php
  2. /**
  3. * Piwik - free/libre analytics platform
  4. *
  5. * @link http://piwik.org
  6. * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  7. */
  8. use Piwik\Common;
  9. use Piwik\Db;
  10. use Piwik\Option;
  11. require_once "Option.php";
  12. /**
  13. * Class Core_OptionTest
  14. *
  15. * @group Core
  16. */
  17. class Core_OptionTest extends DatabaseTestCase
  18. {
  19. /**
  20. * @group Core
  21. */
  22. public function testGet()
  23. {
  24. // empty table, expect false (i.e., not found)
  25. $this->assertFalse(Option::get('anonymous_defaultReport'));
  26. // populate table, expect '1' (i.e., found)
  27. Db::query("INSERT INTO `" . Common::prefixTable('option') . "` VALUES ('anonymous_defaultReport', '1', false)");
  28. $this->assertSame('1', Option::get('anonymous_defaultReport'));
  29. // delete row (bypassing API), expect '1' (i.e., from cache)
  30. Db::query("DELETE FROM `" . Common::prefixTable('option') . "` WHERE option_name = ?", array('anonymous_defaultReport'));
  31. $this->assertSame('1', Option::get('anonymous_defaultReport'));
  32. // force cache reload, expect false (i.e., not found)
  33. Option::clearCache();
  34. $this->assertFalse(Option::get('anonymous_defaultReport'));
  35. }
  36. /**
  37. * @group Core
  38. */
  39. public function testGetOption()
  40. {
  41. // empty table, expect false (i.e., not found)
  42. $this->assertFalse(Option::get('anonymous_defaultReport'));
  43. // populate table, expect '1' (i.e., found)
  44. Db::query("INSERT INTO `" . Common::prefixTable('option') . "` VALUES ('anonymous_defaultReport', '1',true)");
  45. $this->assertSame('1', Option::get('anonymous_defaultReport'));
  46. // delete row (bypassing API), expect '1' (i.e., from cache)
  47. Db::query("DELETE FROM `" . Common::prefixTable('option') . "` WHERE option_name = ?", array('anonymous_defaultReport'));
  48. $this->assertSame('1', Option::get('anonymous_defaultReport'));
  49. // force cache reload, expect false (i.e., not found)
  50. Option::clearCache();
  51. $this->assertFalse(Option::get('anonymous_defaultReport'));
  52. }
  53. /**
  54. * @group Core
  55. */
  56. public function testSet()
  57. {
  58. // empty table, expect false (i.e., not found)
  59. $this->assertFalse(Option::get('anonymous_defaultReport'));
  60. // populate table, expect '1'
  61. Option::set('anonymous_defaultReport', '1', true);
  62. $this->assertSame('1', Option::get('anonymous_defaultReport'));
  63. }
  64. /**
  65. * @group Core
  66. */
  67. public function testSetOption()
  68. {
  69. // empty table, expect false (i.e., not found)
  70. $this->assertFalse(Option::get('anonymous_defaultReport'));
  71. // populate table, expect '1'
  72. Option::set('anonymous_defaultReport', '1', false);
  73. $this->assertSame('1', Option::get('anonymous_defaultReport'));
  74. }
  75. /**
  76. * @group Core
  77. */
  78. public function testDelete()
  79. {
  80. // empty table, expect false (i.e., not found)
  81. $this->assertFalse(Option::get('anonymous_defaultReport'));
  82. $this->assertFalse(Option::get('admin_defaultReport'));
  83. // populate table, expect '1'
  84. Option::set('anonymous_defaultReport', '1', true);
  85. Option::delete('_defaultReport');
  86. $this->assertSame('1', Option::get('anonymous_defaultReport'));
  87. // populate table, expect '2'
  88. Option::set('admin_defaultReport', '2', false);
  89. Option::delete('_defaultReport');
  90. $this->assertSame('2', Option::get('admin_defaultReport'));
  91. // delete with non-matching value, expect '1'
  92. Option::delete('anonymous_defaultReport', '2');
  93. $this->assertSame('1', Option::get('anonymous_defaultReport'));
  94. // delete with matching value, expect false
  95. Option::delete('anonymous_defaultReport', '1');
  96. $this->assertFalse(Option::get('anonymous_defaultReport'));
  97. // this shouldn't have been deleted, expect '2'
  98. $this->assertSame('2', Option::get('admin_defaultReport'));
  99. // deleted, expect false
  100. Option::delete('admin_defaultReport');
  101. $this->assertFalse(Option::get('admin_defaultReport'));
  102. }
  103. /**
  104. * @group Core
  105. */
  106. public function testDeleteLike()
  107. {
  108. // empty table, expect false (i.e., not found)
  109. $this->assertFalse(Option::get('anonymous_defaultReport'));
  110. $this->assertFalse(Option::get('admin_defaultReport'));
  111. $this->assertFalse(Option::get('visitor_defaultReport'));
  112. // insert guard - to test unescaped underscore
  113. Option::set('adefaultReport', '0', true);
  114. $this->assertTrue(Option::get('adefaultReport') === '0');
  115. // populate table, expect '1'
  116. Option::set('anonymous_defaultReport', '1', true);
  117. Option::deleteLike('\_defaultReport');
  118. $this->assertSame('1', Option::get('anonymous_defaultReport'));
  119. $this->assertSame('0', Option::get('adefaultReport'));
  120. // populate table, expect '2'
  121. Option::set('admin_defaultReport', '2', false);
  122. Option::deleteLike('\_defaultReport');
  123. $this->assertSame('2', Option::get('admin_defaultReport'));
  124. $this->assertSame('0', Option::get('adefaultReport'));
  125. // populate table, expect '3'
  126. Option::set('visitor_defaultReport', '3', false);
  127. Option::deleteLike('\_defaultReport');
  128. $this->assertSame('3', Option::get('visitor_defaultReport'));
  129. $this->assertSame('0', Option::get('adefaultReport'));
  130. // delete with non-matching value, expect '1'
  131. Option::deleteLike('%\_defaultReport', '4');
  132. $this->assertSame('1', Option::get('anonymous_defaultReport'));
  133. $this->assertSame('0', Option::get('adefaultReport'));
  134. // delete with matching pattern, expect false
  135. Option::deleteLike('%\_defaultReport', '1');
  136. $this->assertFalse(Option::get('anonymous_defaultReport'));
  137. $this->assertSame('0', Option::get('adefaultReport'));
  138. // this shouldn't have been deleted, expect '2' and '3'
  139. $this->assertSame('2', Option::get('admin_defaultReport'));
  140. $this->assertSame('3', Option::get('visitor_defaultReport'));
  141. $this->assertSame('0', Option::get('adefaultReport'));
  142. // deleted, expect false (except for the guard)
  143. Option::deleteLike('%\_defaultReport');
  144. $this->assertFalse(Option::get('admin_defaultReport'));
  145. $this->assertFalse(Option::get('visitor_defaultReport'));
  146. // unescaped backslash (single quotes)
  147. Option::deleteLike('%\_defaultReport');
  148. $this->assertSame('0', Option::get('adefaultReport'));
  149. // escaped backslash (single quotes)
  150. Option::deleteLike('%\\_defaultReport');
  151. $this->assertSame('0', Option::get('adefaultReport'));
  152. // unescaped backslash (double quotes)
  153. Option::deleteLike("%\_defaultReport");
  154. $this->assertSame('0', Option::get('adefaultReport'));
  155. // escaped backslash (double quotes)
  156. Option::deleteLike("%\\_defaultReport");
  157. $this->assertSame('0', Option::get('adefaultReport'));
  158. }
  159. }