1
1
import unittest
2
+ import socket
3
+ import six
2
4
3
5
from restless .tnd import TornadoResource , _BridgeMixin
4
6
from restless .utils import json
5
- from tornado import testing , web , httpserver , gen
7
+ from tornado import testing , web , httpserver , gen , version_info
8
+ from tornado .iostream import IOStream
6
9
from restless .constants import UNAUTHORIZED
7
10
11
+ def _newer_or_equal_ (v ):
12
+ for i in six .moves .xrange (min (len (v ), len (version_info ))):
13
+ expected , tnd = v [i ], version_info [i ]
14
+ if tnd > expected :
15
+ return True
16
+ elif tnd == expected :
17
+ continue
18
+ else :
19
+ return False
20
+ return True
21
+
22
+ def _equal_ (v ):
23
+ for i in six .moves .xrange (min (len (v ), len (version_info ))):
24
+ if v [i ] != version_info [i ]:
25
+ return False
26
+ return True
27
+
28
+
29
+ if _newer_or_equal_ ((4 , 0 , 0 , 0 )):
30
+ from tornado .http1connection import HTTP1Connection
8
31
9
32
class TndBaseTestResource (TornadoResource ):
10
33
"""
@@ -127,7 +150,7 @@ def test_not_authenticated(self):
127
150
128
151
class BaseTestCase (unittest .TestCase ):
129
152
"""
130
- test case that export the wrapped tornado.web.RequestHandler
153
+ test case that export the wrapped tornado.web.RequestHandler.
131
154
"""
132
155
def init_request_handler (self , rh_cls , view_type ):
133
156
global app
@@ -136,7 +159,20 @@ def init_request_handler(self, rh_cls, view_type):
136
159
elif view_type == 'detail' :
137
160
rq = rh_cls .as_detail ()
138
161
139
- fake_request = httpserver .HTTPRequest ('GET' , '/fake' , body = 'test123' )
162
+ # compose a fake incoming request
163
+ fake_connection = None
164
+
165
+ # after tornado 4.1, it's not allowed to build a RequestHandler without a connection.
166
+ if _newer_or_equal_ ((4 , 0 , 0 , 0 )):
167
+ ios = IOStream (socket .socket (socket .AF_INET , socket .SOCK_STREAM , 0 ))
168
+ context = None
169
+
170
+ # there is a bug in these 2 version that would fail when
171
+ # context is None
172
+ if _equal_ ((4 , 0 , 1 )) or _equal_ ((4 , 0 , 2 )):
173
+ context = httpserver ._HTTPRequestContext (ios , None , None )
174
+ fake_connection = HTTP1Connection (ios , False , context = context )
175
+ fake_request = httpserver .HTTPRequest ('GET' , '/fake' , body = 'test123' , connection = fake_connection )
140
176
self .new_handler = rq (app , fake_request )
141
177
142
178
0 commit comments