示例#1
0
def test_parse_request_line(data, method, path, query, version):
    parser = Parser(None)
    m, u, v = parser.parse_request_line(data)
    assert m == method
    assert u.path == path
    assert u.query == query
    assert v == version
示例#2
0
def test_consume_byte_by_byte():
    responder = mock_responder()
    p = Parser(responder)
    for b in "GET / HTTP/1.1\nhost: nowhere.com\n\n":
        p.consume(b.encode())
    assert not p.needs_headers
    assert 'HOST' in responder.headers
    assert responder.headers['HOST'] == "nowhere.com"
示例#3
0
def test_good_header_pieces():
    q = mock_responder()
    p = Parser(q)
    p.consume(b"GET / HTTP/1.1\r\n")
    p.consume(b"host: nowhere.com\r\n")
    p.consume(b"\r\n")
    headers = q.headers
    assert not p.needs_headers
    assert 'HOST' in headers
    assert headers['HOST'] == 'nowhere.com'
示例#4
0
def test_consume():
    q = mock_responder()
    p = Parser(q)
    p.consume(b"GET")
    assert p._buffer == [b"GET"]
    p.consume(b" /path HTTP/1.1")
    p.consume(b"\n")
    data = q.data
    assert data['method'] == 'GET'
    assert data['url'].path == '/path'
    assert data['version'] == 'HTTP/1.1'
    assert not p.needs_request_line

    q2 = mock_responder()
    Parser(q2).consume(b"GET /path HTTP/1.1\nhost: noplace\n\n")
    data = q2.data
    assert data['method'] == 'GET'
    assert data['url'].path == '/path'
    assert data['version'] == 'HTTP/1.1'
示例#5
0
def test_parser_determine_newline(data, expected):
    val = Parser.determine_newline(data)
    assert val == expected
示例#6
0
def test_parser_determine_newline(data, expected):
    val = Parser.determine_newline(data)
    assert val == expected
示例#7
0
def parser(mock_responder):
    return Parser(mock_responder)
示例#8
0
def testfind_newline(line, location, value):
    parser = Parser(None)
    assert parser.EOL_TOKEN is None
    assert parser.find_newline(line) == location
    assert parser.EOL_TOKEN == value