1 ##############################################################################
2 # Copyright (c) 2016 ZTE Corporation
3 # feng.xiaowei@zte.com.cn
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
12 from opnfv_testapi.common import message
13 from opnfv_testapi.resources import project_models
14 import test_base as base
17 class TestProjectBase(base.TestBase):
19 super(TestProjectBase, self).setUp()
20 self.req_d = project_models.ProjectCreateRequest('vping',
22 self.req_e = project_models.ProjectCreateRequest('doctor',
24 self.get_res = project_models.Project
25 self.list_res = project_models.Projects
26 self.update_res = project_models.Project
27 self.basePath = '/api/v1/projects'
29 def assert_body(self, project, req=None):
32 self.assertEqual(project.name, req.name)
33 self.assertEqual(project.description, req.description)
34 self.assertIsNotNone(project._id)
35 self.assertIsNotNone(project.creation_date)
38 class TestProjectCreate(TestProjectBase):
39 def test_withoutBody(self):
40 (code, body) = self.create()
41 self.assertEqual(code, httplib.BAD_REQUEST)
43 def test_emptyName(self):
44 req_empty = project_models.ProjectCreateRequest('')
45 (code, body) = self.create(req_empty)
46 self.assertEqual(code, httplib.BAD_REQUEST)
47 self.assertIn(message.missing('name'), body)
49 def test_noneName(self):
50 req_none = project_models.ProjectCreateRequest(None)
51 (code, body) = self.create(req_none)
52 self.assertEqual(code, httplib.BAD_REQUEST)
53 self.assertIn(message.missing('name'), body)
55 def test_success(self):
56 (code, body) = self.create_d()
57 self.assertEqual(code, httplib.OK)
58 self.assert_create_body(body)
60 def test_alreadyExist(self):
62 (code, body) = self.create_d()
63 self.assertEqual(code, httplib.FORBIDDEN)
64 self.assertIn(message.exist_base, body)
67 class TestProjectGet(TestProjectBase):
68 def test_notExist(self):
69 code, body = self.get('notExist')
70 self.assertEqual(code, httplib.NOT_FOUND)
72 def test_getOne(self):
74 code, body = self.get(self.req_d.name)
75 self.assertEqual(code, httplib.OK)
76 self.assert_body(body)
81 code, body = self.get()
82 for project in body.projects:
83 if self.req_d.name == project.name:
84 self.assert_body(project)
86 self.assert_body(project, self.req_e)
89 class TestProjectUpdate(TestProjectBase):
90 def test_withoutBody(self):
91 code, _ = self.update(None, 'noBody')
92 self.assertEqual(code, httplib.BAD_REQUEST)
94 def test_notFound(self):
95 code, _ = self.update(self.req_e, 'notFound')
96 self.assertEqual(code, httplib.NOT_FOUND)
98 def test_newNameExist(self):
101 code, body = self.update(self.req_e, self.req_d.name)
102 self.assertEqual(code, httplib.FORBIDDEN)
103 self.assertIn(message.exist_base, body)
105 def test_noUpdate(self):
107 code, body = self.update(self.req_d, self.req_d.name)
108 self.assertEqual(code, httplib.FORBIDDEN)
109 self.assertIn(message.no_update(), body)
111 def test_success(self):
113 code, body = self.get(self.req_d.name)
116 req = project_models.ProjectUpdateRequest('newName', 'new description')
117 code, body = self.update(req, self.req_d.name)
118 self.assertEqual(code, httplib.OK)
119 self.assertEqual(_id, body._id)
120 self.assert_body(body, req)
122 _, new_body = self.get(req.name)
123 self.assertEqual(_id, new_body._id)
124 self.assert_body(new_body, req)
127 class TestProjectDelete(TestProjectBase):
128 def test_notFound(self):
129 code, body = self.delete('notFound')
130 self.assertEqual(code, httplib.NOT_FOUND)
132 def test_success(self):
134 code, body = self.delete(self.req_d.name)
135 self.assertEqual(code, httplib.OK)
136 self.assertEqual(body, '')
138 code, body = self.get(self.req_d.name)
139 self.assertEqual(code, httplib.NOT_FOUND)
141 if __name__ == '__main__':