/**
  * Test session termination.
  */
 public function testTerminateSession()
 {
     $test_session_id = 's123';
     $session = new Session($test_session_id, 123);
     $user_repository = new UserRepository([new AuthenticatedUser(1, '*****@*****.**', 'Ilija Studen', '123')]);
     $session_repository = new SessionRepository([new Session($test_session_id, '*****@*****.**')]);
     $browser_session_adapter = new BrowserSessionAdapter($user_repository, $session_repository, $this->cookies);
     $this->assertInstanceOf(Session::class, $session_repository->getById($test_session_id));
     $termination_transport = $browser_session_adapter->terminate($session);
     $this->assertInstanceOf(TransportInterface::class, $termination_transport);
     $this->assertNull($session_repository->getById($test_session_id));
 }
 /**
  * Test if authentication is applied based on request attribute.
  */
 public function testUserIsAuthenticated()
 {
     $user = new AuthenticatedUser(1, '*****@*****.**', 'Ilija Studen', '123');
     $user_repository = new UserRepository(['*****@*****.**' => new AuthenticatedUser(1, '*****@*****.**', 'Ilija Studen', '123')]);
     $session_repository = new SessionRepository([new Session('my-session-id', '*****@*****.**')]);
     $session_cookie_name = 'test-session-cookie';
     $session_adapter = new BrowserSessionAdapter($user_repository, $session_repository, $this->cookies, $session_cookie_name);
     $session = $session_adapter->authenticate($user, []);
     /** @var ServerRequestInterface $request */
     $request = $this->request->withAttribute('test_transport', new AuthorizationTransport($session_adapter, $user, $session, [1, 2, 3]));
     /** @var ResponseInterface $response */
     $response = call_user_func(new ApplyAuthenticationMiddleware('test_transport'), $request, $this->response);
     $this->assertInstanceOf(ResponseInterface::class, $response);
     $set_cookie_header = $response->getHeaderLine('Set-Cookie');
     $this->assertNotEmpty($set_cookie_header);
     $this->assertContains($session_cookie_name, $set_cookie_header);
     $this->assertContains('my-session-id', $set_cookie_header);
 }