Add .content to MockClientResponse so code which uses aiohttp request content streams directly can be tested
@@ -5,12 +5,16 @@ import asyncio
import functools
import json
-from aiohttp import ClientResponse
+from aiohttp import ClientResponse, streams
from yarl import URL
from vcr.request import Request
+class MockStream(asyncio.StreamReader, streams.AsyncStreamReaderMixin):
+ pass
+
+
class MockClientResponse(ClientResponse):
def __init__(self, method, url):
super().__init__(
@@ -37,6 +41,13 @@ class MockClientResponse(ClientResponse):
def release(self):
pass
+ @property
+ def content(self):
+ s = MockStream()
+ s.feed_data(self._body)
+ s.feed_eof()
+ return s
+
def vcr_request(cassette, real_request):
@functools.wraps(real_request)
