저자: Fabien Potencier (fabien.potencier@symfony-project.com)
상속: extends HeaderBag
 function it_should_not_encrypt_a_cookie(Request $request, FilterResponseEvent $event, ResponseHeaderBag $headers, Response $response)
 {
     $currentCookie = new Cookie('not_session', 'test', 3600, '/account', 'example.com', true, false);
     $headers->getCookies()->willReturn([$currentCookie]);
     $response->headers = $headers;
     $event->getRequest()->willReturn($request);
     $event->getRequestType()->willReturn(HttpKernelInterface::MASTER_REQUEST);
     $event->getResponse()->willReturn($response);
     $this->onKernelResponse($event)->shouldReturn(null);
 }
 public function testCacheControlHeader()
 {
     $bag = new ResponseHeaderBag(array());
     $this->assertEquals('no-cache', $bag->get('Cache-Control'));
     $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
     $bag = new ResponseHeaderBag(array('Cache-Control' => 'public'));
     $this->assertEquals('public', $bag->get('Cache-Control'));
     $this->assertTrue($bag->hasCacheControlDirective('public'));
     $bag = new ResponseHeaderBag(array('ETag' => 'abcde'));
     $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
     $this->assertTrue($bag->hasCacheControlDirective('private'));
     $this->assertTrue($bag->hasCacheControlDirective('must-revalidate'));
     $this->assertFalse($bag->hasCacheControlDirective('max-age'));
     $bag = new ResponseHeaderBag(array('Expires' => 'Wed, 16 Feb 2011 14:17:43 GMT'));
     $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('Expires' => 'Wed, 16 Feb 2011 14:17:43 GMT', 'Cache-Control' => 'max-age=3600'));
     $this->assertEquals('max-age=3600, private', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('Last-Modified' => 'abcde'));
     $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('Etag' => 'abcde', 'Last-Modified' => 'abcde'));
     $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('cache-control' => 'max-age=100'));
     $this->assertEquals('max-age=100, private', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('cache-control' => 's-maxage=100'));
     $this->assertEquals('s-maxage=100', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('cache-control' => 'private, max-age=100'));
     $this->assertEquals('max-age=100, private', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('cache-control' => 'public, max-age=100'));
     $this->assertEquals('max-age=100, public', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag();
     $bag->set('Last-Modified', 'abcde');
     $this->assertEquals('private, must-revalidate', $bag->get('Cache-Control'));
 }
 public function testWhenOnFirstPageAndPartialRestSet_nextPageIsNotLinked()
 {
     $headers = new ResponseHeaderBag();
     $headerSetter = new PaginationHeaderSetter($headers);
     $headerSetter->setHeaders('http://localhost/test', new SimplePaginationInfo(1, 10), 9);
     $this->assertSame([], $headers->get('Link', null, false));
 }
예제 #4
0
 public function it_should_prepare_the_bag(Request $request, Response $response, ResponseHeaderBag $bag)
 {
     $response->headers = $bag;
     $bag->set("content-type", "application/json")->shouldBeCalledTimes(1);
     $this->test($request, $response);
     $this->getBag()->shouldBe(["test" => "Ok"]);
 }
