/**
  * @runInSeparateProcess
  * @preserveGlobalState disabled
  */
 public function testSessionTimeoutControlKey()
 {
     $middleware = new SessionWare(['name' => 'SessionWareSession', 'timeoutKey' => '__TIMEOUT__']);
     $middleware($this->request, $this->response, $this->callback);
     $limitTimeout = time() - SessionWare::SESSION_LIFETIME_EXTENDED;
     $_SESSION['__TIMEOUT__'] = $limitTimeout;
     session_write_close();
     $sessionHolder = new \stdClass();
     $middleware->addListener('pre.session_timeout', function ($sessionId) use($sessionHolder) {
         $sessionHolder->id = $sessionId;
     });
     $assert = $this;
     $middleware->addListener('post.session_timeout', function ($sessionId) use($assert, $sessionHolder) {
         $assert::assertNotNull($sessionHolder->id);
         $assert::assertNotEquals($sessionHolder->id, $sessionId);
     });
     $middleware($this->request, $this->response, $this->callback);
     self::assertEquals(PHP_SESSION_ACTIVE, session_status());
     self::assertTrue(array_key_exists('__TIMEOUT__', $_SESSION));
     self::assertNotEquals($_SESSION['__TIMEOUT__'], $limitTimeout);
 }