3 from test_base import TestBase
4 from opnfv_testapi.resources.project_models import ProjectCreateRequest, \
6 from opnfv_testapi.common.constants import HTTP_OK, HTTP_BAD_REQUEST, \
7 HTTP_FORBIDDEN, HTTP_NOT_FOUND
10 class TestProjectBase(TestBase):
12 super(TestProjectBase, self).setUp()
13 self.req_d = ProjectCreateRequest('vping', 'vping-ssh test')
14 self.req_e = ProjectCreateRequest('doctor', 'doctor test')
15 self.get_res = Project
16 self.list_res = Projects
17 self.update_res = Project
18 self.basePath = '/api/v1/projects'
20 def assert_body(self, project, req=None):
23 self.assertEqual(project.name, req.name)
24 self.assertEqual(project.description, req.description)
25 self.assertIsNotNone(project._id)
26 self.assertIsNotNone(project.creation_date)
29 class TestProjectCreate(TestProjectBase):
30 def test_withoutBody(self):
31 (code, body) = self.create()
32 self.assertEqual(code, HTTP_BAD_REQUEST)
34 def test_emptyName(self):
35 req_empty = ProjectCreateRequest('')
36 (code, body) = self.create(req_empty)
37 self.assertEqual(code, HTTP_BAD_REQUEST)
38 self.assertIn('name missing', body)
40 def test_noneName(self):
41 req_none = ProjectCreateRequest(None)
42 (code, body) = self.create(req_none)
43 self.assertEqual(code, HTTP_BAD_REQUEST)
44 self.assertIn('name missing', body)
46 def test_success(self):
47 (code, body) = self.create_d()
48 self.assertEqual(code, HTTP_OK)
49 self.assert_create_body(body)
51 def test_alreadyExist(self):
53 (code, body) = self.create_d()
54 self.assertEqual(code, HTTP_FORBIDDEN)
55 self.assertIn('already exists', body)
58 class TestProjectGet(TestProjectBase):
59 def test_notExist(self):
60 code, body = self.get('notExist')
61 self.assertEqual(code, HTTP_NOT_FOUND)
63 def test_getOne(self):
65 code, body = self.get(self.req_d.name)
66 self.assertEqual(code, HTTP_OK)
67 self.assert_body(body)
72 code, body = self.get()
73 for project in body.projects:
74 if self.req_d.name == project.name:
75 self.assert_body(project)
77 self.assert_body(project, self.req_e)
80 class TestProjectUpdate(TestProjectBase):
81 def test_withoutBody(self):
82 code, _ = self.update(None, 'noBody')
83 self.assertEqual(code, HTTP_BAD_REQUEST)
85 def test_notFound(self):
86 code, _ = self.update(self.req_e, 'notFound')
87 self.assertEqual(code, HTTP_NOT_FOUND)
89 def test_newNameExist(self):
92 code, body = self.update(self.req_e, self.req_d.name)
93 self.assertEqual(code, HTTP_FORBIDDEN)
94 self.assertIn("already exists", body)
96 def test_noUpdate(self):
98 code, body = self.update(self.req_d, self.req_d.name)
99 self.assertEqual(code, HTTP_FORBIDDEN)
100 self.assertIn("Nothing to update", body)
102 def test_success(self):
104 code, body = self.get(self.req_d.name)
107 req = ProjectCreateRequest('newName', 'new description')
108 code, body = self.update(req, self.req_d.name)
109 self.assertEqual(code, HTTP_OK)
110 self.assertEqual(_id, body._id)
111 self.assert_body(body, req)
113 _, new_body = self.get(req.name)
114 self.assertEqual(_id, new_body._id)
115 self.assert_body(new_body, req)
118 class TestProjectDelete(TestProjectBase):
119 def test_notFound(self):
120 code, body = self.delete('notFound')
121 self.assertEqual(code, HTTP_NOT_FOUND)
123 def test_success(self):
125 code, body = self.delete(self.req_d.name)
126 self.assertEqual(code, HTTP_OK)
127 self.assertEqual(body, '')
129 code, body = self.get(self.req_d.name)
130 self.assertEqual(code, HTTP_NOT_FOUND)
132 if __name__ == '__main__':