Beispiel #1
0
def test_connecterror_refused():
    with pytest.raises(requests.ConnectionError) as e:
        requests.get('http://127.0.0.1:9')

    exception = e.value  # type: requests.ConnectionError

    assert exception.response is None
    assert exception.request.url == 'http://127.0.0.1:9/'

    if IS_PYCURL_REQUESTS:
        assert isinstance(exception.__cause__, pycurl.error)
        assert exception.curl_code == pycurl.E_COULDNT_CONNECT
        assert 'Connection refused' in exception.curl_message
Beispiel #2
0
def test_connecterror_resolve():
    with pytest.raises(requests.ConnectionError) as e:
        requests.get('http://nosuchdomain.example.com')

    exception = e.value  # type: requests.ConnectionError

    assert exception.response is None
    assert exception.request.url == 'http://nosuchdomain.example.com/'

    if IS_PYCURL_REQUESTS:
        assert isinstance(exception.__cause__, pycurl.error)
        assert exception.curl_code == pycurl.E_COULDNT_RESOLVE_HOST
        # Some versions of curl return "Couldn't" instead of "Could not"
        assert 't resolve host' in exception.curl_message
Beispiel #3
0
def test_get_params_list(http_server, sequence_type):
    response = requests.get(http_server.base_url + '/params',
                            params=sequence_type([('q', 'foo'), ('r', 'bar'),
                                                  ('q', 'baz')]))
    response.raise_for_status()

    assert response.text == 'q: foo\nr: bar\nq: baz'
Beispiel #4
0
def test_get_redirect_nofollow(http_server):
    response = requests.get(http_server.base_url + '/redirect', allow_redirects=False)
    response.raise_for_status()

    assert response.request.url.endswith('/redirect')
    assert response.url.endswith('/redirect')
    assert response.status_code == 302
    assert response.text == 'Redirecting...\n'
Beispiel #5
0
def test_cookies(http_server, cookies_):
    response = requests.get(http_server.base_url + '/cookies',
                            cookies=cookies_)

    cookiejar = cookies.RequestsCookieJar()
    cookiejar.update(cookies_)
    assert response.text == '\n'.join('{}: {}'.format(*item)
                                      for item in cookiejar.items())
Beispiel #6
0
def test_get_params(http_server):
    response = requests.get(http_server.base_url + '/params',
                            params={
                                'q': 'foo',
                                'r': 'bar'
                            })
    response.raise_for_status()

    assert response.text == 'q: foo\nr: bar'
Beispiel #7
0
def test_get_iter_content(http_server):
    response = requests.get(http_server.base_url + '/hello')
    response.raise_for_status()

    assert response.content == b'Hello\nWorld\n'
    it = response.iter_content(5, decode_unicode=True)
    assert next(it) == 'Hello'
    assert next(it) == '\nWorl'
    assert next(it) == 'd\n'
    with pytest.raises(StopIteration):
        assert next(it)
Beispiel #8
0
def test_get_headers(http_server):
    response = requests.get(http_server.base_url + '/headers', headers={'Foo': 'foo', 'Bar': 'bar'})
    response.raise_for_status()

    headers = CaseInsensitiveDict()
    for line in response.text.splitlines():
        name, value = line.split(':', 1)
        headers[name] = value.strip()

    assert headers['Foo'] == 'foo'
    assert headers['Bar'] == 'bar'
Beispiel #9
0
def test_get_iter_lines(delimiter, http_server):
    response = requests.get(http_server.base_url + '/hello')
    response.raise_for_status()

    assert response.content == b'Hello\nWorld\n'
    it = response.iter_lines(5, decode_unicode=True, delimiter=delimiter)
    assert next(it) == 'Hello'
    assert next(it) == 'World'
    if delimiter is not None:
        assert next(it) == ''
    with pytest.raises(StopIteration):
        assert next(it)
Beispiel #10
0
def test_get(http_server):
    response = requests.get(http_server.base_url + '/hello')
    assert isinstance(response, requests.Response)
    response.raise_for_status()

    assert http_server.last_url.path == '/hello'

    assert isinstance(response.request, requests.PreparedRequest)
    assert response.request.method == 'GET'
    assert response.request.url == http_server.base_url + '/hello'
    assert response.request.path_url == '/hello'
    assert isinstance(response.request.headers, CaseInsensitiveDict)
    assert response.request.body is None

    assert response.elapsed > datetime.timedelta(0)
    assert response.url.endswith('/hello')
    assert response.status_code == 200
    assert response.reason == 'OK'
    assert response.headers['content-type'] == 'text/html; charset=UTF-8'
    assert response.headers['content-length'] == str(len(b'Hello\nWorld\n'))
    assert response.encoding.lower() == 'utf-8'
    assert response.apparent_encoding == 'ascii'
    assert response.content == b'Hello\nWorld\n'
    assert response.text == 'Hello\nWorld\n'
Beispiel #11
0
def test_get_notfound(http_server):
    response = requests.get(http_server.base_url + '/not_found')
    with pytest.raises(requests.HTTPError) as err:
        response.raise_for_status()
    assert err.value.response.status_code == 404
Beispiel #12
0
def test_get_connect_timeout_urllib3(http_server, timeout):
    with pytest.raises(requests.Timeout):
        # Use RFC-5737 TEST-NET-1 address since it should always be unreachable
        requests.get('http://192.0.2.1', timeout=timeout)
        requests.get(http_server.base_url + '/slow', timeout=timeout)
Beispiel #13
0
def test_get_timeout_urllib3(http_server, timeout):
    with pytest.raises(requests.Timeout):
        requests.get(http_server.base_url + '/slow', timeout=timeout)
Beispiel #14
0
def test_get_json(http_server):
    response = requests.get(http_server.base_url + '/json')
    response.raise_for_status()

    assert response.json() == {'Hello': 'World'}
Beispiel #15
0
def test_get_redirect(http_server):
    with pytest.raises(requests.TooManyRedirects) as e:
        requests.get(http_server.base_url + '/redirect')

    # max_redirects defaults to 30
    assert http_server.last_url.path == '/redirect30'