Просмотр исходного кода

[ZF-10675] Zend_View_Helper_Json does not enforce replace_header

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@23390 44c647ce-9c0f-0410-b52a-842ac1e357ba
jan 15 лет назад
Родитель
Сommit
a8ced08ec7
2 измененных файлов с 15 добавлено и 2 удалено
  1. 1 1
      library/Zend/View/Helper/Json.php
  2. 14 1
      tests/Zend/View/Helper/JsonTest.php

+ 1 - 1
library/Zend/View/Helper/Json.php

@@ -74,7 +74,7 @@ class Zend_View_Helper_Json extends Zend_View_Helper_Abstract
         }
 
         $response = Zend_Controller_Front::getInstance()->getResponse();
-        $response->setHeader('Content-Type', 'application/json');
+        $response->setHeader('Content-Type', 'application/json', true);
         return $data;
     }
 }

+ 14 - 1
tests/Zend/View/Helper/JsonTest.php

@@ -98,9 +98,12 @@ class Zend_View_Helper_JsonTest extends PHPUnit_Framework_TestCase
         $found = false;
         foreach ($headers as $header) {
             if ('Content-Type' == $header['name']) {
+                if ($found) {
+                    $this->fail('Content-Type header has been set twice.');
+                    return null;
+                }
                 $found = true;
                 $value = $header['value'];
-                break;
             }
         }
         $this->assertTrue($found);
@@ -113,6 +116,16 @@ class Zend_View_Helper_JsonTest extends PHPUnit_Framework_TestCase
         $this->verifyJsonHeader();
     }
 
+    /**
+     * @group ZF-10675
+     */
+    public function testJsonHelperReplacesContentTypeReponseHeaderIfAlreadySet()
+    {
+        $this->response->setHeader('Content-Type', 'text/html');
+        $this->helper->json('foobar');
+        $this->verifyJsonHeader();
+    }
+
     public function testJsonHelperReturnsJsonEncodedString()
     {
         $data = $this->helper->json(array('foobar'));