PageRenderTime 28ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

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

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