aboutsummaryrefslogtreecommitdiffstats
path: root/test/netlib/http
diff options
context:
space:
mode:
Diffstat (limited to 'test/netlib/http')
-rw-r--r--test/netlib/http/test_message.py37
-rw-r--r--test/netlib/http/test_url.py44
2 files changed, 42 insertions, 39 deletions
diff --git a/test/netlib/http/test_message.py b/test/netlib/http/test_message.py
index deebd6f2..12e4706c 100644
--- a/test/netlib/http/test_message.py
+++ b/test/netlib/http/test_message.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, division
-import mock
import six
from netlib.tutils import tresp
@@ -71,10 +70,6 @@ class TestMessage(object):
assert resp != 0
- def test_hash(self):
- resp = tresp()
- assert hash(resp)
-
def test_serializable(self):
resp = tresp()
resp2 = http.Response.from_state(resp.get_state())
@@ -117,14 +112,6 @@ class TestMessageContentEncoding(object):
assert r.content == b"message"
assert r.raw_content != b"message"
- r.raw_content = b"foo"
- with mock.patch("netlib.encoding.decode") as e:
- assert r.content
- assert e.call_count == 1
- e.reset_mock()
- assert r.content
- assert e.call_count == 0
-
def test_modify(self):
r = tresp()
assert "content-encoding" not in r.headers
@@ -135,13 +122,6 @@ class TestMessageContentEncoding(object):
r.decode()
assert r.raw_content == b"foo"
- r.encode("identity")
- with mock.patch("netlib.encoding.encode") as e:
- r.content = b"foo"
- assert e.call_count == 0
- r.content = b"bar"
- assert e.call_count == 1
-
with tutils.raises(TypeError):
r.content = u"foo"
@@ -216,15 +196,6 @@ class TestMessageText(object):
r.headers["content-type"] = "text/html; charset=utf8"
assert r.text == u"ü"
- r.encode("identity")
- r.raw_content = b"foo"
- with mock.patch("netlib.encoding.decode") as e:
- assert r.text
- assert e.call_count == 2
- e.reset_mock()
- assert r.text
- assert e.call_count == 0
-
def test_guess_json(self):
r = tresp(content=b'"\xc3\xbc"')
r.headers["content-type"] = "application/json"
@@ -249,14 +220,6 @@ class TestMessageText(object):
assert r.raw_content == b"\xc3\xbc"
assert r.headers["content-length"] == "2"
- r.encode("identity")
- with mock.patch("netlib.encoding.encode") as e:
- e.return_value = b""
- r.text = u"ü"
- assert e.call_count == 0
- r.text = u"ä"
- assert e.call_count == 2
-
def test_unknown_ce(self):
r = tresp()
r.headers["content-type"] = "text/html; charset=wtf"
diff --git a/test/netlib/http/test_url.py b/test/netlib/http/test_url.py
index 26b37230..768e5130 100644
--- a/test/netlib/http/test_url.py
+++ b/test/netlib/http/test_url.py
@@ -1,3 +1,4 @@
+import six
from netlib import tutils
from netlib.http import url
@@ -57,10 +58,49 @@ def test_unparse():
assert url.unparse("https", "foo.com", 443, "") == "https://foo.com"
-def test_urlencode():
+if six.PY2:
+ surrogates = bytes(bytearray(range(256)))
+else:
+ surrogates = bytes(range(256)).decode("utf8", "surrogateescape")
+
+surrogates_quoted = (
+ '%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F'
+ '%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F'
+ '%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./'
+ '0123456789%3A%3B%3C%3D%3E%3F'
+ '%40ABCDEFGHIJKLMNO'
+ 'PQRSTUVWXYZ%5B%5C%5D%5E_'
+ '%60abcdefghijklmno'
+ 'pqrstuvwxyz%7B%7C%7D%7E%7F'
+ '%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F'
+ '%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F'
+ '%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF'
+ '%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF'
+ '%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF'
+ '%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF'
+ '%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF'
+ '%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF'
+)
+
+
+def test_encode():
assert url.encode([('foo', 'bar')])
+ assert url.encode([('foo', surrogates)])
-def test_urldecode():
+def test_decode():
s = "one=two&three=four"
assert len(url.decode(s)) == 2
+ assert url.decode(surrogates)
+
+
+def test_quote():
+ assert url.quote("foo") == "foo"
+ assert url.quote("foo bar") == "foo%20bar"
+ assert url.quote(surrogates) == surrogates_quoted
+
+
+def test_unquote():
+ assert url.unquote("foo") == "foo"
+ assert url.unquote("foo%20bar") == "foo bar"
+ assert url.unquote(surrogates_quoted) == surrogates