3 from test_base import TestBase
4 from resources.testcase_models import TestcaseCreateRequest, \
5 Testcase, Testcases, TestcaseUpdateRequest
6 from resources.project_models import ProjectCreateRequest, Project
7 from common.constants import HTTP_OK, HTTP_BAD_REQUEST, \
8 HTTP_FORBIDDEN, HTTP_NOT_FOUND
11 __author__ = '__serena__'
14 class TestCaseBase(TestBase):
16 super(TestCaseBase, self).setUp()
17 self.req_d = TestcaseCreateRequest('/cases/vping_1', 'vping_1', 'vping-ssh test')
18 self.req_e = TestcaseCreateRequest('/cases/doctor_1', 'doctor_1', 'create doctor')
19 self.update_d = TestcaseUpdateRequest('vping_1', 'vping-ssh test', 'functest')
20 self.update_e = TestcaseUpdateRequest('doctor_1', 'create doctor', 'functest')
21 self.get_res = Testcase
22 self.list_res = Testcases
23 self.update_res = Testcase
24 self.basePath = '/projects/%s/cases'
27 def assert_body(self, case, req=None):
30 self.assertEqual(case.name, req.name)
31 self.assertEqual(case.description, req.description)
32 self.assertEqual(case.url, req.url)
33 self.assertIsNotNone(case._id)
34 self.assertIsNotNone(case.creation_date)
36 def assert_update_body(self, old, new, req=None):
39 self.assertEqual(new.name, req.name)
40 self.assertEqual(new.description, req.description)
41 self.assertEqual(new.url, old.url)
42 self.assertIsNotNone(new._id)
43 self.assertIsNotNone(new.creation_date)
45 def create_project(self):
46 req_p = ProjectCreateRequest('functest', 'vping-ssh test')
47 self.create_help('/projects', req_p, Project)
48 self.project = req_p.name
51 return super(TestCaseBase, self).create_d(self.project)
54 return super(TestCaseBase, self).create_e(self.project)
56 def get(self, case=None):
57 return super(TestCaseBase, self).get(self.project, case)
59 def update(self, new=None, case=None):
60 return super(TestCaseBase, self).update(new, self.project, case)
62 def delete(self, case):
63 return super(TestCaseBase, self).delete(self.project, case)
66 class TestCaseCreate(TestCaseBase):
67 def test_noBody(self):
68 (code, body) = self.create(None, 'vping')
69 self.assertEqual(code, HTTP_BAD_REQUEST)
71 def test_noProject(self):
72 code, body = self.create(self.req_d, 'noProject')
73 self.assertEqual(code, HTTP_FORBIDDEN)
74 self.assertIn('Could not find project', body)
76 def test_success(self):
77 code, body = self.create_d()
78 self.assertEqual(code, HTTP_OK)
79 self.assert_create_body(body, None, self.project)
81 def test_alreadyExist(self):
83 code, body = self.create_d()
84 self.assertEqual(code, HTTP_FORBIDDEN)
85 self.assertIn('already exists', body)
88 class TestCaseGet(TestCaseBase):
89 def test_notExist(self):
90 code, body = self.get('notExist')
91 self.assertEqual(code, HTTP_NOT_FOUND)
93 def test_getOne(self):
95 code, body = self.get(self.req_d.name)
96 self.assertEqual(code, HTTP_OK)
97 self.assert_body(body)
102 code, body = self.get()
103 for case in body.testcases:
104 if self.req_d.name == case.name:
105 self.assert_body(case)
107 self.assert_body(case, self.req_e)
110 class TestCaseUpdate(TestCaseBase):
111 def test_noBody(self):
112 code, _ = self.update(case='noBody')
113 self.assertEqual(code, HTTP_BAD_REQUEST)
115 def test_notFound(self):
116 code, _ = self.update(self.update_e, 'notFound')
117 self.assertEqual(code, HTTP_NOT_FOUND)
119 def test_newNameExist(self):
122 code, body = self.update(self.update_e, self.req_d.name)
123 self.assertEqual(code, HTTP_FORBIDDEN)
124 self.assertIn("already exists", body)
126 def test_noUpdate(self):
128 code, body = self.update(self.update_d, self.req_d.name)
129 self.assertEqual(code, HTTP_FORBIDDEN)
130 self.assertIn("Nothing to update", body)
132 def test_success(self):
134 code, body = self.get(self.req_d.name)
137 code, body = self.update(self.update_e, self.req_d.name)
138 self.assertEqual(code, HTTP_OK)
139 self.assertEqual(_id, body._id)
140 self.assert_update_body(self.req_d, body, self.update_e)
142 _, new_body = self.get(self.req_e.name)
143 self.assertEqual(_id, new_body._id)
144 self.assert_update_body(self.req_d, new_body, self.update_e)
147 class TestCaseDelete(TestCaseBase):
148 def test_notFound(self):
149 code, body = self.delete('notFound')
150 self.assertEqual(code, HTTP_NOT_FOUND)
152 def test_success(self):
154 code, body = self.delete(self.req_d.name)
155 self.assertEqual(code, HTTP_OK)
156 self.assertEqual(body, '')
158 code, body = self.get(self.req_d.name)
159 self.assertEqual(code, HTTP_NOT_FOUND)
162 if __name__ == '__main__':