def test_constructor_explicit(self):
     headers = {u"spin": u"doctors"}
     upload = _upload.UploadBase(SIMPLE_URL, headers=headers)
     assert upload.upload_url == SIMPLE_URL
     assert upload._headers is headers
     assert not upload._finished
     _check_retry_strategy(upload)
    def test__process_response(self):
        upload = _upload.UploadBase(SIMPLE_URL)
        _fix_up_virtual(upload)

        # Make sure **not finished** before.
        assert not upload.finished
        response = _make_response()
        ret_val = upload._process_response(response)
        assert ret_val is None
        # Make sure **finished** after.
        assert upload.finished
    def test_finished_property(self):
        upload = _upload.UploadBase(SIMPLE_URL)
        # Default value of @property.
        assert not upload.finished

        # Make sure we cannot set it on public @property.
        with pytest.raises(AttributeError):
            upload.finished = False

        # Set it privately and then check the @property.
        upload._finished = True
        assert upload.finished
    def test__process_response_bad_status(self):
        upload = _upload.UploadBase(SIMPLE_URL)
        _fix_up_virtual(upload)

        # Make sure **not finished** before.
        assert not upload.finished
        status_code = http_client.SERVICE_UNAVAILABLE
        response = _make_response(status_code=status_code)
        with pytest.raises(common.InvalidResponse) as exc_info:
            upload._process_response(response)

        error = exc_info.value
        assert error.response is response
        assert len(error.args) == 4
        assert error.args[1] == status_code
        assert error.args[3] == http_client.OK
        # Make sure **finished** after (even in failure).
        assert upload.finished
 def test_constructor_defaults(self):
     upload = _upload.UploadBase(SIMPLE_URL)
     assert upload.upload_url == SIMPLE_URL
     assert upload._headers == {}
     assert not upload._finished
     _check_retry_strategy(upload)