def test__prepare_request(self):
        download1 = _download.Download(EXAMPLE_URL)
        method1, url1, payload1, headers1 = download1._prepare_request()
        assert method1 == u"GET"
        assert url1 == EXAMPLE_URL
        assert payload1 is None
        assert headers1 == {}

        download2 = _download.Download(EXAMPLE_URL, start=53)
        method2, url2, payload2, headers2 = download2._prepare_request()
        assert method2 == u"GET"
        assert url2 == EXAMPLE_URL
        assert payload2 is None
        assert headers2 == {u"range": u"bytes=53-"}
    async def test__process_response(self):
        download = _download.Download(EXAMPLE_URL)
        _fix_up_virtual(download)

        # Make sure **not finished** before.
        assert not download.finished
        response = mock.AsyncMock(status=int(http_client.OK), spec=["status"])
        ret_val = download._process_response(response)
        assert ret_val is None
        # Make sure **finished** after.
        assert download.finished
 def test__prepare_request_with_headers(self):
     headers = {u"spoonge": u"borb"}
     download = _download.Download(EXAMPLE_URL,
                                   start=11,
                                   end=111,
                                   headers=headers)
     method, url, payload, new_headers = download._prepare_request()
     assert method == u"GET"
     assert url == EXAMPLE_URL
     assert payload is None
     assert new_headers is headers
     assert headers == {u"range": u"bytes=11-111", u"spoonge": u"borb"}
    async def test__process_response_bad_status(self):
        download = _download.Download(EXAMPLE_URL)
        _fix_up_virtual(download)

        # Make sure **not finished** before.
        assert not download.finished
        response = mock.AsyncMock(status=int(http_client.NOT_FOUND),
                                  spec=["status"])
        with pytest.raises(common.InvalidResponse) as exc_info:
            download._process_response(response)

        error = exc_info.value
        assert error.response is response
        assert len(error.args) == 5
        assert error.args[1] == response.status
        assert error.args[3] == http_client.OK
        assert error.args[4] == http_client.PARTIAL_CONTENT
        # Make sure **finished** even after a failure.
        assert download.finished
 def test__prepare_request_already_finished(self):
     download = _download.Download(EXAMPLE_URL)
     download._finished = True
     with pytest.raises(ValueError):
         download._prepare_request()
    def test_consume(self):
        download = _download.Download(EXAMPLE_URL)
        with pytest.raises(NotImplementedError) as exc_info:
            download.consume(None)

        exc_info.match(u"virtual")