ArraySessionHandlerTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. namespace Illuminate\Tests\Session;
  3. use Illuminate\Session\ArraySessionHandler;
  4. use Illuminate\Support\Carbon;
  5. use PHPUnit\Framework\TestCase;
  6. use SessionHandlerInterface;
  7. class ArraySessionHandlerTest extends TestCase
  8. {
  9. public function test_it_implements_the_session_handler_interface()
  10. {
  11. $this->assertInstanceOf(SessionHandlerInterface::class, new ArraySessionHandler(10));
  12. }
  13. public function test_it_initializes_the_session()
  14. {
  15. $handler = new ArraySessionHandler(10);
  16. $this->assertTrue($handler->open('', ''));
  17. }
  18. public function test_it_closes_the_session()
  19. {
  20. $handler = new ArraySessionHandler(10);
  21. $this->assertTrue($handler->close());
  22. }
  23. public function test_it_reads_data_from_the_session()
  24. {
  25. $handler = new ArraySessionHandler(10);
  26. $handler->write('foo', 'bar');
  27. $this->assertSame('bar', $handler->read('foo'));
  28. }
  29. public function test_it_reads_data_from_an_almost_expired_session()
  30. {
  31. $handler = new ArraySessionHandler(10);
  32. $handler->write('foo', 'bar');
  33. Carbon::setTestNow(Carbon::now()->addMinutes(10));
  34. $this->assertSame('bar', $handler->read('foo'));
  35. Carbon::setTestNow();
  36. }
  37. public function test_it_reads_data_from_an_expired_session()
  38. {
  39. $handler = new ArraySessionHandler(10);
  40. $handler->write('foo', 'bar');
  41. Carbon::setTestNow(Carbon::now()->addMinutes(10)->addSecond());
  42. $this->assertSame('', $handler->read('foo'));
  43. Carbon::setTestNow();
  44. }
  45. public function test_it_reads_data_from_a_non_existing_session()
  46. {
  47. $handler = new ArraySessionHandler(10);
  48. $this->assertSame('', $handler->read('foo'));
  49. }
  50. public function test_it_writes_session_data()
  51. {
  52. $handler = new ArraySessionHandler(10);
  53. $this->assertTrue($handler->write('foo', 'bar'));
  54. $this->assertSame('bar', $handler->read('foo'));
  55. $this->assertTrue($handler->write('foo', 'baz'));
  56. $this->assertSame('baz', $handler->read('foo'));
  57. }
  58. public function test_it_destroys_a_session()
  59. {
  60. $handler = new ArraySessionHandler(10);
  61. $this->assertTrue($handler->destroy('foo'));
  62. $handler->write('foo', 'bar');
  63. $this->assertTrue($handler->destroy('foo'));
  64. $this->assertSame('', $handler->read('foo'));
  65. }
  66. public function test_it_cleans_up_old_sessions()
  67. {
  68. $handler = new ArraySessionHandler(10);
  69. $this->assertTrue($handler->gc(300));
  70. $handler->write('foo', 'bar');
  71. $this->assertTrue($handler->gc(300));
  72. $this->assertSame('bar', $handler->read('foo'));
  73. Carbon::setTestNow(Carbon::now()->addSecond());
  74. $handler->write('baz', 'qux');
  75. Carbon::setTestNow(Carbon::now()->addMinutes(5));
  76. $this->assertTrue($handler->gc(300));
  77. $this->assertSame('', $handler->read('foo'));
  78. $this->assertSame('qux', $handler->read('baz'));
  79. Carbon::setTestNow();
  80. }
  81. }