public function testTo() { $mockery = Mockery::mock(\SessionHandlerInterface::class); $mockery->shouldReceive('write')->once()->with('session_id', serialize(['user' => ['id' => 317, 'name' => 'wandu']])); // nothing $mockery->shouldReceive('gc')->once(); $factory = new SessionFactory($mockery, ['gc_frequency' => 1]); $cookieJar = new CookieJar(); $factory->toCookieJar(new Session('session_id', ['user' => ['id' => 317, 'name' => 'wandu']]), $cookieJar); $this->assertEquals('session_id', $cookieJar->get('WdSessId')); // exists in setCookies $setCookies = iterator_to_array($cookieJar->getIterator()); $this->assertInstanceOf(Cookie::class, $setCookies['WdSessId']); }
/** * {@inheritdoc} */ public function __invoke(ServerRequestInterface $request, Closure $next) { $cookieJar = $this->cookieJarFactory->fromServerRequest($request); $session = $this->sessionFactory->fromCookieJar($cookieJar); $request = $request->withAttribute('cookie', $cookieJar)->withAttribute('session', $session); // run next try { $response = $next($request); } catch (HttpException $exception) { $response = $exception->getResponse(); $this->sessionFactory->toCookieJar($session, $cookieJar); $exception->setResponse($this->cookieJarFactory->toResponse($cookieJar, $response)); throw $exception; } $this->sessionFactory->toCookieJar($session, $cookieJar); return $this->cookieJarFactory->toResponse($cookieJar, $response); }