return CreateResponse(href=href).format()
-class VersionHandler(RequestHandler):
+class VersionHandler(GenericApiHandler):
""" Display a message for the API version """
def get(self):
- self.write("Collection of test result API, v1")
+ self.finish_request([{'v1': 'basics'}])
class PodHandler(GenericApiHandler):
return tornado.web.Application(
[
# GET /version => GET API version
- (r"/version", VersionHandler),
+ (r"/versions", VersionHandler),
# few examples:
# GET /pods => Get all pods
# GET /pods/1 => Get details on POD 1
- (r"/pods", PodHandler),
- (r"/pods/([^/]+)", PodHandler),
+ (r"/api/v1/pods", PodHandler),
+ (r"/api/v1/pods/([^/]+)", PodHandler),
# few examples:
# GET /projects
# GET /projects/yardstick
- (r"/projects", ProjectHandler),
- (r"/projects/([^/]+)", ProjectHandler),
+ (r"/api/v1/projects", ProjectHandler),
+ (r"/api/v1/projects/([^/]+)", ProjectHandler),
# few examples
# GET /projects/qtip/cases => Get cases for qtip
#
- (r"/projects/([^/]+)/cases", TestcaseHandler),
- (r"/projects/([^/]+)/cases/([^/]+)", TestcaseHandler),
+ (r"/api/v1/projects/([^/]+)/cases", TestcaseHandler),
+ (r"/api/v1/projects/([^/]+)/cases/([^/]+)", TestcaseHandler),
# (r"/test_cases/([^/]+)", TestCasesHandler),
# new path to avoid a long depth
# POST /results =>
# Push results with mandatory request payload parameters
# (project, case, and pod)
- (r"/results", TestResultsHandler),
- (r"/results([^/]*)", TestResultsHandler),
- (r"/results/([^/]*)", TestResultsHandler),
+ (r"/api/v1/results", TestResultsHandler),
+ (r"/api/v1/results([^/]*)", TestResultsHandler),
+ (r"/api/v1/results/([^/]*)", TestResultsHandler),
# Method to manage Dashboard ready results
# GET /dashboard?project=functest&case=vPing&pod=opnfv-jump2
# => get results in dasboard ready format
# get /dashboard
# => get the list of project with dashboard ready results
- (r"/dashboard", DashboardHandler),
- (r"/dashboard([^/]*)", DashboardHandler),
- (r"/dashboard/([^/]*)", DashboardHandler),
+ (r"/dashboard/v1/results", DashboardHandler),
+ (r"/dashboard/v1/results([^/]*)", DashboardHandler),
],
db=db,
debug=CONF.api_debug_on,
def get_app(self):
return Application(
[
- (r"/version", VersionHandler),
- (r"/pods", PodHandler),
- (r"/pods/([^/]+)", PodHandler),
- (r"/projects", ProjectHandler),
- (r"/projects/([^/]+)", ProjectHandler),
- (r"/projects/([^/]+)/cases", TestcaseHandler),
- (r"/projects/([^/]+)/cases/([^/]+)", TestcaseHandler),
- (r"/results", TestResultsHandler),
- (r"/results([^/]*)", TestResultsHandler),
- (r"/results/([^/]*)", TestResultsHandler),
- (r"/dashboard", DashboardHandler),
- (r"/dashboard([^/]*)", DashboardHandler),
- (r"/dashboard/([^/]*)", DashboardHandler),
+ (r"/versions", VersionHandler),
+ (r"/api/v1/pods", PodHandler),
+ (r"/api/v1/pods/([^/]+)", PodHandler),
+ (r"/api/v1/projects", ProjectHandler),
+ (r"/api/v1/projects/([^/]+)", ProjectHandler),
+ (r"/api/v1/projects/([^/]+)/cases", TestcaseHandler),
+ (r"/api/v1/projects/([^/]+)/cases/([^/]+)", TestcaseHandler),
+ (r"/api/v1/results", TestResultsHandler),
+ (r"/api/v1/results([^/]*)", TestResultsHandler),
+ (r"/api/v1/results/([^/]*)", TestResultsHandler),
+ (r"/dashboard/v1/results", DashboardHandler),
+ (r"/dashboard/v1/results([^/]*)", DashboardHandler),
],
db=fake_pymongo,
debug=True,
class TestDashboardBase(TestResultBase):
def setUp(self):
super(TestDashboardBase, self).setUp()
- self.basePath = '/dashboard'
- self.create_help('/results', self.req_d)
- self.create_help('/results', self.req_d)
+ self.basePath = '/dashboard/v1/results'
+ self.create_help('/api/v1/results', self.req_d)
+ self.create_help('/api/v1/results', self.req_d)
self.list_res = None
class TestPodBase(TestBase):
def setUp(self):
super(TestPodBase, self).setUp()
- self.req_d = PodCreateRequest('zte-1', 'virtual', 'zte pod 1','ci-pod')
+ self.req_d = PodCreateRequest('zte-1', 'virtual',
+ 'zte pod 1', 'ci-pod')
self.req_e = PodCreateRequest('zte-2', 'metal', 'zte pod 2')
self.get_res = Pod
self.list_res = Pods
- self.basePath = '/pods'
+ self.basePath = '/api/v1/pods'
def assert_get_body(self, pod, req=None):
if not req:
self.assertEqual(pod.name, req.name)
self.assertEqual(pod.mode, req.mode)
self.assertEqual(pod.details, req.details)
- self.assertEqual(pod.role, req.role)
+ self.assertEqual(pod.role, req.role)
self.assertIsNotNone(pod.creation_date)
self.assertIsNotNone(pod._id)
self.assertEqual(code, HTTP_FORBIDDEN)
self.assertIn('already exists', body)
- def _assertMeta(self, meta, success):
- self.assertEqual(meta.success, success)
- if success:
- self.assertEqual(meta.uri, '/pods/{}'.format(self.req_d.name))
-
class TestPodGet(TestPodBase):
def test_notExist(self):
self.get_res = Project
self.list_res = Projects
self.update_res = Project
- self.basePath = '/projects'
+ self.basePath = '/api/v1/projects'
def assert_body(self, project, req=None):
if not req:
trust_indicator=self.trust_indicator)
self.get_res = TestResult
self.list_res = TestResults
- self.basePath = '/results'
+ self.basePath = '/api/v1/results'
self.req_pod = PodCreateRequest(self.pod, 'metal', 'zte pod 1')
self.req_project = ProjectCreateRequest(self.project, 'vping test')
self.req_testcase = TestcaseCreateRequest('/cases/vping',
self.case,
'vping-ssh test')
- self.create_help('/pods', self.req_pod)
- self.create_help('/projects', self.req_project)
- self.create_help('/projects/%s/cases', self.req_testcase, self.project)
+ self.create_help('/api/v1/pods', self.req_pod)
+ self.create_help('/api/v1/projects', self.req_project)
+ self.create_help('/api/v1/projects/%s/cases',
+ self.req_testcase,
+ self.project)
def assert_res(self, code, result):
self.assertEqual(code, HTTP_OK)
self.get_res = Testcase
self.list_res = Testcases
self.update_res = Testcase
- self.basePath = '/projects/%s/cases'
+ self.basePath = '/api/v1/projects/%s/cases'
self.create_project()
def assert_body(self, case, req=None):
def create_project(self):
req_p = ProjectCreateRequest('functest', 'vping-ssh test')
- self.create_help('/projects', req_p)
+ self.create_help('/api/v1/projects', req_p)
self.project = req_p.name
def create_d(self):
+import json
import unittest
from test_base import TestBase
__author__ = 'serena'
-class TestVersion(TestBase):
- def test_get_version(self):
- response = self.fetch('/version')
- self.assertEqual(response.code, 200)
+class TestVersionbBase(TestBase):
+ def setUp(self):
+ super(TestVersionbBase, self).setUp()
+ self.list_res = None
+ self.basePath = '/versions'
+
+
+class TestVersion(TestVersionbBase):
+ def test_success(self):
+ code, body = self.get()
+ self.assertEqual(200, code)
+ json_body = json.loads(body)
+ self.assertEqual(len(json_body), 1)
+ self.assertEqual('basics', json_body[0].get('v1'))
if __name__ == '__main__':
unittest.main()