annotate examples/trac/trac/web/tests/api.py @ 39:93b4dcbafd7b trunk

Copy Trac to main branch.
author cmlenz
date Mon, 03 Jul 2006 18:53:27 +0000
parents
children
rev   line source
39
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
2
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
3 from trac.test import Mock
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
4 from trac.web.api import Request, RequestDone
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
5 from trac.web.clearsilver import HDFWrapper
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
6
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
7 from Cookie import SimpleCookie as Cookie
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
8 from StringIO import StringIO
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
9 import unittest
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
10
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
11
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
12 class RequestTestCase(unittest.TestCase):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
13
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
14 def _make_environ(self, scheme='http', server_name='example.org',
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
15 server_port=80, method='GET', script_name='/trac',
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
16 **kwargs):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
17 environ = {'wsgi.url_scheme': scheme, 'wsgi.input': StringIO(''),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
18 'REQUEST_METHOD': method, 'SERVER_NAME': server_name,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
19 'SERVER_PORT': server_port, 'SCRIPT_NAME': script_name}
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
20 environ.update(kwargs)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
21 return environ
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
22
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
23 def test_base_url(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
24 environ = self._make_environ()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
25 req = Request(environ, None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
26 self.assertEqual('http://example.org/trac', req.base_url)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
27
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
28 def test_base_url_host(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
29 environ = self._make_environ(server_port=8080, HTTP_HOST='example.com')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
30 req = Request(environ, None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
31 self.assertEqual('http://example.com/trac', req.base_url)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
32
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
33 def test_base_url_nondefaultport(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
34 environ = self._make_environ(server_port=8080)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
35 req = Request(environ, None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
36 self.assertEqual('http://example.org:8080/trac', req.base_url)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
37
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
38 def test_base_url_https(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
39 environ = self._make_environ(scheme='https', server_port=443)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
40 req = Request(environ, None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
41 self.assertEqual('https://example.org/trac', req.base_url)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
42
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
43 def test_base_url_https_host(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
44 environ = self._make_environ(scheme='https', server_port=443,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
45 HTTP_HOST='example.com')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
46 req = Request(environ, None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
47 self.assertEqual('https://example.com/trac', req.base_url)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
48
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
49 def test_base_url_https_nondefaultport(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
50 environ = self._make_environ(scheme='https', server_port=8443)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
51 req = Request(environ, None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
52 self.assertEqual('https://example.org:8443/trac', req.base_url)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
53
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
54 def test_base_url_proxy(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
55 environ = self._make_environ(HTTP_HOST='localhost',
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
56 HTTP_X_FORWARDED_HOST='example.com')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
57 req = Request(environ, None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
58 self.assertEqual('http://localhost/trac', req.base_url)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
59
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
60 def test_redirect(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
61 status_sent = []
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
62 headers_sent = {}
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
63 def start_response(status, headers):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
64 status_sent.append(status)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
65 headers_sent.update(dict(headers))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
66 environ = self._make_environ(method='HEAD')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
67 req = Request(environ, start_response)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
68 self.assertRaises(RequestDone, req.redirect, '/trac/test')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
69 self.assertEqual('302 Found', status_sent[0])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
70 self.assertEqual('http://example.org/trac/test',
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
71 headers_sent['Location'])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
72
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
73 def test_redirect_absolute(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
74 status_sent = []
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
75 headers_sent = {}
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
76 def start_response(status, headers):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
77 status_sent.append(status)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
78 headers_sent.update(dict(headers))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
79 environ = self._make_environ(method='HEAD')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
80 req = Request(environ, start_response)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
81 self.assertRaises(RequestDone, req.redirect,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
82 'http://example.com/trac/test')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
83 self.assertEqual('302 Found', status_sent[0])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
84 self.assertEqual('http://example.com/trac/test',
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
85 headers_sent['Location'])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
86
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
87 def test_write_unicode(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
88 buf = StringIO()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
89 def write(data):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
90 buf.write(data)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
91 def start_response(status, headers):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
92 return write
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
93 environ = self._make_environ(method='HEAD')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
94 req = Request(environ, start_response)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
95 req.send_header('Content-Type', 'text/plain;charset=utf-8')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
96 req.write(u'Föö')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
97 self.assertEqual('Föö', buf.getvalue())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
98
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
99
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
100 def suite():
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
101 suite = unittest.TestSuite()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
102 suite.addTest(unittest.makeSuite(RequestTestCase, 'test'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
103 return suite
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
104
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
105 if __name__ == '__main__':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
106 unittest.main()
Copyright (C) 2012-2017 Edgewall Software