예제 #5
0
 public function testCacheControlHeader()
 {
     $bag = new ResponseHeaderBag(array(), 'response');
     $this->assertEquals('no-cache', $bag->get('Cache-Control'));
     $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
     $bag = new ResponseHeaderBag(array('Cache-Control' => 'public'), 'response');
     $this->assertEquals('public', $bag->get('Cache-Control'));
     $this->assertTrue($bag->hasCacheControlDirective('public'));
     $bag = new ResponseHeaderBag(array('ETag' => 'abcde'), 'response');
     $this->assertEquals('private, max-age=0, must-revalidate', $bag->get('Cache-Control'));
     $this->assertTrue($bag->hasCacheControlDirective('private'));
     $this->assertTrue($bag->hasCacheControlDirective('must-revalidate'));
     $this->assertEquals(0, $bag->getCacheControlDirective('max-age'));
     $bag = new ResponseHeaderBag(array('Last-Modified' => 'abcde'), 'response');
     $this->assertEquals('private, max-age=0, must-revalidate', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('Etag' => 'abcde', 'Last-Modified' => 'abcde'), 'response');
     $this->assertEquals('private, max-age=0, must-revalidate', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('cache-control' => 'max-age=100'), 'response');
     $this->assertEquals('max-age=100, private', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('cache-control' => 's-maxage=100'), 'response');
     $this->assertEquals('s-maxage=100', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('cache-control' => 'private, max-age=100'), 'response');
     $this->assertEquals('max-age=100, private', $bag->get('Cache-Control'));
     $bag = new ResponseHeaderBag(array('cache-control' => 'public, max-age=100'), 'response');
     $this->assertEquals('max-age=100, public', $bag->get('Cache-Control'));
 }
 public function testToStringIncludesCookieHeaders()
 {
     $bag = new ResponseHeaderBag(array());
     $bag->setCookie(new Cookie('foo', 'bar'));
     $this->assertContains("Set-Cookie: foo=bar; path=/; httponly", explode("\r\n", $bag->__toString()));
     $bag->clearCookie('foo');
     $this->assertContains("Set-Cookie: foo=deleted; expires=" . gmdate("D, d-M-Y H:i:s T", time() - 31536001) . "; httponly", explode("\r\n", $bag->__toString()));
 }
 public function it_sets_cookie_when_it_does(FilterResponseEvent $event, Response $response, ResponseHeaderBag $headers)
 {
     $headers->setCookie(Argument::type('Symfony\\Component\\HttpFoundation\\Cookie'));
     $response->headers = $headers;
     $event->getRequestType()->willReturn(HttpKernelInterface::MASTER_REQUEST)->shouldBeCalled();
     $event->getRequest()->willReturn($this->secureRequest)->shouldBeCalled();
     $event->getResponse()->willReturn($response)->shouldBeCalled();
     $this->onKernelResponse($event);
 }
 function it_should_set_response_time_to_response_header(Request $req, Response $res, ResponseHeaderBag $bag)
 {
     $res->headers = $bag;
     static::$timer->getStartMilliseconds()->willReturn(1426009224940.0);
     static::$timer->getEndMilliseconds()->willReturn(1426009226260.0);
     $bag->set('X-Response-Time', '1320ms', false)->shouldBeCalled();
     $next = function ($req) use($res) {
         return $res->getWrappedObject();
     };
     $this->handle($req, $next)->shouldReturn($res);
 }
예제 #9
0
 function it_should_set_response_time_to_response_header(Request $req, Response $res, ResponseHeaderBag $bag)
 {
     $res->headers = $bag;
     $uuid = '25769c6c-d34d-4bfe-ba98-e0ee856f3e7a';
     static::$generator->getV4Uuid()->willReturn($uuid);
     $req->merge(['request-id' => $uuid])->shouldBeCalled();
     $bag->set('Request-Id', $uuid, false)->shouldBeCalled();
     $next = function ($req) use($res) {
         return $res->getWrappedObject();
     };
     $this->handle($req, $next)->shouldReturn($res);
 }
예제 #10
0
 /**
  * Check if we need to remove Cache-Control for SSL encrypted downloads when using IE < 9
  *
  * @link http://support.microsoft.com/kb/323308
  */
 protected function ensureIEOverSSLCompatibility(Request $request)
 {
     if (false !== stripos($this->headers->get('Content-Disposition'), 'attachment') && preg_match('/MSIE (.*?);/i', $request->server->get('HTTP_USER_AGENT'), $match) == 1 && true === $request->isSecure()) {
         if (intval(preg_replace("/(MSIE )(.*?);/", "\$2", $match[0])) < 9) {
             $this->headers->remove('Cache-Control');
         }
     }
 }
예제 #11
0
 protected function fixContentType()
 {
     if (!$this->headers->has('Content-Type')) {
         $this->headers->set('Content-Type', 'text/html; charset=' . $this->charset);
     } elseif ('text/' === substr($this->headers->get('Content-Type'), 0, 5) && false === strpos($this->headers->get('Content-Type'), 'charset')) {
         // add the charset
         $this->headers->set('Content-Type', $this->headers->get('Content-Type') . '; charset=' . $this->charset);
     }
 }
 function it_persists_fake_channel_codes_in_a_cookie(FakeChannelCodeProviderInterface $fakeHostnameProvider, FilterResponseEvent $filterResponseEvent, Request $request, Response $response, ResponseHeaderBag $responseHeaderBag)
 {
     $filterResponseEvent->getRequestType()->willReturn(HttpKernelInterface::MASTER_REQUEST);
     $filterResponseEvent->getRequest()->willReturn($request);
     $fakeHostnameProvider->getCode($request)->willReturn('fake_channel_code');
     $filterResponseEvent->getResponse()->willReturn($response);
     $response->headers = $responseHeaderBag;
     $responseHeaderBag->setCookie(Argument::that(function (Cookie $cookie) {
         if ($cookie->getName() !== '_channel_code') {
             return false;
         }
         if ($cookie->getValue() !== 'fake_channel_code') {
             return false;
         }
         return true;
     }))->shouldBeCalled();
     $this->onKernelResponse($filterResponseEvent);
 }
