def test_message_build_chunked(): raw = ('foobar\r\n' 'a: b\r\n' 'Content-Length: 100\r\n\r\n') raw += 'A' * 100 m = http.HTTPMessage() m.add_line('foobar') m.add_line('a: b') m.add_line('Transfer-Encoding: chunked') m.add_line('') assert not m.complete m.add_data('%x\r\n' % 50) m.add_data('A' * 50) m.add_data('\r\n') m.add_data('%x\r\n' % 50) m.add_data('A' * 50) m.add_data('\r\n') m.add_data('0\r\n') assert m.complete assert m.malformed == False assert m.start_line == 'foobar' assert m.body == 'A' * 100 assert m.headers.all_pairs() == [('a', 'b'), ('Content-Length', '100')] assert m.headers['A'] == 'b' assert m.headers_section == ('foobar\r\n' 'a: b\r\n' 'Content-Length: 100\r\n\r\n') assert m.full_message == raw
def test_message_badheader(): raw = ('startline\r\n' 'a: b\r\n' 'Content-Encoding\r\n' 'd: e\r\n' 'f:g\r\n' '\r\n') m = http.HTTPMessage(raw) assert m.headers['a'] == 'b' assert m.headers['content-encoding'] is None assert m.headers['f'] == 'g'
def test_message_simple(): raw = ('foobar\r\n' 'a: b\r\n' 'Content-Length: 100\r\n\r\n') raw += 'A' * 100 m = http.HTTPMessage(raw) assert m.complete assert m.malformed == False assert m.start_line == 'foobar' assert m.body == 'A' * 100 assert m.headers.all_pairs() == [('a', 'b'), ('Content-Length', '100')] assert m.headers['A'] == 'b' assert m.headers_section == ('foobar\r\n' 'a: b\r\n' 'Content-Length: 100\r\n\r\n') assert m.full_message == raw