1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
<?php
namespace Illuminate\Tests\Integration\Http;
use Illuminate\Contracts\Support\Jsonable;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Route;
use JsonSerializable;
use Orchestra\Testbench\TestCase;
class JsonResponseTest extends TestCase
{
public function testResponseWithInvalidJsonThrowsException()
{
$this->expectException('InvalidArgumentException');
$this->expectExceptionMessage('Malformed UTF-8 characters, possibly incorrectly encoded');
Route::get('/response', function () {
return new JsonResponse(new class implements JsonSerializable
{
public function jsonSerialize(): string
{
return "\xB1\x31";
}
});
});
$this->withoutExceptionHandling();
$this->get('/response');
}
public function testResponseSetDataPassesWithPriorJsonErrors()
{
$response = new JsonResponse();
// Trigger json_last_error() to have a non-zero value...
json_encode(['a' => acos(2)]);
$response->setData(new class implements Jsonable
{
public function toJson($options = 0): string
{
return '{}';
}
});
$this->assertJson($response->getContent());
}
}
|