def test_cannot_send_headers_after_eof(self): req = self.make_request('GET', '/') resp = StreamResponse(req) resp.send_headers() resp.write_eof() with self.assertRaises(RuntimeError): resp.send_headers()
def test_cannot_send_headers_after_eof(self): req = self.make_request('GET', '/') resp = StreamResponse(req) resp.send_headers() resp.write_eof() with self.assertRaises(RuntimeError): resp.send_headers()
def test_cannot_write_eof_twice(self): resp = StreamResponse() resp.start(self.make_request('GET', '/')) resp.write(b'data') self.writer.drain.return_value = () self.loop.run_until_complete(resp.write_eof()) self.assertTrue(self.writer.write.called) self.writer.write.reset_mock() self.loop.run_until_complete(resp.write_eof()) self.assertFalse(self.writer.write.called)
def test_cannot_write_eof_twice(self): resp = StreamResponse() self.loop.run_until_complete(resp.prepare(self.make_request("GET", "/"))) resp.write(b"data") self.writer.drain.return_value = () self.loop.run_until_complete(resp.write_eof()) self.assertTrue(self.writer.write.called) self.writer.write.reset_mock() self.loop.run_until_complete(resp.write_eof()) self.assertFalse(self.writer.write.called)
def test_cannot_write_eof_twice(self): resp = StreamResponse() resp.start(self.make_request('GET', '/')) resp.write(b'data') self.writer.drain.return_value = () self.loop.run_until_complete(resp.write_eof()) self.assertTrue(self.writer.write.called) self.writer.write.reset_mock() self.loop.run_until_complete(resp.write_eof()) self.assertFalse(self.writer.write.called)
def test_cannot_write_eof_twice(): resp = StreamResponse() writer = mock.Mock() yield from resp.prepare(make_request('GET', '/', writer=writer)) resp.write(b'data') writer.drain.return_value = () yield from resp.write_eof() assert writer.write.called writer.write.reset_mock() yield from resp.write_eof() assert not writer.write.called
def test_cannot_write_eof_twice(): resp = StreamResponse() writer = mock.Mock() yield from resp.prepare(make_request('GET', '/', writer=writer)) resp.write(b'data') writer.drain.return_value = () yield from resp.write_eof() assert writer.write.called writer.write.reset_mock() yield from resp.write_eof() assert not writer.write.called
def test_cannot_write_eof_twice(): resp = StreamResponse() writer = mock.Mock() resp_impl = yield from resp.prepare(make_request('GET', '/')) resp_impl.write = mock.Mock() resp_impl.write_eof = mock.Mock() resp_impl.write_eof.return_value = () resp.write(b'data') assert resp_impl.write.called yield from resp.write_eof() resp_impl.write.reset_mock() yield from resp.write_eof() assert not writer.write.called
def test_cannot_write_eof_twice(): resp = StreamResponse() writer = mock.Mock() resp_impl = yield from resp.prepare(make_request('GET', '/')) resp_impl.write = mock.Mock() resp_impl.write_eof = mock.Mock() resp_impl.write_eof.return_value = () resp.write(b'data') assert resp_impl.write.called yield from resp.write_eof() resp_impl.write.reset_mock() yield from resp.write_eof() assert not writer.write.called
def hello(request): resp = StreamResponse(request) name = request.match_info.get('name', 'Anonimous') answer = ('Hello, ' + name).encode('utf8') resp.content_length = len(answer) resp.send_headers() resp.write(answer) yield from resp.write_eof() return resp
def hello(request): resp = StreamResponse() name = request.match_info.get('name', 'Anonymous') answer = ('Hello, ' + name).encode('utf8') resp.content_length = len(answer) resp.start(request) resp.write(answer) yield from resp.write_eof() return resp
def test___repr___after_eof(): resp = StreamResponse() yield from resp.prepare(make_request('GET', '/')) assert resp.prepared resp.write(b'data') yield from resp.write_eof() assert not resp.prepared resp_repr = repr(resp) assert resp_repr == '<StreamResponse OK eof>'
def test___repr___after_eof(): resp = StreamResponse() yield from resp.prepare(make_request('GET', '/')) assert resp.prepared resp.write(b'data') yield from resp.write_eof() assert not resp.prepared resp_repr = repr(resp) assert resp_repr == '<StreamResponse OK eof>'
def test_cannot_write_after_eof(self): resp = StreamResponse() self.loop.run_until_complete(resp.prepare(self.make_request("GET", "/"))) resp.write(b"data") self.writer.drain.return_value = () self.loop.run_until_complete(resp.write_eof()) self.writer.write.reset_mock() with self.assertRaises(RuntimeError): resp.write(b"next data") self.assertFalse(self.writer.write.called)
def test_cannot_write_after_eof(self): resp = StreamResponse() resp.start(self.make_request('GET', '/')) resp.write(b'data') self.writer.drain.return_value = () self.loop.run_until_complete(resp.write_eof()) self.writer.write.reset_mock() with self.assertRaises(RuntimeError): resp.write(b'next data') self.assertFalse(self.writer.write.called)
def test_cannot_write_after_eof(self): resp = StreamResponse() resp.start(self.make_request('GET', '/')) resp.write(b'data') self.writer.drain.return_value = () self.loop.run_until_complete(resp.write_eof()) self.writer.write.reset_mock() with self.assertRaises(RuntimeError): resp.write(b'next data') self.assertFalse(self.writer.write.called)
def test_repr_after_eof(): resp = StreamResponse() writer = mock.Mock() yield from resp.prepare(make_request('GET', '/', writer=writer)) assert resp.prepared resp.write(b'data') writer.drain.return_value = () yield from resp.write_eof() assert not resp.prepared resp_repr = repr(resp) assert resp_repr == '<StreamResponse OK not started>'
def test_cannot_write_after_eof(): resp = StreamResponse() writer = mock.Mock() yield from resp.prepare(make_request('GET', '/', writer=writer)) resp.write(b'data') writer.drain.return_value = () yield from resp.write_eof() writer.write.reset_mock() with pytest.raises(RuntimeError): resp.write(b'next data') assert not writer.write.called
def test_cannot_write_after_eof(): resp = StreamResponse() writer = mock.Mock() yield from resp.prepare(make_request('GET', '/', writer=writer)) resp.write(b'data') writer.drain.return_value = () yield from resp.write_eof() writer.write.reset_mock() with pytest.raises(RuntimeError): resp.write(b'next data') assert not writer.write.called
def test_cannot_write_eof_before_headers(): resp = StreamResponse() with pytest.raises(RuntimeError): yield from resp.write_eof()
class WSGIResponse: __slots__ = ( "_handler", "_request", "_response", ) def __init__(self, handler, request): self._handler = handler self._request = request # State. self._response = None def start_response(self, status, headers, exc_info=None): if exc_info: # Log the error. self._request.app.logger.error("Unexpected error", exc_info=exc_info) # Attempt to modify the response. try: if self._response and self._response.started: raise exc_info[1].with_traceback(exc_info[2]) self._response = None finally: exc_info = None # Cannot start response twice. assert not self._response, "Cannot call start_response() twice" # Parse the status. assert isinstance(status, str), "Response status should be str" status_code, reason = status.split(None, 1) status_code = int(status_code) # Store the response. self._response = StreamResponse( status=status_code, reason=reason, ) # Store the headers. for header_name, header_value in headers: assert not is_hop_by_hop( header_name), "Hop-by-hop headers are forbidden" self._response.headers.add(header_name, header_value) # Return the stream writer interface. return self.write_threadsafe def _write_head(self): assert self._response, "Application did not call start_response()" if not self._response.started: self._response.start(self._request) def write(self, data): assert isinstance( data, (bytes, bytearray, memoryview)), "Data should be bytes" self._write_head() self._response.write(data) @asyncio.coroutine def drain(self): self._write_head() yield from self._response.drain() @asyncio.coroutine def write_eof(self): self._write_head() yield from self._response.write_eof() def write_threadsafe(self, data): with self._handler._lock_for_write(): self.write(data)
def test_cannot_write_eof_before_headers(self): resp = StreamResponse() with self.assertRaises(RuntimeError): self.loop.run_until_complete(resp.write_eof())
def test_cannot_write_eof_before_headers(self): resp = StreamResponse() with self.assertRaises(RuntimeError): self.loop.run_until_complete(resp.write_eof())
def test_cannot_write_eof_before_headers(): resp = StreamResponse() with pytest.raises(RuntimeError): yield from resp.write_eof()