public function testReplaceWithRemove()
 {
     $bag = new ResponseHeaderBag(array());
     $this->assertEquals('no-cache', $bag->get('Cache-Control'));
     $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
     $bag->remove('Cache-Control');
     $bag->replace(array());
     $this->assertEquals('no-cache', $bag->get('Cache-Control'));
     $this->assertTrue($bag->hasCacheControlDirective('no-cache'));
 }
 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 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 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));
 }
Exemple #5
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');
         }
     }
 }
Exemple #6
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);
     }
 }
Exemple #7
0
 /**
  * @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'));
 }
Exemple #8
0
 public function isRedirected($location)
 {
     return $this->isRedirect() && $location == $this->headers->get('Location');
 }
    public function testCookiesWithSameNames()
    {
        $bag = new ResponseHeaderBag();
        $bag->setCookie(new Cookie('foo', 'bar', 0, '/path/foo', 'foo.bar'));
        $bag->setCookie(new Cookie('foo', 'bar', 0, '/path/bar', 'foo.bar'));
        $bag->setCookie(new Cookie('foo', 'bar', 0, '/path/bar', 'bar.foo'));
        $bag->setCookie(new Cookie('foo', 'bar'));

        $this->assertCount(4, $bag->getCookies());
        $this->assertEquals('foo=bar; path=/path/foo; domain=foo.bar; httponly', $bag->get('set-cookie'));
        $this->assertEquals(array(
            'foo=bar; path=/path/foo; domain=foo.bar; httponly',
            'foo=bar; path=/path/bar; domain=foo.bar; httponly',
            'foo=bar; path=/path/bar; domain=bar.foo; httponly',
            'foo=bar; path=/; httponly',
        ), $bag->get('set-cookie', null, false));

        $this->assertSetCookieHeader('foo=bar; path=/path/foo; domain=foo.bar; httponly', $bag);
        $this->assertSetCookieHeader('foo=bar; path=/path/bar; domain=foo.bar; httponly', $bag);
        $this->assertSetCookieHeader('foo=bar; path=/path/bar; domain=bar.foo; httponly', $bag);
        $this->assertSetCookieHeader('foo=bar; path=/; httponly', $bag);

        $cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);

        $this->assertTrue(isset($cookies['foo.bar']['/path/foo']['foo']));
        $this->assertTrue(isset($cookies['foo.bar']['/path/bar']['foo']));
        $this->assertTrue(isset($cookies['bar.foo']['/path/bar']['foo']));
        $this->assertTrue(isset($cookies['']['/']['foo']));
    }