|
|
|
@ -12,6 +12,7 @@ use flight\net\Request;
|
|
|
|
|
use flight\net\Response;
|
|
|
|
|
use flight\util\Collection;
|
|
|
|
|
use InvalidArgumentException;
|
|
|
|
|
use JsonException;
|
|
|
|
|
use PDOException;
|
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
|
use tests\classes\Container;
|
|
|
|
@ -355,18 +356,36 @@ class EngineTest extends TestCase
|
|
|
|
|
{
|
|
|
|
|
$engine = new Engine();
|
|
|
|
|
$engine->json(['key1' => 'value1', 'key2' => 'value2']);
|
|
|
|
|
$this->assertEquals('application/json; charset=utf-8', $engine->response()->headers()['Content-Type']);
|
|
|
|
|
$this->assertEquals('application/json', $engine->response()->headers()['Content-Type']);
|
|
|
|
|
$this->assertEquals(200, $engine->response()->status());
|
|
|
|
|
$this->assertEquals('{"key1":"value1","key2":"value2"}', $engine->response()->getBody());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testJsonWithDuplicateDefaultFlags()
|
|
|
|
|
{
|
|
|
|
|
$engine = new Engine();
|
|
|
|
|
// utf8 emoji
|
|
|
|
|
$engine->json(['key1' => 'value1', 'key2' => 'value2', 'utf8_emoji' => '😀'], 201, true, '', JSON_HEX_TAG | JSON_HEX_TAG | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
|
|
|
|
|
$this->assertEquals('application/json', $engine->response()->headers()['Content-Type']);
|
|
|
|
|
$this->assertEquals(201, $engine->response()->status());
|
|
|
|
|
$this->assertEquals('{"key1":"value1","key2":"value2","utf8_emoji":"😀"}', $engine->response()->getBody());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testJsonThrowOnErrorByDefault()
|
|
|
|
|
{
|
|
|
|
|
$engine = new Engine();
|
|
|
|
|
$this->expectException(JsonException::class);
|
|
|
|
|
$this->expectExceptionMessage('Malformed UTF-8 characters, possibly incorrectly encoded');
|
|
|
|
|
$engine->json(['key1' => 'value1', 'key2' => 'value2', 'utf8_emoji' => "\xB1\x31"]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testJsonV2OutputBuffering()
|
|
|
|
|
{
|
|
|
|
|
$engine = new Engine();
|
|
|
|
|
$engine->response()->v2_output_buffering = true;
|
|
|
|
|
$engine->json(['key1' => 'value1', 'key2' => 'value2']);
|
|
|
|
|
$this->expectOutputString('{"key1":"value1","key2":"value2"}');
|
|
|
|
|
$this->assertEquals('application/json; charset=utf-8', $engine->response()->headers()['Content-Type']);
|
|
|
|
|
$this->assertEquals('application/json', $engine->response()->headers()['Content-Type']);
|
|
|
|
|
$this->assertEquals(200, $engine->response()->status());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -375,7 +394,7 @@ class EngineTest extends TestCase
|
|
|
|
|
$engine = new Engine();
|
|
|
|
|
$this->expectOutputString('{"key1":"value1","key2":"value2"}');
|
|
|
|
|
$engine->jsonHalt(['key1' => 'value1', 'key2' => 'value2']);
|
|
|
|
|
$this->assertEquals('application/json; charset=utf-8', $engine->response()->headers()['Content-Type']);
|
|
|
|
|
$this->assertEquals('application/json', $engine->response()->headers()['Content-Type']);
|
|
|
|
|
$this->assertEquals(200, $engine->response()->status());
|
|
|
|
|
$this->assertEquals('{"key1":"value1","key2":"value2"}', $engine->response()->getBody());
|
|
|
|
|
}
|
|
|
|
|