class FakePayload(object): """ A wrapper around StringIO that restricts what can be read since data from the network can't be seeked and cannot be read outside of its content length. This makes sure that views can't do anything under the test client that wouldn't work in Real Life. """ def __init__(self, content): self.__content = NativeStringIO(content) self.__len = len(content) def read(self, num_bytes=None): if num_bytes is None: num_bytes = self.__len or 0 assert self.__len >= num_bytes, 'Cannot read more than the available bytes from the HTTP incoming data.' content = self.__content.read(num_bytes) self.__len -= num_bytes return content
def __init__(self, content): self.__content = NativeStringIO(content) self.__len = len(content)