Beispiel #1
0
def test_del_item():
    auth_token = "Basic YWxhZGRpbjpvcGVuc2VzYW1l"
    data = CaseInsensitiveDict({"Authorization": auth_token})
    assert data.get("authorization") is auth_token
    del data["Authorization"]
    assert data.get("authorization") is None
    assert data.get("Authorization") is None
Beispiel #2
0
def make_response(content: bytes, **kwargs) -> Response:
    defaults: Dict[str, Any] = {
        "request": Request(Method.GET, "https://example.com"),
        "status_code": 200,
        "url": "https://example.com/",
        "headers": CaseInsensitiveDict(),
        "cookies": SimpleCookie(),
        "encoding": "utf-8",
        "content": content,
    }
    defaults.update(kwargs)
    return Response(**defaults)
Beispiel #3
0
    def fetch(
            self,
            request: Request,
            timeout: Union[Timeout, NoValue] = NoValue(),
    ) -> Response:
        try:
            response = requests.request(
                request.method.value,
                str(request.url),
                params=request.query_params,
                headers=request.headers,
                cookies=request.cookies,
                data=request.data,
                files=request.files,
                json=request.json,
                timeout=self._prepare_timeout(timeout),
                verify=self.verify,
                cert=self.cert,
            )
        except requests.Timeout as exc:
            raise exceptions.Timeout from exc
        except requests.exceptions.SSLError as exc:
            raise ssl.SSLError(str(exc)) from exc
        except requests.ConnectionError as exc:
            raise exceptions.ConnectionFailed from exc
        except requests.RequestException as exc:
            raise exceptions.DriverError from exc

        return Response(
            request=request,
            status_code=int(response.status_code),
            url=response.url,
            headers=CaseInsensitiveDict(response.headers),
            cookies=SimpleCookie(response.cookies),
            encoding=response.encoding or "utf-8",
            content=response.content,
        )
Beispiel #4
0
    async def fetch(
        self,
        request: Request,
        timeout: Union[Timeout, NoValue] = NoValue(),
    ) -> Response:
        async with aiohttp.ClientSession() as session:
            try:
                response = await session.request(
                    request.method.value,
                    str(request.url),
                    headers=request.headers,
                    cookies=request.cookies,
                    params=self._prepare_query_params(request.query_params),
                    data=self._prepare_data(request),
                    json=request.json,
                    timeout=self._prepare_timeout(timeout),
                    ssl=self._prepare_ssl(),
                )
            except asyncio.TimeoutError as exc:
                raise exceptions.Timeout from exc
            except aiohttp.ClientSSLError as exc:
                raise ssl.SSLError(str(exc)) from exc
            except aiohttp.ClientConnectionError as exc:
                raise exceptions.ConnectionFailed from exc
            except aiohttp.ClientError as exc:
                raise exceptions.DriverError from exc

            return Response(
                request=request,
                status_code=int(response.status),
                url=str(response.url),
                headers=CaseInsensitiveDict(response.headers),
                cookies=SimpleCookie(response.cookies),
                content=await response.read(),
                encoding=response.get_encoding(),
            )
Beispiel #5
0
def test_init_from_another_mapping():
    auth_token = "Basic YWxhZGRpbjpvcGVuc2VzYW1l"
    data = CaseInsensitiveDict(Authorization=auth_token)
    assert data["authorization"] == auth_token
    assert data["Authorization"] == auth_token
Beispiel #6
0
def test_repr_with_empty_data():
    data = CaseInsensitiveDict()
    assert repr(data) == "CaseInsensitiveDict()"
Beispiel #7
0
def test_repr():
    data = CaseInsensitiveDict({"Content-Length": 1})
    assert repr(data) == "CaseInsensitiveDict({'Content-Length': 1})"
Beispiel #8
0
def test_iter_returns_original_key():
    keys = ("Content-Length", "Cache-Control")
    values = (2, "no-cache")
    data = CaseInsensitiveDict(zip(keys, values))
    for i, key in enumerate(data):
        assert key == keys[i]
Beispiel #9
0
def test_len():
    data = CaseInsensitiveDict({"Content-Length": 1})
    assert len(data) == 1

    data = CaseInsensitiveDict({"Content-Length": 2, "Cache-Control": "no-cache"})
    assert len(data) == 2
Beispiel #10
0
def test_init_with_named_arguments():
    auth_token = "Basic GVuc2VzYW1lYWxhZGRpbjpvc"
    data = CaseInsensitiveDict({"Authorization": auth_token})
    assert data["authorization"] == auth_token
    assert data["Authorization"] == auth_token