/**
  * @param FilterResponseEvent $event
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if (!$event->isMasterRequest()) {
         return;
     }
     $request = $event->getRequest();
     $response = $event->getResponse();
     if (substr((string) $response->getStatusCode(), 0, 1) !== '2') {
         // TODO UT this
         return;
     }
     if (RequestListener::isModifyingMethodRequest($request)) {
         $version = $this->store->update($request, (string) microtime(true));
     } elseif (!RequestListener::isIgnoreMethodRequest($request)) {
         if (!($version = $this->store->fetch($request))) {
             $version = $this->store->register($request, (string) microtime(true));
         }
     }
     if (isset($version)) {
         $response->headers->set('ETag', $version);
     }
 }
 /**
  * @param string $method
  * @param array  $server
  */
 private function invokeListener($method, array $server = [])
 {
     $request = self::createRequest($method, $server);
     $this->eventMock->expects($this->once())->method('getRequest')->willReturn($request);
     $this->listener->onKernelRequest($this->eventMock);
 }