Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,63 @@
|
||||
module picohttpparser
|
||||
|
||||
pub fn test_parses_a_simple_get_request() {
|
||||
mut req := Request{}
|
||||
parsed := req.parse_request('GET / HTTP/1.1\r\nHost: example.com\r\n\r\n') or {
|
||||
assert false, 'error while parse request: ${err}'
|
||||
0
|
||||
}
|
||||
|
||||
assert parsed == 37
|
||||
assert req.method == 'GET'
|
||||
assert req.path == '/'
|
||||
assert req.headers[0].name == 'Host'
|
||||
assert req.headers[0].value == 'example.com'
|
||||
}
|
||||
|
||||
pub fn test_parses_multiple_headers() {
|
||||
mut req := Request{}
|
||||
parsed := req.parse_request('GET /foo?bar=baz HTTP/1.1\r\nHeader1: value1\r\nHeader2: value2\r\n\r\n') or {
|
||||
assert false, 'error while parse request: ${err}'
|
||||
0
|
||||
}
|
||||
assert parsed == 63
|
||||
assert req.headers[1].name == 'Header2'
|
||||
assert req.headers[1].value == 'value2'
|
||||
}
|
||||
|
||||
pub fn test_parses_requests_with_bodies() {
|
||||
mut req := Request{}
|
||||
parsed := req.parse_request('POST /data HTTP/1.1\r\nContent-Length: 10\r\n\r\nsomedata') or {
|
||||
assert false, 'error while parse request: ${err}'
|
||||
0
|
||||
}
|
||||
assert parsed == 43
|
||||
assert req.body == 'somedata'
|
||||
}
|
||||
|
||||
pub fn test_handles_empty_requests() {
|
||||
mut req := Request{}
|
||||
parsed := req.parse_request('') or {
|
||||
assert false, 'error while parse request: ${err}'
|
||||
0
|
||||
}
|
||||
assert parsed == -2
|
||||
}
|
||||
|
||||
pub fn test_handles_incomplete_requests() {
|
||||
mut req := Request{}
|
||||
partial_parsed := req.parse_request('GET /partial') or {
|
||||
assert false, 'error while parse request: ${err}'
|
||||
0
|
||||
}
|
||||
assert partial_parsed == -2
|
||||
assert req.prev_len == 0
|
||||
|
||||
remaining_parsed := req.parse_request(' HTTP/1.1\r\n\r\n') or {
|
||||
assert err.msg() == 'error parsing request: invalid character "13"'
|
||||
0
|
||||
}
|
||||
assert remaining_parsed == 0
|
||||
assert req.method == ''
|
||||
assert req.path == ''
|
||||
}
|
||||
Reference in new issue
Block a user