Beispiel #1
0
    def test_close_midstream(self):
        # A mock fp object that wraps a list and allows closing.
        class MockFP(object):
            self.list = None

            def close(self):
                self.list = None

            def __iter__(self):
                return self

            def __next__(self):
                if not self.list:
                    raise StopIteration()
                return self.list.pop(0)

            next = __next__

        data = [b"fo", b"o"]
        fp = MockFP()
        fp.list = data
        resp = HTTPResponse(fp)
        stream = resp.stream()

        assert next(stream) == b"fo"
        resp.close()
        with pytest.raises(StopIteration):
            next(stream)
Beispiel #2
0
    def test_io(self):
        fp = BytesIO(b"foo")
        resp = HTTPResponse(fp)

        assert not resp.closed
        assert resp.readable()
        assert not resp.writable()
        with pytest.raises(IOError):
            resp.fileno()

        resp.close()
        assert resp.closed

        # Try closing with a base Response
        hlr = get_response()
        resp2 = HTTPResponse(hlr.body)
        assert not resp2.closed
        resp2.close()
        assert resp2.closed

        # also try when only data is present.
        resp3 = HTTPResponse("foodata")
        resp3.preload_content()
        with pytest.raises(IOError):
            resp3.fileno()
Beispiel #3
0
 def test_closed_streaming(self):
     fp = BytesIO(b"foo")
     resp = HTTPResponse(fp)
     resp.close()
     with pytest.raises(StopIteration):
         next(resp.stream())