httpx/tests/test_headers.py
2025-09-16 18:59:11 +01:00

110 lines
3.1 KiB
Python

import httpx
import pytest
def test_headers_from_dict():
headers = httpx.Headers({
'Content-Length': '1024',
'Content-Type': 'text/plain; charset=utf-8',
})
assert headers['Content-Length'] == '1024'
assert headers['Content-Type'] == 'text/plain; charset=utf-8'
def test_headers_from_list():
headers = httpx.Headers([
('Location', 'https://www.example.com'),
('Set-Cookie', 'session_id=3498jj489jhb98jn'),
])
assert headers['Location'] == 'https://www.example.com'
assert headers['Set-Cookie'] == 'session_id=3498jj489jhb98jn'
def test_header_keys():
h = httpx.Headers({"Accept": "*/*", "User-Agent": "python/httpx"})
assert list(h.keys()) == ["Accept", "User-Agent"]
def test_header_values():
h = httpx.Headers({"Accept": "*/*", "User-Agent": "python/httpx"})
assert list(h.values()) == ["*/*", "python/httpx"]
def test_header_items():
h = httpx.Headers({"Accept": "*/*", "User-Agent": "python/httpx"})
assert list(h.items()) == [("Accept", "*/*"), ("User-Agent", "python/httpx")]
def test_header_get():
h = httpx.Headers({"Accept": "*/*", "User-Agent": "python/httpx"})
assert h.get("User-Agent") == "python/httpx"
assert h.get("user-agent") == "python/httpx"
assert h.get("missing") is None
def test_header_copy_set():
h = httpx.Headers({"Expires": "0"})
h = h.copy_set("Expires", "Wed, 21 Oct 2015 07:28:00 GMT")
assert h == httpx.Headers({"Expires": "Wed, 21 Oct 2015 07:28:00 GMT"})
h = httpx.Headers({"Expires": "0"})
h = h.copy_set("expires", "Wed, 21 Oct 2015 07:28:00 GMT")
assert h == httpx.Headers({"Expires": "Wed, 21 Oct 2015 07:28:00 GMT"})
def test_header_copy_remove():
h = httpx.Headers({"Accept": "*/*"})
h = h.copy_remove("Accept")
assert h == httpx.Headers({})
h = httpx.Headers({"Accept": "*/*"})
h = h.copy_remove("accept")
assert h == httpx.Headers({})
def test_header_getitem():
h = httpx.Headers({"Accept": "*/*", "User-Agent": "python/httpx"})
assert h["User-Agent"] == "python/httpx"
assert h["user-agent"] == "python/httpx"
with pytest.raises(KeyError):
h["missing"]
def test_header_contains():
h = httpx.Headers({"Accept": "*/*", "User-Agent": "python/httpx"})
assert "User-Agent" in h
assert "user-agent" in h
assert "missing" not in h
def test_header_bool():
h = httpx.Headers({"Accept": "*/*", "User-Agent": "python/httpx"})
assert bool(h)
h = httpx.Headers()
assert not bool(h)
def test_header_iter():
h = httpx.Headers({"Accept": "*/*", "User-Agent": "python/httpx"})
assert [k for k in h] == ["Accept", "User-Agent"]
def test_header_len():
h = httpx.Headers({"Accept": "*/*", "User-Agent": "python/httpx"})
assert len(h) == 2
def test_header_repr():
h = httpx.Headers({"Accept": "*/*", "User-Agent": "python/httpx"})
assert repr(h) == "<Headers {'Accept': '*/*', 'User-Agent': 'python/httpx'}>"
def test_header_invalid_name():
with pytest.raises(ValueError):
httpx.Headers({"Accept\n": "*/*"})
def test_header_invalid_value():
with pytest.raises(ValueError):
httpx.Headers({"Accept": "*/*\n"})