--- a/test.py Mon Feb 16 17:55:09 2009 +0200
+++ b/test.py Mon Feb 16 18:20:31 2009 +0200
@@ -1,4 +1,5 @@
#!/usr/bin/env python2.5
+# :set encoding=utf8
"""
General unit tests
@@ -121,6 +122,78 @@
self.assertTrue(req.is_post())
self.assertEqual(req.get_post('foo', None), 'bar')
+class TestHttpResponse (unittest.TestCase) :
+ def test_status (self) :
+ response = http.Response(None, status='100 Continue')
+
+ self.assertEqual(response.get_status(), '100 Continue')
+
+ def test_data_empty (self) :
+ self.assertEqual(http.Response(None).get_data(), '')
+
+ def test_data_str (self) :
+ self.assertEqual(http.Response('foo').get_data(), 'foo')
+
+ def test_data_utf8 (self) :
+ data = u'föö'
+
+ self.assertEqual(http.Response(data).get_data(), data.encode('utf8'))
+
+ def test_data_utf16 (self) :
+ data = u'fåå'
+
+ self.assertEqual(http.Response(data, charset='utf16').get_data(), data.encode('utf16'))
+
+ def test_data_binary (self) :
+ data = '\x01\x00'
+
+ self.assertEqual(http.Response(data, charset=None).get_data(), data)
+
+ def test_content_type_none (self) :
+ response = http.Response(None, content_type=None)
+
+ self.assertEqual(response.get_headers(), [])
+
+ def test_content_type_default (self) :
+ self.assertEqual(http.Response(None).get_headers(), [('Content-type', "text/html; charset=\"UTF-8\"")])
+
+ def test_content_type_weird (self) :
+ self.assertEqual(http.Response(None, content_type="foo/x-bar").get_headers(), [('Content-type', "foo/x-bar; charset=\"UTF-8\"")])
+
+ def test_content_type_charset (self) :
+ self.assertEqual(http.Response(None, content_type="foo/x-bar", charset="---").get_headers(), [('Content-type', "foo/x-bar; charset=\"---\"")])
+
+ def _build_headers (self, tlist=None, **map) :
+ response = http.Response(None)
+
+ if tlist :
+ for name, value, params in tlist :
+ response.add_header(name, value, **params)
+
+ for name, value in map.iteritems() :
+ response.add_header(name, value)
+
+ return response
+
+ def test_headers_simple (self) :
+ self.assertEqual(self._build_headers(**{'X-Foo': 'bar, never'}).get_headers(), [
+ ('Content-type', "text/html; charset=\"UTF-8\""),
+ ('X-Foo', "bar, never")
+ ])
+
+ def test_headers_params (self) :
+ self.assertEqual(self._build_headers([('X-Bar', 'bar', dict(never='yes'))]).get_headers(), [
+ ('Content-type', "text/html; charset=\"UTF-8\""),
+ ('X-Bar', "bar; never=\"yes\"")
+ ])
+
+ def test_headers_multi (self) :
+ self.assertEqual(self._build_headers([('X-Bar', 'bar', {}), ('X-bar', 'foo', {})]).get_headers(), [
+ ('Content-type', "text/html; charset=\"UTF-8\""),
+ ('X-Bar', "bar"),
+ ('X-bar', "foo"),
+ ])
+
if __name__ == '__main__' :
unittest.main()