summaryrefslogtreecommitdiff
path: root/test/test_exceptions.py
blob: 8e8c4e1ec7566be83bce8ea70407ca70db8d749c (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
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)