PageRenderTime 57ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

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

http://skygames.googlecode.com/
PHP | 405 lines | 249 code | 41 blank | 115 comment | 1 complexity | de1bd5ab7d95de0e8ecf8580830b3537 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, CC-BY-SA-3.0
  1. <?php
  2. /* SVN FILE: $Id: cookie.test.php 7805 2008-10-30 17:30:26Z AD7six $ */
  3. /**
  4. * Short description for 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.tests
  20. * @subpackage cake.tests.cases.libs.controller.components
  21. * @since CakePHP(tm) v 1.2.0.5435
  22. * @version $Revision: 7805 $
  23. * @modifiedby $LastChangedBy: AD7six $
  24. * @lastmodified $Date: 2008-10-30 12:30:26 -0500 (Thu, 30 Oct 2008) $
  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. class CookieComponentTestController extends Controller {
  29. var $components = array('Cookie');
  30. function beforeFilter() {
  31. $this->Cookie->name = 'CakeTestCookie';
  32. $this->Cookie->time = 10;
  33. $this->Cookie->path = '/';
  34. $this->Cookie->domain = '';
  35. $this->Cookie->secure = false;
  36. $this->Cookie->key = 'somerandomhaskey';
  37. }
  38. }
  39. /**
  40. * Short description for class.
  41. *
  42. * @package cake.tests
  43. * @subpackage cake.tests.cases.libs.controller.components
  44. */
  45. class CookieComponentTest extends CakeTestCase {
  46. var $Controller;
  47. function __encrypt($value) {
  48. if (is_array($value)) {
  49. $value = $this->__implode($value);
  50. }
  51. return "Q2FrZQ==." .base64_encode(Security::cipher($value, $this->Controller->Cookie->key));
  52. }
  53. function __implode($array) {
  54. $string = '';
  55. foreach ($array as $key => $value) {
  56. $string .= ',' . $key . '|' . $value;
  57. }
  58. return substr($string, 1);
  59. }
  60. /**
  61. * start
  62. *
  63. * @access public
  64. * @return void
  65. */
  66. function start() {
  67. $this->Controller = new CookieComponentTestController();
  68. $this->Controller->constructClasses();
  69. $this->Controller->Component->initialize($this->Controller);
  70. $this->Controller->beforeFilter();
  71. $this->Controller->Component->startup($this->Controller);
  72. $this->Controller->Cookie->destroy();
  73. }
  74. /**
  75. * testCookieName
  76. *
  77. * @access public
  78. * @return void
  79. */
  80. function testCookieName() {
  81. $this->assertEqual($this->Controller->Cookie->name, 'CakeTestCookie');
  82. }
  83. /**
  84. * testSettingEncryptedCookieData
  85. *
  86. * @access public
  87. * @return void
  88. */
  89. function testSettingEncryptedCookieData() {
  90. $this->Controller->Cookie->write('Encrytped_array', array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!'));
  91. $this->Controller->Cookie->write('Encrytped_multi_cookies.name', 'CakePHP');
  92. $this->Controller->Cookie->write('Encrytped_multi_cookies.version', '1.2.0.x');
  93. $this->Controller->Cookie->write('Encrytped_multi_cookies.tag', 'CakePHP Rocks!');
  94. }
  95. /**
  96. * testReadEncryptedCookieData
  97. *
  98. * @access public
  99. * @return void
  100. */
  101. function testReadEncryptedCookieData() {
  102. $data = $this->Controller->Cookie->read('Encrytped_array');
  103. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  104. $this->assertEqual($data, $expected);
  105. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  106. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  107. $this->assertEqual($data, $expected);
  108. }
  109. /**
  110. * testSettingPlainCookieData
  111. *
  112. * @access public
  113. * @return void
  114. */
  115. function testSettingPlainCookieData() {
  116. $this->Controller->Cookie->write('Plain_array', array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!'), false);
  117. $this->Controller->Cookie->write('Plain_multi_cookies.name', 'CakePHP', false);
  118. $this->Controller->Cookie->write('Plain_multi_cookies.version', '1.2.0.x', false);
  119. $this->Controller->Cookie->write('Plain_multi_cookies.tag', 'CakePHP Rocks!', false);
  120. }
  121. /**
  122. * testReadPlainCookieData
  123. *
  124. * @access public
  125. * @return void
  126. */
  127. function testReadPlainCookieData() {
  128. $data = $this->Controller->Cookie->read('Plain_array');
  129. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  130. $this->assertEqual($data, $expected);
  131. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  132. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  133. $this->assertEqual($data, $expected);
  134. }
  135. /**
  136. * testWritePlainCookieArray
  137. *
  138. * @access public
  139. * @return void
  140. */
  141. function testWritePlainCookieArray() {
  142. $this->Controller->Cookie->write(array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' => 'CakePHP Rocks!'), null, false);
  143. $this->assertEqual($this->Controller->Cookie->read('name'), 'CakePHP');
  144. $this->assertEqual($this->Controller->Cookie->read('version'), '1.2.0.x');
  145. $this->assertEqual($this->Controller->Cookie->read('tag'), 'CakePHP Rocks!');
  146. $this->Controller->Cookie->del('name');
  147. $this->Controller->Cookie->del('version');
  148. $this->Controller->Cookie->del('tag');
  149. }
  150. /**
  151. * testReadingCookieValue
  152. *
  153. * @access public
  154. * @return void
  155. */
  156. function testReadingCookieValue() {
  157. $data = $this->Controller->Cookie->read();
  158. $expected = array(
  159. 'Encrytped_array' => array(
  160. 'name' => 'CakePHP',
  161. 'version' => '1.2.0.x',
  162. 'tag' => 'CakePHP Rocks!'),
  163. 'Encrytped_multi_cookies' => array(
  164. 'name' => 'CakePHP',
  165. 'version' => '1.2.0.x',
  166. 'tag' => 'CakePHP Rocks!'),
  167. 'Plain_array' => array(
  168. 'name' => 'CakePHP',
  169. 'version' => '1.2.0.x',
  170. 'tag' => 'CakePHP Rocks!'),
  171. 'Plain_multi_cookies' => array(
  172. 'name' => 'CakePHP',
  173. 'version' => '1.2.0.x',
  174. 'tag' => 'CakePHP Rocks!'));
  175. $this->assertEqual($data, $expected);
  176. }
  177. /**
  178. * testDeleteCookieValue
  179. *
  180. * @access public
  181. * @return void
  182. */
  183. function testDeleteCookieValue() {
  184. $this->Controller->Cookie->del('Encrytped_multi_cookies.name');
  185. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  186. $expected = array('version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  187. $this->assertEqual($data, $expected);
  188. $this->Controller->Cookie->del('Encrytped_array');
  189. $data = $this->Controller->Cookie->read('Encrytped_array');
  190. $expected = array();
  191. $this->assertEqual($data, $expected);
  192. $this->Controller->Cookie->del('Plain_multi_cookies.name');
  193. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  194. $expected = array('version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  195. $this->assertEqual($data, $expected);
  196. $this->Controller->Cookie->del('Plain_array');
  197. $data = $this->Controller->Cookie->read('Plain_array');
  198. $expected = array();
  199. $this->assertEqual($data, $expected);
  200. }
  201. /**
  202. * testSettingCookiesWithArray
  203. *
  204. * @access public
  205. * @return void
  206. */
  207. function testSettingCookiesWithArray() {
  208. $this->Controller->Cookie->destroy();
  209. $this->Controller->Cookie->write(array('Encrytped_array' => array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!')));
  210. $this->Controller->Cookie->write(array('Encrytped_multi_cookies.name' => 'CakePHP'));
  211. $this->Controller->Cookie->write(array('Encrytped_multi_cookies.version' => '1.2.0.x'));
  212. $this->Controller->Cookie->write(array('Encrytped_multi_cookies.tag' => 'CakePHP Rocks!'));
  213. $this->Controller->Cookie->write(array('Plain_array' => array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!')), null, false);
  214. $this->Controller->Cookie->write(array('Plain_multi_cookies.name' => 'CakePHP'), null, false);
  215. $this->Controller->Cookie->write(array('Plain_multi_cookies.version' => '1.2.0.x'), null, false);
  216. $this->Controller->Cookie->write(array('Plain_multi_cookies.tag' => 'CakePHP Rocks!'), null, false);
  217. }
  218. /**
  219. * testReadingCookieArray
  220. *
  221. * @access public
  222. * @return void
  223. */
  224. function testReadingCookieArray() {
  225. $data = $this->Controller->Cookie->read('Encrytped_array.name');
  226. $expected = 'CakePHP';
  227. $this->assertEqual($data, $expected);
  228. $data = $this->Controller->Cookie->read('Encrytped_array.version');
  229. $expected = '1.2.0.x';
  230. $this->assertEqual($data, $expected);
  231. $data = $this->Controller->Cookie->read('Encrytped_array.tag');
  232. $expected = 'CakePHP Rocks!';
  233. $this->assertEqual($data, $expected);
  234. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies.name');
  235. $expected = 'CakePHP';
  236. $this->assertEqual($data, $expected);
  237. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies.version');
  238. $expected = '1.2.0.x';
  239. $this->assertEqual($data, $expected);
  240. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies.tag');
  241. $expected = 'CakePHP Rocks!';
  242. $this->assertEqual($data, $expected);
  243. $data = $this->Controller->Cookie->read('Plain_array.name');
  244. $expected = 'CakePHP';
  245. $this->assertEqual($data, $expected);
  246. $data = $this->Controller->Cookie->read('Plain_array.version');
  247. $expected = '1.2.0.x';
  248. $this->assertEqual($data, $expected);
  249. $data = $this->Controller->Cookie->read('Plain_array.tag');
  250. $expected = 'CakePHP Rocks!';
  251. $this->assertEqual($data, $expected);
  252. $data = $this->Controller->Cookie->read('Plain_multi_cookies.name');
  253. $expected = 'CakePHP';
  254. $this->assertEqual($data, $expected);
  255. $data = $this->Controller->Cookie->read('Plain_multi_cookies.version');
  256. $expected = '1.2.0.x';
  257. $this->assertEqual($data, $expected);
  258. $data = $this->Controller->Cookie->read('Plain_multi_cookies.tag');
  259. $expected = 'CakePHP Rocks!';
  260. $this->assertEqual($data, $expected);
  261. }
  262. /**
  263. * testReadingCookieDataOnStartup
  264. *
  265. * @access public
  266. * @return void
  267. */
  268. function testReadingCookieDataOnStartup() {
  269. $this->Controller->Cookie->destroy();
  270. $data = $this->Controller->Cookie->read('Encrytped_array');
  271. $expected = array();
  272. $this->assertEqual($data, $expected);
  273. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  274. $expected = array();
  275. $this->assertEqual($data, $expected);
  276. $data = $this->Controller->Cookie->read('Plain_array');
  277. $expected = array();
  278. $this->assertEqual($data, $expected);
  279. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  280. $expected = array();
  281. $this->assertEqual($data, $expected);
  282. $_COOKIE['CakeTestCookie'] = array(
  283. 'Encrytped_array' => $this->__encrypt(array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!')),
  284. 'Encrytped_multi_cookies' => array(
  285. 'name' => $this->__encrypt('CakePHP'),
  286. 'version' => $this->__encrypt('1.2.0.x'),
  287. 'tag' => $this->__encrypt('CakePHP Rocks!')),
  288. 'Plain_array' => 'name|CakePHP,version|1.2.0.x,tag|CakePHP Rocks!',
  289. 'Plain_multi_cookies' => array(
  290. 'name' => 'CakePHP',
  291. 'version' => '1.2.0.x',
  292. 'tag' => 'CakePHP Rocks!'));
  293. $this->Controller->Cookie->startup();
  294. $data = $this->Controller->Cookie->read('Encrytped_array');
  295. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  296. $this->assertEqual($data, $expected);
  297. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  298. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  299. $this->assertEqual($data, $expected);
  300. $data = $this->Controller->Cookie->read('Plain_array');
  301. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  302. $this->assertEqual($data, $expected);
  303. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  304. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  305. $this->assertEqual($data, $expected);
  306. $this->Controller->Cookie->destroy();
  307. unset($_COOKIE['CakeTestCookie']);
  308. }
  309. /**
  310. * testReadingCookieDataWithoutStartup
  311. *
  312. * @access public
  313. * @return void
  314. */
  315. function testReadingCookieDataWithoutStartup() {
  316. $data = $this->Controller->Cookie->read('Encrytped_array');
  317. $expected = array();
  318. $this->assertEqual($data, $expected);
  319. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  320. $expected = array();
  321. $this->assertEqual($data, $expected);
  322. $data = $this->Controller->Cookie->read('Plain_array');
  323. $expected = array();
  324. $this->assertEqual($data, $expected);
  325. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  326. $expected = array();
  327. $this->assertEqual($data, $expected);
  328. $_COOKIE['CakeTestCookie'] = array(
  329. 'Encrytped_array' => $this->__encrypt(array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!')),
  330. 'Encrytped_multi_cookies' => array(
  331. 'name' => $this->__encrypt('CakePHP'),
  332. 'version' => $this->__encrypt('1.2.0.x'),
  333. 'tag' => $this->__encrypt('CakePHP Rocks!')),
  334. 'Plain_array' => 'name|CakePHP,version|1.2.0.x,tag|CakePHP Rocks!',
  335. 'Plain_multi_cookies' => array(
  336. 'name' => 'CakePHP',
  337. 'version' => '1.2.0.x',
  338. 'tag' => 'CakePHP Rocks!'));
  339. $data = $this->Controller->Cookie->read('Encrytped_array');
  340. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  341. $this->assertEqual($data, $expected);
  342. $data = $this->Controller->Cookie->read('Encrytped_multi_cookies');
  343. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  344. $this->assertEqual($data, $expected);
  345. $data = $this->Controller->Cookie->read('Plain_array');
  346. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  347. $this->assertEqual($data, $expected);
  348. $data = $this->Controller->Cookie->read('Plain_multi_cookies');
  349. $expected = array('name' => 'CakePHP', 'version' => '1.2.0.x', 'tag' =>'CakePHP Rocks!');
  350. $this->assertEqual($data, $expected);
  351. $this->Controller->Cookie->destroy();
  352. unset($_COOKIE['CakeTestCookie']);
  353. }
  354. /**
  355. * end
  356. *
  357. * @access public
  358. * @return void
  359. */
  360. function end() {
  361. $this->Controller->Cookie->destroy();
  362. }
  363. }
  364. ?>