@@ -381,6 +381,30 @@ public function testSessionIsNotReported()
381381 $ listener (new RequestEvent ($ this ->createMock (HttpKernelInterface::class), $ request , HttpKernelInterface::MAIN_REQUEST ));
382382 }
383383
384+ public function testOnKernelResponseRemoveListener ()
385+ {
386+ $ tokenStorage = new TokenStorage ();
387+ $ tokenStorage ->setToken (new UsernamePasswordToken (new InMemoryUser ('test1 ' , 'pass1 ' ), 'phpunit ' , ['ROLE_USER ' ]));
388+
389+ $ request = new Request ();
390+ $ request ->attributes ->set ('_security_firewall_run ' , '_security_session ' );
391+
392+ $ session = new Session (new MockArraySessionStorage ());
393+ $ request ->setSession ($ session );
394+
395+ $ dispatcher = new EventDispatcher ();
396+ $ httpKernel = $ this ->createMock (HttpKernelInterface::class);
397+
398+ $ listener = new ContextListener ($ tokenStorage , [], 'session ' , null , $ dispatcher , null , \Closure::fromCallable ([$ tokenStorage , 'getToken ' ]));
399+ $ this ->assertEmpty ($ dispatcher ->getListeners ());
400+
401+ $ listener (new RequestEvent ($ httpKernel , $ request , HttpKernelInterface::MASTER_REQUEST ));
402+ $ this ->assertNotEmpty ($ dispatcher ->getListeners ());
403+
404+ $ listener ->onKernelResponse (new ResponseEvent ($ httpKernel , $ request , HttpKernelInterface::MASTER_REQUEST , new Response ()));
405+ $ this ->assertEmpty ($ dispatcher ->getListeners ());
406+ }
407+
384408 protected function runSessionOnKernelResponse ($ newToken , $ original = null )
385409 {
386410 $ session = new Session (new MockArraySessionStorage ());
0 commit comments