1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
import unittest
from repoze.bfg.testing import cleanUp
class TestMakeRequestASCII(unittest.TestCase):
def _callFUT(self, event):
from repoze.bfg.request import make_request_ascii
return make_request_ascii(event)
def test_it(self):
request = DummyRequest()
event = DummyNewRequestEvent(request)
self._callFUT(event)
self.assertEqual(request.charset, None)
class RequestTestBase(object):
def _makeOne(self, environ):
request = self._getTargetClass()(environ)
return request
def test_params_decoded_from_utf_8_by_default(self):
environ = {
'PATH_INFO':'/',
'QUERY_STRING':'la=La%20Pe%C3%B1a'
}
request = self._makeOne(environ)
self.assertEqual(request.GET['la'], u'La Pe\xf1a')
def test_params_bystring_when_charset_None(self):
environ = {
'PATH_INFO':'/',
'QUERY_STRING':'la=La%20Pe%C3%B1a'
}
request = self._makeOne(environ)
request.charset = None
self.assertEqual(request.GET['la'], 'La Pe\xc3\xb1a')
def test_class_implements(self):
from repoze.bfg.interfaces import IRequest
klass = self._getTargetClass()
self.assertTrue(IRequest.implementedBy(klass))
def test_instance_provides(self):
from repoze.bfg.interfaces import IRequest
inst = self._makeOne({})
self.assertTrue(IRequest.providedBy(inst))
class TestRequest(unittest.TestCase, RequestTestBase):
def _getTargetClass(self):
from repoze.bfg.request import Request
return Request
class TestRouteRequest(unittest.TestCase, RequestTestBase):
def _getTargetClass(self):
from repoze.bfg.request import create_route_request_factory
return create_route_request_factory('abc')
class TestRequestFactory(unittest.TestCase):
def setUp(self):
cleanUp()
def tearDown(self):
cleanUp()
def _callFUT(self, environ):
from repoze.bfg.request import request_factory
return request_factory(environ)
def test_it_no_route(self):
from repoze.bfg.interfaces import IRequest
from repoze.bfg.request import Request
result = self._callFUT({})
self.assertEqual(result.__class__, Request)
self.failUnless(IRequest.providedBy(result))
def test_it_with_route_found(self):
from zope.component import getSiteManager
from repoze.bfg.interfaces import IRouteRequest
sm = getSiteManager()
sm.registerUtility(DummyRequest, IRouteRequest, 'routename')
route = DummyRoute('routename')
result = self._callFUT({'bfg.routes.route':route,
'bfg.routes.matchdict':{'match':'1'}})
self.assertEqual(result.__class__, DummyRequest)
self.assertEqual(result.matchdict, {'match':'1'})
def test_it_with_route_notfound(self):
from repoze.bfg.request import Request
route = DummyRoute('routename')
result = self._callFUT({'bfg.routes.route':route,
'bfg.routes.matchdict':{'match':'1'}})
self.assertEqual(result.__class__, Request)
self.failIf(getattr(result, 'matchdict', None) is not None)
class Test_create_route_request_factory(unittest.TestCase):
def _callFUT(self, name):
from repoze.bfg.request import create_route_request_factory
return create_route_request_factory(name)
def test_it(self):
from repoze.bfg.interfaces import IRouteRequest
from repoze.bfg.interfaces import IRequest
factory = self._callFUT('routename')
self.failUnless(IRouteRequest.implementedBy(factory))
self.failUnless(IRequest.implementedBy(factory))
class Test_add_global_response_headers(unittest.TestCase):
def _callFUT(self, request, headerlist):
from repoze.bfg.request import add_global_response_headers
return add_global_response_headers(request, headerlist)
def test_it(self):
request = DummyRequest()
headers = [('a', 1), ('b', 2)]
request.global_response_headers = headers[:]
self._callFUT(request, [('c', 1)])
self.assertEqual(request.global_response_headers, headers + [('c', 1)])
class DummyRoute:
def __init__(self, name):
self.name = name
class DummyRequest:
def __init__(self, environ=None):
if environ is None:
environ = {}
self.environ = environ
class DummyNewRequestEvent:
def __init__(self, request):
self.request = request
|