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

/cake/tests/cases/libs/controller/components/cookie.test.php

https://github.com/yisraeldov/iPhPhoto
PHP | 439 lines | 249 code | 37 blank | 153 comment | 1 complexity | 7921111b56ba1608044f7276effdd026 MD5 | raw file
Possible License(s): Apache-2.0, MIT, LGPL-2.1
  1. <?php
  2. /* SVN FILE: $Id: cookie.test.php 8120 2009-03-19 20:25:10Z gwoo $ */
  3. /**
  4. * CookieComponentTest file
  5. *
  6. * Long description for file
  7. *
  8. * PHP versions 4 and 5
  9. *
  10. * CakePHP(tm) Tests <https://trac.cakephp.org/wiki/Developement/TestSuite>
  11. * Copyright 2005-2008, Cake Software Foundation, Inc. (http://www.cakefoundation.org)
  12. *
  13. * Licensed under The Open Group Test Suite License
  14. * Redistributions of files must retain the above copyright notice.
  15. *
  16. * @filesource
  17. * @copyright Copyright 2005-2008, Cake Software Foundation, Inc. (http://www.cakefoundation.org)
  18. * @link https://trac.cakephp.org/wiki/Developement/TestSuite CakePHP(tm) Tests
  19. * @package cake
  20. * @subpackage cake.tests.cases.libs.controller.components
  21. * @since CakePHP(tm) v 1.2.0.5435
  22. * @version $Revision: 8120 $
  23. * @modifiedby $LastChangedBy: gwoo $
  24. * @lastmodified $Date: 2009-03-19 22:25:10 +0200 (ה', 19 מרץ 2009) $
  25. * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License
  26. */
  27. App::import('Core', array('Component', 'Controller', 'Cookie'));
  28. /**
  29. * CookieComponentTestController class
  30. *
  31. * @package cake
  32. * @subpackage cake.tests.cases.libs.controller.components
  33. */
  34. class CookieComponentTestController extends Controller {
  35. /**
  36. * components property
  37. *
  38. * @var array
  39. * @access public
  40. */
  41. var $components = array('Cookie');
  42. /**
  43. * beforeFilter method
  44. *
  45. * @access public
  46. * @return void
  47. */
  48. function beforeFilter() {
  49. $this->Cookie->name = 'CakeTestCookie';
  50. $this->Cookie->time = 10;
  51. $this->Cookie->path = '/';
  52. $this->Cookie->domain = '';
  53. $this->Cookie->secure = false;
  54. $this->Cookie->key = 'somerandomhaskey';
  55. }
  56. }
  57. /**
  58. * CookieComponentTest class
  59. *
  60. * @package cake
  61. * @subpackage cake.tests.cases.libs.controller.components
  62. */
  63. class CookieComponentTest extends CakeTestCase {
  64. /**
  65. * Controller property
  66. *
  67. * @var CookieComponentTestController
  68. * @access public
  69. */
  70. var $Controller;
  71. /**
  72. * start
  73. *
  74. * @access public
  75. * @return void
  76. */
  77. function start() {
  78. $this->Controller = new CookieComponentTestController();
  79. $this->Controller->constructClasses();
  80. $this->Controller->Component->initialize($this->Controller);
  81. $this->Controller->beforeFilter();
  82. $this->Controller->Component->startup($this->Controller);
  83. $this->Controller->Cookie->destroy();
  84. }
  85. /**
  86. * end
  87. *
  88. * @access public
  89. * @return void
  90. */
  91. function end() {
  92. $this->Controller->Cookie->destroy();
  93. }
  94. /**
  95. * testCookieName
  96. *
  97. * @access public
  98. * @return void
  99. */
  100. function testCookieName() {
  101. $this->assertEqual($this->Controller->Cookie->name, 'CakeTestCookie');
  102. }
  103. /**
  104. * testSettingEncryptedCookieData
  105. *
  106. * @access public
  107. * @return void
  108. */
  109. function testSettingEncryptedCookieData() {
  110. $this->Controller->Cookie->write('Encrytped_array', array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!'));
  111. $this->Controller->Cookie->write('Encrytped_multi_cookies.name', 'CakePHP');
  112. $this->Controller->Cookie->write('Encrytped_multi_cookies.version', '1.2.0.x');
  113. $this->Controller->Cookie->write('Encrytped_multi_cookies.tag', 'CakePHP Rocks!');
  114. }
  115. /**
  116. * testReadEncryptedCookieData
  117. *
  118. * @access public
  119. * @return void
  120. */
  121. function testReadEncryptedCookieData() {
  122. $data = $this->Controller->Cookie->read('Encrytped_array');
  123. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  124. $this->assertEqual($data, $expected);
  125. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  126. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  127. $this->assertEqual($data, $expected);
  128. }
  129. /**
  130. * testSettingPlainCookieData
  131. *
  132. * @access public
  133. * @return void
  134. */
  135. function testSettingPlainCookieData() {
  136. $this->Controller->Cookie->write('Plain_array', array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!'), false);
  137. $this->Controller->Cookie->write('Plain_multi_cookies.name', 'CakePHP', false);
  138. $this->Controller->Cookie->write('Plain_multi_cookies.version', '1.2.0.x', false);
  139. $this->Controller->Cookie->write('Plain_multi_cookies.tag', 'CakePHP Rocks!', false);
  140. }
  141. /**
  142. * testReadPlainCookieData
  143. *
  144. * @access public
  145. * @return void
  146. */
  147. function testReadPlainCookieData() {
  148. $data = $this->Controller->Cookie->read('Plain_array');
  149. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  150. $this->assertEqual($data, $expected);
  151. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  152. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  153. $this->assertEqual($data, $expected);
  154. }
  155. /**
  156. * testWritePlainCookieArray
  157. *
  158. * @access public
  159. * @return void
  160. */
  161. function testWritePlainCookieArray() {
  162. $this->Controller->Cookie->write(array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' => 'CakePHP Rocks!'), null, false);
  163. $this->assertEqual($this->Controller->Cookie->read('name'), 'CakePHP');
  164. $this->assertEqual($this->Controller->Cookie->read('version'), '1.2.0.x');
  165. $this->assertEqual($this->Controller->Cookie->read('tag'), 'CakePHP Rocks!');
  166. $this->Controller->Cookie->del('name');
  167. $this->Controller->Cookie->del('version');
  168. $this->Controller->Cookie->del('tag');
  169. }
  170. /**
  171. * testReadingCookieValue
  172. *
  173. * @access public
  174. * @return void
  175. */
  176. function testReadingCookieValue() {
  177. $data = $this->Controller->Cookie->read();
  178. $expected = array(
  179. 'Encrytped_array' => array(
  180. 'name' => 'CakePHP',
  181. 'version' => '1.2.0.x',
  182. 'tag' => 'CakePHP Rocks!'),
  183. 'Encrytped_multi_cookies' => array(
  184. 'name' => 'CakePHP',
  185. 'version' => '1.2.0.x',
  186. 'tag' => 'CakePHP Rocks!'),
  187. 'Plain_array' => array(
  188. 'name' => 'CakePHP',
  189. 'version' => '1.2.0.x',
  190. 'tag' => 'CakePHP Rocks!'),
  191. 'Plain_multi_cookies' => array(
  192. 'name' => 'CakePHP',
  193. 'version' => '1.2.0.x',
  194. 'tag' => 'CakePHP Rocks!'));
  195. $this->assertEqual($data, $expected);
  196. }
  197. /**
  198. * testDeleteCookieValue
  199. *
  200. * @access public
  201. * @return void
  202. */
  203. function testDeleteCookieValue() {
  204. $this->Controller->Cookie->del('Encrytped_multi_cookies.name');
  205. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  206. $expected = array('version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  207. $this->assertEqual($data, $expected);
  208. $this->Controller->Cookie->del('Encrytped_array');
  209. $data = $this->Controller->Cookie->read('Encrytped_array');
  210. $expected = array();
  211. $this->assertEqual($data, $expected);
  212. $this->Controller->Cookie->del('Plain_multi_cookies.name');
  213. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  214. $expected = array('version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  215. $this->assertEqual($data, $expected);
  216. $this->Controller->Cookie->del('Plain_array');
  217. $data = $this->Controller->Cookie->read('Plain_array');
  218. $expected = array();
  219. $this->assertEqual($data, $expected);
  220. }
  221. /**
  222. * testSettingCookiesWithArray
  223. *
  224. * @access public
  225. * @return void
  226. */
  227. function testSettingCookiesWithArray() {
  228. $this->Controller->Cookie->destroy();
  229. $this->Controller->Cookie->write(array('Encrytped_array' => array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!')));
  230. $this->Controller->Cookie->write(array('Encrytped_multi_cookies.name' => 'CakePHP'));
  231. $this->Controller->Cookie->write(array('Encrytped_multi_cookies.version' => '1.2.0.x'));
  232. $this->Controller->Cookie->write(array('Encrytped_multi_cookies.tag' => 'CakePHP Rocks!'));
  233. $this->Controller->Cookie->write(array('Plain_array' => array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!')), null, false);
  234. $this->Controller->Cookie->write(array('Plain_multi_cookies.name' => 'CakePHP'), null, false);
  235. $this->Controller->Cookie->write(array('Plain_multi_cookies.version' => '1.2.0.x'), null, false);
  236. $this->Controller->Cookie->write(array('Plain_multi_cookies.tag' => 'CakePHP Rocks!'), null, false);
  237. }
  238. /**
  239. * testReadingCookieArray
  240. *
  241. * @access public
  242. * @return void
  243. */
  244. function testReadingCookieArray() {
  245. $data = $this->Controller->Cookie->read('Encrytped_array.name');
  246. $expected = 'CakePHP';
  247. $this->assertEqual($data, $expected);
  248. $data = $this->Controller->Cookie->read('Encrytped_array.version');
  249. $expected = '1.2.0.x';
  250. $this->assertEqual($data, $expected);
  251. $data = $this->Controller->Cookie->read('Encrytped_array.tag');
  252. $expected = 'CakePHP Rocks!';
  253. $this->assertEqual($data, $expected);
  254. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies.name');
  255. $expected = 'CakePHP';
  256. $this->assertEqual($data, $expected);
  257. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies.version');
  258. $expected = '1.2.0.x';
  259. $this->assertEqual($data, $expected);
  260. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies.tag');
  261. $expected = 'CakePHP Rocks!';
  262. $this->assertEqual($data, $expected);
  263. $data = $this->Controller->Cookie->read('Plain_array.name');
  264. $expected = 'CakePHP';
  265. $this->assertEqual($data, $expected);
  266. $data = $this->Controller->Cookie->read('Plain_array.version');
  267. $expected = '1.2.0.x';
  268. $this->assertEqual($data, $expected);
  269. $data = $this->Controller->Cookie->read('Plain_array.tag');
  270. $expected = 'CakePHP Rocks!';
  271. $this->assertEqual($data, $expected);
  272. $data = $this->Controller->Cookie->read('Plain_multi_cookies.name');
  273. $expected = 'CakePHP';
  274. $this->assertEqual($data, $expected);
  275. $data = $this->Controller->Cookie->read('Plain_multi_cookies.version');
  276. $expected = '1.2.0.x';
  277. $this->assertEqual($data, $expected);
  278. $data = $this->Controller->Cookie->read('Plain_multi_cookies.tag');
  279. $expected = 'CakePHP Rocks!';
  280. $this->assertEqual($data, $expected);
  281. }
  282. /**
  283. * testReadingCookieDataOnStartup
  284. *
  285. * @access public
  286. * @return void
  287. */
  288. function testReadingCookieDataOnStartup() {
  289. $this->Controller->Cookie->destroy();
  290. $data = $this->Controller->Cookie->read('Encrytped_array');
  291. $expected = array();
  292. $this->assertEqual($data, $expected);
  293. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  294. $expected = array();
  295. $this->assertEqual($data, $expected);
  296. $data = $this->Controller->Cookie->read('Plain_array');
  297. $expected = array();
  298. $this->assertEqual($data, $expected);
  299. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  300. $expected = array();
  301. $this->assertEqual($data, $expected);
  302. $_COOKIE['CakeTestCookie'] = array(
  303. 'Encrytped_array' => $this->__encrypt(array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!')),
  304. 'Encrytped_multi_cookies' => array(
  305. 'name' => $this->__encrypt('CakePHP'),
  306. 'version' => $this->__encrypt('1.2.0.x'),
  307. 'tag' => $this->__encrypt('CakePHP Rocks!')),
  308. 'Plain_array' => 'name|CakePHP,version|1.2.0.x,tag|CakePHP Rocks!',
  309. 'Plain_multi_cookies' => array(
  310. 'name' => 'CakePHP',
  311. 'version' => '1.2.0.x',
  312. 'tag' => 'CakePHP Rocks!'));
  313. $this->Controller->Cookie->startup();
  314. $data = $this->Controller->Cookie->read('Encrytped_array');
  315. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  316. $this->assertEqual($data, $expected);
  317. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  318. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  319. $this->assertEqual($data, $expected);
  320. $data = $this->Controller->Cookie->read('Plain_array');
  321. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  322. $this->assertEqual($data, $expected);
  323. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  324. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  325. $this->assertEqual($data, $expected);
  326. $this->Controller->Cookie->destroy();
  327. unset($_COOKIE['CakeTestCookie']);
  328. }
  329. /**
  330. * testReadingCookieDataWithoutStartup
  331. *
  332. * @access public
  333. * @return void
  334. */
  335. function testReadingCookieDataWithoutStartup() {
  336. $data = $this->Controller->Cookie->read('Encrytped_array');
  337. $expected = array();
  338. $this->assertEqual($data, $expected);
  339. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  340. $expected = array();
  341. $this->assertEqual($data, $expected);
  342. $data = $this->Controller->Cookie->read('Plain_array');
  343. $expected = array();
  344. $this->assertEqual($data, $expected);
  345. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  346. $expected = array();
  347. $this->assertEqual($data, $expected);
  348. $_COOKIE['CakeTestCookie'] = array(
  349. 'Encrytped_array' => $this->__encrypt(array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!')),
  350. 'Encrytped_multi_cookies' => array(
  351. 'name' => $this->__encrypt('CakePHP'),
  352. 'version' => $this->__encrypt('1.2.0.x'),
  353. 'tag' => $this->__encrypt('CakePHP Rocks!')),
  354. 'Plain_array' => 'name|CakePHP,version|1.2.0.x,tag|CakePHP Rocks!',
  355. 'Plain_multi_cookies' => array(
  356. 'name' => 'CakePHP',
  357. 'version' => '1.2.0.x',
  358. 'tag' => 'CakePHP Rocks!'));
  359. $data = $this->Controller->Cookie->read('Encrytped_array');
  360. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  361. $this->assertEqual($data, $expected);
  362. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  363. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  364. $this->assertEqual($data, $expected);
  365. $data = $this->Controller->Cookie->read('Plain_array');
  366. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  367. $this->assertEqual($data, $expected);
  368. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  369. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  370. $this->assertEqual($data, $expected);
  371. $this->Controller->Cookie->destroy();
  372. unset($_COOKIE['CakeTestCookie']);
  373. }
  374. /**
  375. * encrypt method
  376. *
  377. * @param mixed $value
  378. * @return string
  379. * @access private
  380. */
  381. function __encrypt($value) {
  382. if (is_array($value)) {
  383. $value = $this->__implode($value);
  384. }
  385. return "Q2FrZQ==." . base64_encode(Security::cipher($value, $this->Controller->Cookie->key));
  386. }
  387. /**
  388. * implode method
  389. *
  390. * @param array $value
  391. * @return string
  392. * @access private
  393. */
  394. function __implode($array) {
  395. $string = '';
  396. foreach ($array as $key => $value) {
  397. $string .= ',' . $key . '|' . $value;
  398. }
  399. return substr($string, 1);
  400. }
  401. }
  402. ?>