def test_via(): p = rfc7230.Via assert parse(p, b'1.0 fred, 1.1 p.example.net') == \ [ (Versioned(u'HTTP', u'1.0'), u'fred', None), (Versioned(u'HTTP', u'1.1'), u'p.example.net', None) ] assert parse( p, br', FSTR/2 balancer4g-p1.example.com ' br'(Acme Web Accelerator 4.1 \(Debian\)), ' br'1.1 proxy1,' ) == [ ( Versioned(u'FSTR', u'2'), u'balancer4g-p1.example.com', u'Acme Web Accelerator 4.1 (Debian)' ), ( Versioned(u'HTTP', u'1.1'), u'proxy1', None ) ] no_parse(p, b'proxy1, proxy2')
def test_user_agent(): p = rfc7231.User_Agent assert parse( p, b'Mozilla/5.0 ' b'(compatible; Vanadium ' br'\(a nice browser btw, check us out: ' br'http://vanadium.example/?about_us\)) ' b'libVanadium/0.11a-pre9' ) == [ Versioned(u'Mozilla', u'5.0'), u'compatible; Vanadium ' u'(a nice browser btw, check us out: ' u'http://vanadium.example/?about_us)', Versioned(u'libVanadium', u'0.11a-pre9'), ] assert parse( p, b'Mozilla/5.0 (X11; Linux x86_64) ' b'AppleWebKit/537.36 (KHTML, like Gecko) ' b'Chrome/37.0.2062.120 Safari/537.36' ) == [ Versioned(u'Mozilla', u'5.0'), u'X11; Linux x86_64', Versioned(u'AppleWebKit', u'537.36'), u'KHTML, like Gecko', Versioned(u'Chrome', u'37.0.2062.120'), Versioned(u'Safari', u'537.36'), ]
def test_complex_connection(): [exch1, exch2, exch3, exch4, exch5, exch6] = \ load_from_file('complex_connection') assert u'complex_connection' in exch1.request.remark assert exch1.request.method == m.POST assert exch1.request.target == u'/articles/' assert exch1.request.version == http11 assert exch1.request.header_entries == [ (h.host, b'example.com'), (h.user_agent, b'demo'), (h.content_type, b'text/plain'), (h.content_length, b'16'), (h.expect, b'100-continue'), ] assert repr(exch1.request.header_entries[0]) == '<HeaderEntry Host>' assert exch1.request.headers.content_length == 16 assert repr(exch1.request.headers.content_length) == \ '<SingleHeaderView Content-Length>' assert exch1.request.body == b'Hello world!\r\n\r\n' assert not exch1.request.trailer_entries assert repr(exch1.request) == '<Request POST>' assert len(exch1.responses) == 3 assert u'complex_connection' in exch1.responses[0].remark assert exch1.responses[0].status == st.continue_ assert repr(exch1.responses[0].status) == 'StatusCode(100)' assert exch1.responses[0].body == b'' assert repr(exch1.responses[0]) == '<Response 100>' assert exch1.responses[1].status == 123 assert exch1.responses[1].reason == u"Keep On Rollin' Baby" assert exch1.responses[1].headers.content_length == 1 assert exch1.responses[1].body == b'' assert exch1.responses[2].status == st.created assert exch1.responses[2].headers.content_length == 49 assert exch1.responses[2].body == \ b'Your article was posted under /articles/123/.\r\n\r\n' assert repr(exch1) == ('Exchange(<Request POST>, ' '[<Response 100>, <Response 123>, <Response 201>])') assert exch2.request.method == m.HEAD assert exch2.request.header_entries[2] == (u'Quux', b'demo (demo)') assert exch2.request.header_entries[3] == (u'Foo', b'bar') assert exch2.request.header_entries[4] == (h.accept_encoding, b'') assert len(exch2.responses) == 1 assert exch2.responses[0].status == st.ok assert exch2.responses[0].body == b'' assert exch3.request.method == m.OPTIONS assert exch3.request.target == u'*' assert len(exch3.responses) == 1 assert exch3.responses[0].status == st.ok assert exch3.responses[0].body == b'' assert exch4.request.headers.upgrade.value == \ [Versioned(upgrade.h2c, None)] assert len(exch4.responses) == 1 assert exch4.responses[0].status == st.switching_protocols assert exch4.responses[0].body == b'' # The last ones are just boxes for no. 1007 and 1010. assert exch5.request is None assert exch5.responses == [] assert exch6.request is None assert exch6.responses == []