From 199fa50a9d1840e5b0d612972383b43c1616f941 Mon Sep 17 00:00:00 2001 From: Miroslav Batchkarov Date: Mon, 5 Jun 2017 16:24:23 +0100 Subject: [PATCH] also store json result in local request --- sanic/testing.py | 1 + tests/test_response.py | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/sanic/testing.py b/sanic/testing.py index 787106a6..6be79cd0 100644 --- a/sanic/testing.py +++ b/sanic/testing.py @@ -26,6 +26,7 @@ class SanicTestClient: session, method.lower())(url, *args, **kwargs) as response: try: response.text = await response.text() + response.json = await response.json() except UnicodeDecodeError as e: response.text = None response.body = await response.read() diff --git a/tests/test_response.py b/tests/test_response.py index ba87f68d..fb213b56 100644 --- a/tests/test_response.py +++ b/tests/test_response.py @@ -9,10 +9,12 @@ import pytest from random import choice from sanic import Sanic -from sanic.response import HTTPResponse, stream, StreamingHTTPResponse, file, file_stream +from sanic.response import HTTPResponse, stream, StreamingHTTPResponse, file, file_stream, json from sanic.testing import HOST, PORT from unittest.mock import MagicMock +JSON_DATA = {'ok': True} + def test_response_body_not_a_string(): @@ -34,6 +36,24 @@ async def sample_streaming_fn(response): response.write('bar') +@pytest.fixture +def json_app(): + app = Sanic('json') + + @app.route("/") + async def test(request): + return json(JSON_DATA) + + return app + + +def test_json_response(json_app): + from sanic.response import json_dumps + request, response = json_app.test_client.get('/') + assert response.status == 200 + assert response.text == json_dumps(JSON_DATA) + assert response.json == JSON_DATA + @pytest.fixture def streaming_app(): app = Sanic('streaming')