4
0

SessionTest.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. declare(strict_types=1);
  3. final class SessionTest extends \PHPUnit\Framework\TestCase {
  4. private string $originalSavePath = '';
  5. private string $testSavePath = '';
  6. #[\Override]
  7. protected function setUp(): void {
  8. $this->originalSavePath = (string)ini_get('session.save_path');
  9. }
  10. #[\Override]
  11. protected function tearDown(): void {
  12. if (is_dir($this->testSavePath)) {
  13. rmdir($this->testSavePath);
  14. }
  15. ini_set('session.save_path', $this->originalSavePath);
  16. }
  17. public function testRegenerateIDOnHealthyStorage(): void {
  18. $save_path = session_save_path() ?: sys_get_temp_dir();
  19. Minz_Session::init('FreshRSS', volatile: false);
  20. self::assertTrue(file_exists($save_path . '/sess_' . session_id()));
  21. $previous_id = session_id();
  22. Minz_Session::_param('probe', 'ok');
  23. Minz_Session::regenerateID('FreshRSS');
  24. self::assertNotSame($previous_id, session_id());
  25. self::assertFalse(file_exists($save_path . '/sess_' . $previous_id));
  26. self::assertTrue(file_exists($save_path . '/sess_' . session_id()));
  27. self::assertSame('ok', Minz_Session::paramString('probe'));
  28. session_unset();
  29. session_write_close();
  30. unlink($save_path . '/sess_' . session_id());
  31. }
  32. public function testRegenerateIDOnBrokenStorage(): void {
  33. $this->testSavePath = sys_get_temp_dir() . '/frss_test_sessions_' . bin2hex(random_bytes(4));
  34. self::assertNotFalse(mkdir($this->testSavePath, 0700));
  35. ini_set('session.save_path', $this->testSavePath . '/missing_subdir');
  36. $this->expectException(RuntimeException::class);
  37. Minz_Session::regenerateID('FreshRSS');
  38. }
  39. }