예제 #13
0
 public function testRemoveCookie()
 {
     $bag = new ResponseHeaderBag();
     $bag->setCookie(new Cookie('foo', 'bar', 0, '/path/foo', 'foo.bar'));
     $bag->setCookie(new Cookie('bar', 'foo', 0, '/path/bar', 'foo.bar'));
     $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
     $this->assertTrue(isset($cookies['foo.bar']['/path/foo']));
     $bag->removeCookie('foo', '/path/foo', 'foo.bar');
     $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
     $this->assertFalse(isset($cookies['foo.bar']['/path/foo']));
     $bag->removeCookie('bar', '/path/bar', 'foo.bar');
     $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
     $this->assertFalse(isset($cookies['foo.bar']));
 }
예제 #14
0
 protected function getHttpHeaders(Request $httpRequest, $result)
 {
     $headers = new ResponseHeaderBag();
     $headers->set("Content-Type", $this->getMimeType() . "; charset=utf-8");
     return $headers;
 }
예제 #15
0
파일: Response.php 프로젝트: hykz/Depot
 /**
  * @param string $location
  *
  * @return Boolean
  *
  * @api
  */
 public function isRedirect($location = null)
 {
     return in_array($this->statusCode, array(201, 301, 302, 303, 307)) && (null === $location ?: $location == $this->headers->get('Location'));
 }
예제 #16
0
 public function isRedirected($location)
 {
     return $this->isRedirect() && $location == $this->headers->get('Location');
 }
예제 #17
0
 /**
  * @dataProvider provideMakeDispositionFail
  * @expectedException \InvalidArgumentException
  */
 public function testMakeDispositionFail($disposition, $filename)
 {
     $headers = new ResponseHeaderBag();
     $headers->makeDisposition($disposition, $filename);
 }
 /**
  * @param array             $app
  * @param ResponseHeaderBag $headers
  */
 private function setPageDataIfExists(array $app, ResponseHeaderBag $headers)
 {
     if (isset($app[Headers::PAGE_DATA_KEY])) {
         $headers->set(Headers::PAGE_DATA_HEADER, json_encode(Escaper::escape($app[Headers::PAGE_DATA_KEY])));
     }
 }
예제 #19
0
 /**
  * Sets headers to apply to all responses being sent
  *
  * @param string $name    Header name
  * @param string $value   Header value
  * @param bool   $replace Replace existing headers
  * @return void
  */
 public function setHeader($name, $value, $replace = true)
 {
     $this->headers->set($name, $value, $replace);
 }
예제 #20
0
 function it_listens_cookie_event(CookieEvent $cookieEvent, Response $response, ResponseHeaderBag $responseHeaderBag, SessionInterface $session)
 {
     $cookieEvent->getSession()->shouldBeCalled()->willReturn($session);
     $session->has('access_token')->shouldBeCalled()->willReturn(true);
     $session->has('refresh_token')->shouldBeCalled()->willReturn(true);
     $cookieEvent->getResponse()->shouldBeCalled()->willReturn($response);
     $session->get('access_token')->shouldBeCalled()->willReturn('accesstoken');
     $session->get('refresh_token')->shouldBeCalled()->willReturn('refreshtoken');
     $responseHeaderBag->setCookie(Argument::type('Symfony\\Component\\HttpFoundation\\Cookie'))->shouldBeCalled();
     $responseHeaderBag->setCookie(Argument::type('Symfony\\Component\\HttpFoundation\\Cookie'))->shouldBeCalled();
     $response->headers = $responseHeaderBag;
     $this->onCookieEvent($cookieEvent);
 }