Tres Seaver
2013-03-20 dc6b78d1b6e0a346ef08cb0c95b685844119e741
commit | author | age
a37aff 1 import unittest
TS 2
3 class CompatTests(unittest.TestCase):
4
5     def failUnless(self, predicate, message=''):
6         self.assertTrue(predicate, message) # Nannies go home!
7
8     def failIf(self, predicate, message=''):
9         self.assertFalse(predicate, message) # Nannies go home!
10
11     def test_REQUEST_METHOD_miss(self):
dc6b78 12         # PEP 3333 says CONTENT_TYPE is mandatory
a37aff 13         from .._compat import REQUEST_METHOD
TS 14         self.assertRaises(KeyError, REQUEST_METHOD, {})
15
16     def test_REQUEST_METHOD_hit(self):
17         from .._compat import REQUEST_METHOD
18         self.assertEqual(REQUEST_METHOD({'REQUEST_METHOD': 'FOO'}), 'FOO')
19
20     def test_CONTENT_TYPE_miss(self):
dc6b78 21         # PEP 3333 says CONTENT_TYPE is optional
a37aff 22         from .._compat import CONTENT_TYPE
a5135a 23         self.assertEqual(CONTENT_TYPE({}), '')
a37aff 24
TS 25     def test_CONTENT_TYPE_hit(self):
26         from .._compat import CONTENT_TYPE
27         self.assertEqual(CONTENT_TYPE({'CONTENT_TYPE': 'text/html'}),
28                          'text/html')
29
30     def test_USER_AGENT_miss(self):
31         from .._compat import USER_AGENT
32         self.assertEqual(USER_AGENT({}), None)
33
34     def test_USER_AGENT_hit(self):
35         from .._compat import USER_AGENT
36         self.assertEqual(USER_AGENT({'HTTP_USER_AGENT': 'FOO'}), 'FOO')
37
38     def test_AUTHORIZATION_miss(self):
39         from .._compat import AUTHORIZATION
40         self.assertEqual(AUTHORIZATION({}), '')
41
42     def test_AUTHORIZATION_hit(self):
43         from .._compat import AUTHORIZATION
44         self.assertEqual(AUTHORIZATION({'HTTP_AUTHORIZATION': 'FOO'}), 'FOO')
45
46     def test_get_cookies_no_cache_ok_header_value(self):
47         from .._compat import get_cookies
48         from .._compat import SimpleCookie
49         environ = {'HTTP_COOKIE': 'qux=spam'}
50         cookies = get_cookies(environ)
51         self.failUnless(isinstance(cookies, SimpleCookie))
52         self.assertEqual(len(cookies), 1)
53         self.assertEqual(cookies['qux'].value, 'spam')
54         self.assertEqual(environ['paste.cookies'], (cookies, 'qux=spam'))
55
56     def test_get_cookies_w_cache_miss(self):
57         from .._compat import get_cookies
58         from .._compat import SimpleCookie
59         environ = {'HTTP_COOKIE': 'qux=spam',
60                    'paste.cookies': (object(), 'foo=bar'),
61                   }
62         cookies = get_cookies(environ)
63         self.failUnless(isinstance(cookies, SimpleCookie))
64         self.assertEqual(len(cookies), 1)
65         self.assertEqual(cookies['qux'].value, 'spam')
66         self.assertEqual(environ['paste.cookies'], (cookies, 'qux=spam'))
67
68     def test_get_cookies_w_cache_hit(self):
69         from .._compat import get_cookies
70         from .._compat import SimpleCookie
71         existing = SimpleCookie()
72         existing['foo'] = 'bar'
73         environ = {'HTTP_COOKIE': 'qux=spam',
74                    'paste.cookies': (existing, 'qux=spam'),
75                   }
76         cookies = get_cookies(environ)
77         self.failUnless(cookies is existing)
78
79     def test_construct_url(self):
80         from .._compat import construct_url
81         environ = {'wsgi.url_scheme': 'http',
82                    'HTTP_HOST': 'example.com',
83                   }
84         self.assertEqual(construct_url(environ), 'http://example.com/')
85
86     def test_header_value_miss(self):
87         from .._compat import header_value
88         self.assertEqual(header_value([], 'nonesuch'), '')
89
90     def test_header_value_simple(self):
91         from .._compat import header_value
92         self.assertEqual(header_value([('simple', 'SIMPLE')], 'simple'),
93                          'SIMPLE')
cc04ed 94
TS 95     def test_must_decode_non_string(self):
96         from .._compat import must_decode
97         foo = object()
98         self.failUnless(must_decode(foo) is foo)
99
100     def test_must_decode_unicode(self):
101         from .._compat import must_decode
102         from .._compat import u
103         foo = u('foo')
104         self.failUnless(must_decode(foo) is foo)
105
106     def test_must_decode_utf8(self):
107         from .._compat import must_decode
108         foo = b'b\xc3\xa2tard'
109         self.assertEqual(must_decode(foo), foo.decode('utf-8'))
110
111     def test_must_decode_latin1(self):
112         from .._compat import must_decode
113         foo = b'b\xe2tard'
114         self.assertEqual(must_decode(foo), foo.decode('latin1'))
115
a07901 116     def test_must_encode_non_string(self):
TS 117         from .._compat import must_encode
118         foo = object()
119         self.failUnless(must_encode(foo) is foo)
120
121     def test_must_encode_unicode(self):
122         from .._compat import must_encode
123         from .._compat import u
124         foo = u('foo')
125         self.assertEqual(must_encode(foo), foo.encode('utf-8'))
126
127     def test_must_encode_utf8(self):
128         from .._compat import must_encode
129         foo = b'b\xc3\xa2tard'
130         self.failUnless(must_encode(foo) is foo)
131
132     def test_must_encode_latin1(self):
133         from .._compat import must_encode
134         foo = b'b\xe2tard'
135         self.failUnless(must_encode(foo) is foo)
136