SessionPayloadTest.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. use Laravel\Session\Payload;
  3. class SessionPayloadTest extends PHPUnit_Framework_TestCase {
  4. public function testHasMethodIndicatesIfItemExistsInPayload()
  5. {
  6. $payload = new Payload($this->getDummyData());
  7. $this->assertTrue($payload->has('name'));
  8. $this->assertTrue($payload->has('age'));
  9. $this->assertTrue($payload->has('gender'));
  10. $this->assertFalse($payload->has('something'));
  11. $this->assertFalse($payload->has('id'));
  12. $this->assertFalse($payload->has('last_activity'));
  13. }
  14. public function testGetMethodReturnsItemFromPayload()
  15. {
  16. $payload = new Payload($this->getDummyData());
  17. $this->assertEquals($payload->get('name'), 'Taylor');
  18. $this->assertEquals($payload->get('age'), 25);
  19. $this->assertEquals($payload->get('gender'), 'male');
  20. }
  21. public function testGetMethodReturnsDefaultWhenItemDoesntExist()
  22. {
  23. $payload = new Payload($this->getDummyData());
  24. $this->assertNull($payload->get('something'));
  25. $this->assertEquals('Taylor', $payload->get('something', 'Taylor'));
  26. $this->assertEquals('Taylor', $payload->get('something', function() {return 'Taylor';}));
  27. }
  28. public function testPutMethodAddsToPayload()
  29. {
  30. $payload = new Payload($this->getDummyData());
  31. $payload->put('name', 'Weldon');
  32. $payload->put('workmate', 'Joe');
  33. $this->assertEquals($payload->session['data']['name'], 'Weldon');
  34. $this->assertEquals($payload->session['data']['workmate'], 'Joe');
  35. $this->assertInstanceOf('Laravel\\Session\\Payload', $payload->put('something', 'test'));
  36. }
  37. public function testFlashMethodPutsItemInFlashData()
  38. {
  39. $payload = new Payload(array());
  40. $payload->flash('name', 'Taylor');
  41. $this->assertEquals($payload->session['data'][':new:name'], 'Taylor');
  42. $this->assertInstanceOf('Laravel\\Session\\Payload', $payload->flash('something', 'test'));
  43. }
  44. public function testReflashKeepsAllSessionData()
  45. {
  46. $payload = new Payload(array('data' => array(':old:name' => 'Taylor', ':old:age' => 25)));
  47. $payload->reflash();
  48. $this->assertTrue(isset($payload->session['data'][':new:name']));
  49. $this->assertTrue(isset($payload->session['data'][':new:age']));
  50. $this->assertFalse(isset($payload->session['data'][':old:name']));
  51. $this->assertFalse(isset($payload->session['data'][':old:age']));
  52. }
  53. public function testKeepMethodKeepsSpecificSessionData()
  54. {
  55. $payload = new Payload(array('data' => array(':old:name' => 'Taylor', ':old:age' => 25)));
  56. $payload->keep('name');
  57. $this->assertTrue(isset($payload->session['data'][':new:name']));
  58. $this->assertFalse(isset($payload->session['data'][':old:name']));
  59. $payload = new Payload(array('data' => array(':old:name' => 'Taylor', ':old:age' => 25)));
  60. $payload->keep(array('name', 'age'));
  61. $this->assertTrue(isset($payload->session['data'][':new:name']));
  62. $this->assertTrue(isset($payload->session['data'][':new:age']));
  63. $this->assertFalse(isset($payload->session['data'][':old:name']));
  64. $this->assertFalse(isset($payload->session['data'][':old:age']));
  65. }
  66. public function testFlushMethodShouldClearPayloadData()
  67. {
  68. $payload = new Payload(array('data' => array('name' => 'Taylor')));
  69. $payload->flush();
  70. $this->assertEquals(count($payload->session['data']), 0);
  71. }
  72. public function testRegenerateMethodSetsNewSessionID()
  73. {
  74. $payload = new Payload(array('id' => 'something'));
  75. $payload->regenerate();
  76. $this->assertEquals(strlen($payload->session['id']), 40);
  77. }
  78. public function testAgeMethodSetsLastActivityTime()
  79. {
  80. $data = $this->getDummyData();
  81. unset($data['last_activity']);
  82. $payload = new Payload($data);
  83. $payload->age();
  84. $this->assertTrue(isset($payload->session['last_activity']));
  85. }
  86. public function testAgeMethodAgesAllFlashData()
  87. {
  88. $payload = new Payload($this->getDummyData());
  89. $payload->age();
  90. $this->assertTrue(isset($payload->session['data'][':old:age']));
  91. $this->assertFalse(isset($payload->session['data'][':old:gender']));
  92. }
  93. public function testAgeMethodReturnsSessionArray()
  94. {
  95. $payload = new Payload($this->getDummyData());
  96. $age = $payload->age();
  97. $this->assertEquals($age['id'], 'something');
  98. }
  99. // ---------------------------------------------------------------------
  100. // Support Functions
  101. // ---------------------------------------------------------------------
  102. public function getDummyData()
  103. {
  104. return array('id' => 'something', 'last_activity' => time(), 'data' => array(
  105. 'name' => 'Taylor',
  106. ':new:age' => 25,
  107. ':old:gender' => 'male',
  108. 'state' => 'Oregon',
  109. ));
  110. }
  111. }