mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-27 10:26:23 +00:00
55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
|
import cStringIO
|
||
|
import textwrap
|
||
|
import binascii
|
||
|
|
||
|
from netlib import http, odict, tcp
|
||
|
from netlib.http import http1
|
||
|
from .. import tutils, tservers
|
||
|
|
||
|
def test_httperror():
|
||
|
e = http.exceptions.HttpError(404, "Not found")
|
||
|
assert str(e)
|
||
|
|
||
|
|
||
|
def test_parse_url():
|
||
|
assert not http.parse_url("")
|
||
|
|
||
|
u = "http://foo.com:8888/test"
|
||
|
s, h, po, pa = http.parse_url(u)
|
||
|
assert s == "http"
|
||
|
assert h == "foo.com"
|
||
|
assert po == 8888
|
||
|
assert pa == "/test"
|
||
|
|
||
|
s, h, po, pa = http.parse_url("http://foo/bar")
|
||
|
assert s == "http"
|
||
|
assert h == "foo"
|
||
|
assert po == 80
|
||
|
assert pa == "/bar"
|
||
|
|
||
|
s, h, po, pa = http.parse_url("http://user:pass@foo/bar")
|
||
|
assert s == "http"
|
||
|
assert h == "foo"
|
||
|
assert po == 80
|
||
|
assert pa == "/bar"
|
||
|
|
||
|
s, h, po, pa = http.parse_url("http://foo")
|
||
|
assert pa == "/"
|
||
|
|
||
|
s, h, po, pa = http.parse_url("https://foo")
|
||
|
assert po == 443
|
||
|
|
||
|
assert not http.parse_url("https://foo:bar")
|
||
|
assert not http.parse_url("https://foo:")
|
||
|
|
||
|
# Invalid IDNA
|
||
|
assert not http.parse_url("http://\xfafoo")
|
||
|
# Invalid PATH
|
||
|
assert not http.parse_url("http:/\xc6/localhost:56121")
|
||
|
# Null byte in host
|
||
|
assert not http.parse_url("http://foo\0")
|
||
|
# Port out of range
|
||
|
assert not http.parse_url("http://foo:999999")
|
||
|
# Invalid IPv6 URL - see http://www.ietf.org/rfc/rfc2732.txt
|
||
|
assert not http.parse_url('http://lo[calhost')
|