summaryrefslogtreecommitdiff
path: root/test/test_exceptions.py
blob: 50d1c7ab108edb14c587bfae1b29c308ffd2cd57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import pickle

import pytest

from urllib3.exceptions import (
    HTTPError,
    MaxRetryError,
    LocationParseError,
    ClosedPoolError,
    EmptyPoolError,
    HostChangedError,
    ReadTimeoutError,
    ConnectTimeoutError,
    HeaderParsingError,
)
from urllib3.connectionpool import HTTPConnectionPool


class TestPickle(object):
    @pytest.mark.parametrize(
        "exception",
        [
            HTTPError(None),
            MaxRetryError(None, None, None),
            LocationParseError(None),
            ConnectTimeoutError(None),
            HTTPError("foo"),
            HTTPError("foo", IOError("foo")),
            MaxRetryError(HTTPConnectionPool("localhost"), "/", None),
            LocationParseError("fake location"),
            ClosedPoolError(HTTPConnectionPool("localhost"), None),
            EmptyPoolError(HTTPConnectionPool("localhost"), None),
            HostChangedError(HTTPConnectionPool("localhost"), "/", None),
            ReadTimeoutError(HTTPConnectionPool("localhost"), "/", None),
        ],
    )
    def test_exceptions(self, exception):
        result = pickle.loads(pickle.dumps(exception))
        assert isinstance(result, type(exception))


class TestFormat(object):
    def test_header_parsing_errors(self):
        hpe = HeaderParsingError("defects", "unparsed_data")

        assert "defects" in str(hpe)
        assert "unparsed_data" in str(hpe)