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
| class BaseTestCase(AsyncHTTPTestCase): def setUp(self): super(BaseTestCase, self).setUp() self.db_session = test_session self.db_session.commit() self.cookie = SimpleCookie()
def get_app(self): test_app = Application() return test_app
def get_new_ioloop(self): return IOLoop.current()
def get_url(self, path): full_path = super(BaseTestCase, self).get_url('/api/v1{}'.format(path)) return full_path
def _update_cookies(self, headers): try: cookies = escape.native_str(headers['Set-Cookie']) self.cookie.update(SimpleCookie(cookies)) except KeyError: return
def make_response(self, req, resp): response = Response() response.status_code = getattr(resp, 'code', None) response.headers = {k: v for k, v in list(resp.headers.items())} response.encoding = get_encoding_from_headers(response.headers) response.raw = resp response.reason = response.raw.reason response._content = resp.body
if isinstance(req.url, bytes): response.url = req.url.decode('utf-8') else: response.url = req.url extract_cookies_to_jar(response.cookies, req, resp) response.request = req return response
def send(self, url, method='GET', data=None, json_data=None, files=None, headers=None, **kwargs): if 'follow_redirects' not in kwargs: kwargs['follow_redirects'] = False request = Request(url=self.get_url(url), files=files, data=data, json=json_data) request_data = request.prepare() if headers is None: headers = {} headers.update(request_data.headers) cookie_sting = '; '.join([f'{key}={morsel.value}' for key, morsel in self.cookie.items()]) if cookie_sting != '': headers.update({'Cookie': cookie_sting}) resp = self.fetch(url, method=method, headers=headers, body=request_data.body, allow_nonstandard_methods=True, **kwargs) self._update_cookies(resp.headers) response = self.make_response(request, resp) self.db_session.rollback() return response
def get(self, url, **kwargs): response = self.send(url, method='GET', **kwargs) return response
def patch(self, url, files=None, data=None, json_data=None): response = self.send(url, method='PATCH', files=files, data=data, json_data=json_data) return response
def post(self, url, files=None, data=None, json_data=None, **kwargs): response = self.send(url, method='POST', files=files, data=data, json_data=json_data, **kwargs) return response
def put(self, url, files=None, data=None, json_data=None): response = self.send(url, method='PUT', files=files, data=data, json_data=json_data) return response
|