예제 #1
0
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')
예제 #2
0
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'),
        ]
예제 #3
0
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 == []