feat: fixes exception due to unread bytes in stream (#1897)

* feat: fixes exception due to unread bytes in stream

* feat: additonal unit tests to cover changes

* fix: automated changes by `make fix-import`

* fix: additonal changes by `make fix-import`

Co-authored-by: Adam Hopkins <admhpkns@gmail.com>
This commit is contained in:
Andrew Scott
2020-08-27 00:22:02 -07:00
committed by GitHub
parent 58e4087d4b
commit 3f7c9ea3f5
8 changed files with 40 additions and 17 deletions

View File

@@ -1,4 +1,5 @@
import pytest
import asyncio
from sanic.blueprints import Blueprint
from sanic.exceptions import HeaderExpectationFailed
@@ -6,6 +7,7 @@ from sanic.request import StreamBuffer
from sanic.response import json, stream, text
from sanic.views import CompositionView, HTTPMethodView
from sanic.views import stream as stream_decorator
from sanic.server import HttpProtocol
data = "abc" * 1_000_000
@@ -337,6 +339,22 @@ def test_request_stream_handle_exception(app):
assert "Method GET not allowed for URL /post/random_id" in response.text
@pytest.mark.asyncio
async def test_request_stream_unread(app):
"""ensure no error is raised when leaving unread bytes in byte-buffer"""
err = None
protocol = HttpProtocol(loop=asyncio.get_event_loop(), app=app)
try:
protocol.request = None
protocol._body_chunks.append("this is a test")
await protocol.stream_append()
except AttributeError as e:
err = e
assert err is None and not protocol._body_chunks
def test_request_stream_blueprint(app):
"""for self.is_request_stream = True"""
bp = Blueprint("test_blueprint_request_stream_blueprint")