mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-17 23:09:10 +08:00
Fixed test break.
This commit is contained in:
@@ -118,7 +118,7 @@ class Response extends \yii\base\Response
|
|||||||
511 => 'Network Authentication Required',
|
511 => 'Network Authentication Required',
|
||||||
);
|
);
|
||||||
|
|
||||||
private $_statusCode = 200;
|
private $_statusCode;
|
||||||
/**
|
/**
|
||||||
* @var HeaderCollection
|
* @var HeaderCollection
|
||||||
*/
|
*/
|
||||||
@@ -199,6 +199,14 @@ class Response extends \yii\base\Response
|
|||||||
$this->sendContent();
|
$this->sendContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function reset()
|
||||||
|
{
|
||||||
|
$this->_headers = null;
|
||||||
|
$this->_statusCode = null;
|
||||||
|
$this->statusText = null;
|
||||||
|
$this->content = null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the response headers to the client
|
* Sends the response headers to the client
|
||||||
*/
|
*/
|
||||||
@@ -207,7 +215,10 @@ class Response extends \yii\base\Response
|
|||||||
if (headers_sent()) {
|
if (headers_sent()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
header("HTTP/{$this->version} " . $this->getStatusCode() . " {$this->statusText}");
|
$statusCode = $this->getStatusCode();
|
||||||
|
if ($statusCode !== null) {
|
||||||
|
header("HTTP/{$this->version} $statusCode {$this->statusText}");
|
||||||
|
}
|
||||||
if ($this->_headers) {
|
if ($this->_headers) {
|
||||||
$headers = $this->getHeaders();
|
$headers = $this->getHeaders();
|
||||||
foreach ($headers as $name => $values) {
|
foreach ($headers as $name => $values) {
|
||||||
@@ -334,10 +345,10 @@ class Response extends \yii\base\Response
|
|||||||
ob_start();
|
ob_start();
|
||||||
Yii::$app->end(0, false);
|
Yii::$app->end(0, false);
|
||||||
ob_end_clean();
|
ob_end_clean();
|
||||||
echo $content;
|
$this->content = $content;
|
||||||
exit(0);
|
exit(0);
|
||||||
} else {
|
} else {
|
||||||
echo $content;
|
$this->content = $content;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,45 +1,20 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace yii\web;
|
|
||||||
|
|
||||||
use yiiunit\framework\web\ResponseTest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Mock PHP header function to check for sent headers
|
|
||||||
* @param string $string
|
|
||||||
* @param bool $replace
|
|
||||||
* @param int $httpResponseCode
|
|
||||||
*/
|
|
||||||
function header($string, $replace = true, $httpResponseCode = null) {
|
|
||||||
ResponseTest::$headers[] = $string;
|
|
||||||
// TODO implement replace
|
|
||||||
|
|
||||||
if ($httpResponseCode !== null) {
|
|
||||||
ResponseTest::$httpResponseCode = $httpResponseCode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace yiiunit\framework\web;
|
namespace yiiunit\framework\web;
|
||||||
|
|
||||||
|
use Yii;
|
||||||
use yii\helpers\StringHelper;
|
use yii\helpers\StringHelper;
|
||||||
use yii\web\Response;
|
use yii\web\Response;
|
||||||
|
|
||||||
class ResponseTest extends \yiiunit\TestCase
|
class ResponseTest extends \yiiunit\TestCase
|
||||||
{
|
{
|
||||||
public static $headers = array();
|
public $response;
|
||||||
public static $httpResponseCode = 200;
|
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
$this->mockApplication();
|
$this->mockApplication();
|
||||||
$this->reset();
|
$this->response = new Response;
|
||||||
}
|
|
||||||
|
|
||||||
protected function reset()
|
|
||||||
{
|
|
||||||
static::$headers = array();
|
|
||||||
static::$httpResponseCode = 200;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function rightRanges()
|
public function rightRanges()
|
||||||
@@ -60,14 +35,15 @@ class ResponseTest extends \yiiunit\TestCase
|
|||||||
{
|
{
|
||||||
$content = $this->generateTestFileContent();
|
$content = $this->generateTestFileContent();
|
||||||
$_SERVER['HTTP_RANGE'] = 'bytes=' . $rangeHeader;
|
$_SERVER['HTTP_RANGE'] = 'bytes=' . $rangeHeader;
|
||||||
$sent = $this->runSendFile('testFile.txt', $content, null);
|
$this->response->sendFile('testFile.txt', $content, null, false);
|
||||||
|
|
||||||
$this->assertEquals($expectedFile, $sent);
|
$this->assertEquals($expectedFile, $this->response->content);
|
||||||
$this->assertTrue(in_array('HTTP/1.1 206 Partial Content', static::$headers));
|
$this->assertEquals(206, $this->response->statusCode);
|
||||||
$this->assertTrue(in_array('Accept-Ranges: bytes', static::$headers));
|
$headers = $this->response->headers;
|
||||||
$this->assertArrayHasKey('Content-Range: bytes ' . $expectedHeader . '/' . StringHelper::strlen($content), array_flip(static::$headers));
|
$this->assertEquals("bytes", $headers->get('Accept-Ranges'));
|
||||||
$this->assertTrue(in_array('Content-Type: text/plain', static::$headers));
|
$this->assertEquals("bytes " . $expectedHeader . '/' . StringHelper::strlen($content), $headers->get('Content-Range'));
|
||||||
$this->assertTrue(in_array('Content-Length: ' . $length, static::$headers));
|
$this->assertEquals('text/plain', $headers->get('Content-Type'));
|
||||||
|
$this->assertEquals("$length", $headers->get('Content-Length'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function wrongRanges()
|
public function wrongRanges()
|
||||||
@@ -91,21 +67,11 @@ class ResponseTest extends \yiiunit\TestCase
|
|||||||
|
|
||||||
$content = $this->generateTestFileContent();
|
$content = $this->generateTestFileContent();
|
||||||
$_SERVER['HTTP_RANGE'] = 'bytes=' . $rangeHeader;
|
$_SERVER['HTTP_RANGE'] = 'bytes=' . $rangeHeader;
|
||||||
$this->runSendFile('testFile.txt', $content, null);
|
$this->response->sendFile('testFile.txt', $content, null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function generateTestFileContent()
|
protected function generateTestFileContent()
|
||||||
{
|
{
|
||||||
return '12ёжик3456798áèabcdefghijklmnopqrstuvwxyz!"§$%&/(ёжик)=?';
|
return '12ёжик3456798áèabcdefghijklmnopqrstuvwxyz!"§$%&/(ёжик)=?';
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function runSendFile($fileName, $content, $mimeType)
|
|
||||||
{
|
|
||||||
ob_start();
|
|
||||||
ob_implicit_flush(false);
|
|
||||||
$response = new Response();
|
|
||||||
$response->sendFile($fileName, $content, $mimeType, false);
|
|
||||||
$file = ob_get_clean();
|
|
||||||
return $file;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user