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 88 89 90 91 92 93 94 95 96 97
|
"""Tests for ClientCookie._HeadersUtil."""
from unittest import TestCase
class HeaderTests(TestCase):
def test_parse_ns_headers(self):
from ClientCookie._HeadersUtil import parse_ns_headers
# quotes should be stripped
assert parse_ns_headers(['expires=01 Jan 2040 22:23:32 GMT']) == \
[[('expires', 2209069412L), ('version', '0')]]
assert parse_ns_headers(['expires="01 Jan 2040 22:23:32 GMT"']) == \
[[('expires', 2209069412L), ('version', '0')]]
def test_join_header_words(self):
from ClientCookie._HeadersUtil import join_header_words
assert join_header_words([[
("foo", None), ("bar", "baz"), (None, "value")
]]) == "foo; bar=baz; value"
assert join_header_words([[]]) == ""
def test_split_header_words(self):
from ClientCookie._HeadersUtil import split_header_words
tests = [
("foo", [[("foo", None)]]),
("foo=bar", [[("foo", "bar")]]),
(" foo ", [[("foo", None)]]),
(" foo= ", [[("foo", "")]]),
(" foo=", [[("foo", "")]]),
(" foo= ; ", [[("foo", "")]]),
(" foo= ; bar= baz ", [[("foo", ""), ("bar", "baz")]]),
("foo=bar bar=baz", [[("foo", "bar"), ("bar", "baz")]]),
# doesn't really matter if this next fails, but it works ATM
("foo= bar=baz", [[("foo", "bar=baz")]]),
("foo=bar;bar=baz", [[("foo", "bar"), ("bar", "baz")]]),
('foo bar baz', [[("foo", None), ("bar", None), ("baz", None)]]),
("a, b, c", [[("a", None)], [("b", None)], [("c", None)]]),
(r'foo; bar=baz, spam=, foo="\,\;\"", bar= ',
[[("foo", None), ("bar", "baz")],
[("spam", "")], [("foo", ',;"')], [("bar", "")]]),
]
for arg, expect in tests:
try:
result = split_header_words([arg])
except:
import traceback, StringIO
f = StringIO.StringIO()
traceback.print_exc(None, f)
result = "(error -- traceback follows)\n\n%s" % f.getvalue()
assert result == expect, """
When parsing: '%s'
Expected: '%s'
Got: '%s'
""" % (arg, expect, result)
def test_roundtrip(self):
from ClientCookie._HeadersUtil import split_header_words, join_header_words
tests = [
("foo", "foo"),
("foo=bar", "foo=bar"),
(" foo ", "foo"),
("foo=", 'foo=""'),
("foo=bar bar=baz", "foo=bar; bar=baz"),
("foo=bar;bar=baz", "foo=bar; bar=baz"),
('foo bar baz', "foo; bar; baz"),
(r'foo="\"" bar="\\"', r'foo="\""; bar="\\"'),
('foo,,,bar', 'foo, bar'),
('foo=bar,bar=baz', 'foo=bar, bar=baz'),
('text/html; charset=iso-8859-1',
'text/html; charset="iso-8859-1"'),
('foo="bar"; port="80,81"; discard, bar=baz',
'foo=bar; port="80,81"; discard, bar=baz'),
(r'Basic realm="\"foo\\\\bar\""',
r'Basic; realm="\"foo\\\\bar\""')
]
for arg, expect in tests:
input = split_header_words([arg])
res = join_header_words(input)
assert res == expect, """
When parsing: '%s'
Expected: '%s'
Got: '%s'
Input was: '%s'""" % (arg, expect, res, input)
if __name__ == "__main__":
import unittest
unittest.main()
|