| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <?php
- namespace Illuminate\Tests\Integration\Session;
- use Illuminate\Contracts\Debug\ExceptionHandler;
- use Illuminate\Http\Response;
- use Illuminate\Session\NullSessionHandler;
- use Illuminate\Session\TokenMismatchException;
- use Illuminate\Support\Facades\Route;
- use Illuminate\Support\Facades\Session;
- use Illuminate\Support\Str;
- use Mockery;
- use Orchestra\Testbench\TestCase;
- class SessionPersistenceTest extends TestCase
- {
- public function testSessionIsPersistedEvenIfExceptionIsThrownFromRoute()
- {
- $handler = new FakeNullSessionHandler;
- $this->assertFalse($handler->written);
- Session::extend('fake-null', function () use ($handler) {
- return $handler;
- });
- Route::get('/', function () {
- throw new TokenMismatchException;
- })->middleware('web');
- $this->get('/');
- $this->assertTrue($handler->written);
- }
- protected function getEnvironmentSetUp($app)
- {
- $app->instance(
- ExceptionHandler::class,
- $handler = Mockery::mock(ExceptionHandler::class)->shouldIgnoreMissing()
- );
- $handler->shouldReceive('render')->andReturn(new Response);
- $app['config']->set('app.key', Str::random(32));
- $app['config']->set('session.driver', 'fake-null');
- $app['config']->set('session.expire_on_close', true);
- }
- }
- class FakeNullSessionHandler extends NullSessionHandler
- {
- public $written = false;
- public function write($sessionId, $data)
- {
- $this->written = true;
- return true;
- }
- }
|