Example #1
0
def make_http_response(
    status=200, reason="OK", method="GET", url="/", headers=None, content=None
):
    """Return a minimal ClientResponse with fields used in tests."""
    url = URL(url)
    headers = CIMultiDict(headers or {})
    request_info = RequestInfo(url=url, method=method, headers=headers)
    response = ClientResponse(
        method,
        url,
        writer=None,
        continue100=None,
        timer=None,
        request_info=request_info,
        traces=(),
        loop=get_event_loop(),
        session=None,
    )
    response.status = status
    response.reason = reason
    response._headers = headers
    if isinstance(content, io.IOBase):
        response.content = FakeStreamReader(content)
    elif content is not None:
        response.content = FakeStreamReader(
            io.BytesIO(json_dumps(content).encode("utf8"))
        )
        response.headers["Content-Type"] = "application/json"
    return response
Example #2
0
    def build_response(self, method, url, params, data, headers):
        """"""
        try:
            if type(url) == URL:
                url = url.human_repr()

            # Check if we have to skip it
            if self.skip(url):
                return None, True

            # Go check see if response is in cassette
            if not data:
                data = {}
            if params:
                data.update(params)

            request = vcr.request.Request(method, url, data, headers)
            cassette = self.load_cassette(url)
            resp_json = cassette.play_response(request)
        except UnhandledHTTPRequestError:
            # Response not seen yet in cassette
            return None, False

        # Response was found in cassette
        cassette.play_counts = collections.Counter()
        # Create the response
        resp = ClientResponse(
            method,
            URL(url),
            request_info=Mock(),
            writer=Mock(),
            continue100=None,
            timer=TimerNoop(),
            traces=[],
            loop=Mock(),
            session=Mock(),
        )
        # Replicate status code and reason
        resp.status = resp_json['status']['code']
        resp.reason = resp_json['status']['message']

        # Set headers and content
        resp._headers = CIMultiDict(resp_json['headers'])
        resp.content = StreamReader(Mock(), limit=DEFAULT_STREAM_LIMIT)

        # Get the data
        data = resp_json['body']['data']

        resp.content.feed_data(data)
        resp.content.feed_eof()

        return resp, False
Example #3
0
async def prepare_fake_response(url,
                                *,
                                method='GET',
                                req_headers=None,
                                resp_headers=None,
                                resp_status=200,
                                resp_reason='OK',
                                resp_content=b''):
    resp = ClientResponse(method,
                          URL(val=url),
                          request_info=RequestInfo(url, method, req_headers
                                                   or {}))
    resp._content = resp_content
    resp.status = resp_status
    resp.reason = resp_reason
    resp.headers = resp_headers or {}
    future = asyncio.Future()
    future.set_result(resp)
    return future