2 from tornado.web import Application
3 from tornado.testing import AsyncHTTPTestCase
5 from resources.handlers import VersionHandler, PodHandler, \
6 TestProjectHandler, TestCasesHandler, TestResultsHandler, DashboardHandler
7 from resources.models import CreateResponse
11 class TestBase(AsyncHTTPTestCase):
12 headers = {'Content-Type': 'application/json; charset=UTF-8'}
16 self.create_res = CreateResponse
19 self.update_res = None
22 self.addCleanup(self._clear)
23 super(TestBase, self).setUp()
28 (r"/version", VersionHandler),
29 (r"/pods", PodHandler),
30 (r"/pods/([^/]+)", PodHandler),
31 (r"/projects", TestProjectHandler),
32 (r"/projects/([^/]+)", TestProjectHandler),
33 (r"/projects/([^/]+)/cases", TestCasesHandler),
34 (r"/projects/([^/]+)/cases/([^/]+)", TestCasesHandler),
35 (r"/results", TestResultsHandler),
36 (r"/results([^/]*)", TestResultsHandler),
37 (r"/results/([^/]*)", TestResultsHandler),
38 (r"/dashboard", DashboardHandler),
39 (r"/dashboard([^/]*)", DashboardHandler),
40 (r"/dashboard/([^/]*)", DashboardHandler),
47 return self.create(self.req_d)
50 return self.create(self.req_e)
52 def create(self, req=None):
56 res = self.fetch(self.basePath,
61 return self._get_return(res, self.create_res)
63 def get(self, item=None):
64 res = self.fetch(self._get_uri(item),
69 return self.get_res if item else self.list_res
70 return self._get_return(res, inner())
72 def update(self, item, new=None):
75 res = self.fetch(self._get_uri(item),
79 return self._get_return(res, self.update_res)
81 def delete(self, item):
82 res = self.fetch(self._get_uri(item),
87 def _get_uri(self, item=None):
90 uri += '/{}'.format(item)
93 def _get_return(self, res, cls):
96 return code, self._get_return_body(code, body, cls)
99 def _get_return_body(code, body, cls):
100 return cls.from_dict(json.loads(body)) if code < 300 else body
102 def assert_create_body(self, body, req=None):
106 self.assertIn(self._get_uri(req.name), body.href)
110 fake_pymongo.pods.clear()
111 fake_pymongo.projects.clear()
112 fake_pymongo.test_cases.clear()
113 fake_pymongo.test_results.clear()