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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
from collections import OrderedDict
from w3lib.http import (
HeadersDictInput,
basic_auth_header,
headers_dict_to_raw,
headers_raw_to_dict,
)
class TestHttp:
def test_basic_auth_header(self):
assert (
basic_auth_header("someuser", "somepass")
== b"Basic c29tZXVzZXI6c29tZXBhc3M="
)
# Check url unsafe encoded header
assert (
basic_auth_header("someuser", "@<yu9>&o?Q")
== b"Basic c29tZXVzZXI6QDx5dTk+Jm8/UQ=="
)
def test_basic_auth_header_encoding(self):
assert (
basic_auth_header("somæusèr", "sømepäss", encoding="utf8")
== b"Basic c29tw6Z1c8Oocjpzw7htZXDDpHNz"
)
# default encoding (ISO-8859-1)
assert (
basic_auth_header("somæusèr", "sømepäss")
== b"Basic c29t5nVz6HI6c/htZXDkc3M="
)
def test_headers_raw_dict_none(self):
assert headers_raw_to_dict(None) is None
assert headers_dict_to_raw(None) is None
def test_headers_raw_dict_empty(self):
assert headers_raw_to_dict(b"") == {}
assert headers_dict_to_raw({}) == b""
def test_headers_raw_to_dict(self):
raw = b"Content-type: text/html\n\rAccept: gzip\n\r\
Cache-Control: no-cache\n\rCache-Control: no-store\n\n"
dct = {
b"Content-type": [b"text/html"],
b"Accept": [b"gzip"],
b"Cache-Control": [b"no-cache", b"no-store"],
}
assert headers_raw_to_dict(raw) == dct
def test_headers_dict_to_raw(self):
dct = OrderedDict([(b"Content-type", b"text/html"), (b"Accept", b"gzip")])
assert headers_dict_to_raw(dct) == b"Content-type: text/html\r\nAccept: gzip"
def test_headers_dict_to_raw_listtuple(self):
dct: HeadersDictInput = OrderedDict(
[(b"Content-type", [b"text/html"]), (b"Accept", [b"gzip"])]
)
assert headers_dict_to_raw(dct) == b"Content-type: text/html\r\nAccept: gzip"
dct = OrderedDict([(b"Content-type", (b"text/html",)), (b"Accept", (b"gzip",))])
assert headers_dict_to_raw(dct) == b"Content-type: text/html\r\nAccept: gzip"
dct = OrderedDict([(b"Cookie", (b"val001", b"val002")), (b"Accept", b"gzip")])
assert (
headers_dict_to_raw(dct)
== b"Cookie: val001\r\nCookie: val002\r\nAccept: gzip"
)
dct = OrderedDict([(b"Cookie", [b"val001", b"val002"]), (b"Accept", b"gzip")])
assert (
headers_dict_to_raw(dct)
== b"Cookie: val001\r\nCookie: val002\r\nAccept: gzip"
)
def test_headers_dict_to_raw_wrong_values(self):
dct: HeadersDictInput = OrderedDict(
[
(b"Content-type", 0),
]
)
assert headers_dict_to_raw(dct) == b""
assert headers_dict_to_raw(dct) == b""
dct = OrderedDict([(b"Content-type", 1), (b"Accept", [b"gzip"])])
assert headers_dict_to_raw(dct) == b"Accept: gzip"
|