fuel: Enable concurrency for fuel-deploy job
[releng.git] / utils / test / result_collection_api / opnfv_testapi / tests / unit / test_project.py
1 import unittest
2
3 from test_base import TestBase
4 from opnfv_testapi.resources.project_models import ProjectCreateRequest, \
5     Project, Projects
6 from opnfv_testapi.common.constants import HTTP_OK, HTTP_BAD_REQUEST, \
7     HTTP_FORBIDDEN, HTTP_NOT_FOUND
8
9
10 class TestProjectBase(TestBase):
11     def setUp(self):
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'
19
20     def assert_body(self, project, req=None):
21         if not req:
22             req = self.req_d
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)
27
28
29 class TestProjectCreate(TestProjectBase):
30     def test_withoutBody(self):
31         (code, body) = self.create()
32         self.assertEqual(code, HTTP_BAD_REQUEST)
33
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)
39
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)
45
46     def test_success(self):
47         (code, body) = self.create_d()
48         self.assertEqual(code, HTTP_OK)
49         self.assert_create_body(body)
50
51     def test_alreadyExist(self):
52         self.create_d()
53         (code, body) = self.create_d()
54         self.assertEqual(code, HTTP_FORBIDDEN)
55         self.assertIn('already exists', body)
56
57
58 class TestProjectGet(TestProjectBase):
59     def test_notExist(self):
60         code, body = self.get('notExist')
61         self.assertEqual(code, HTTP_NOT_FOUND)
62
63     def test_getOne(self):
64         self.create_d()
65         code, body = self.get(self.req_d.name)
66         self.assertEqual(code, HTTP_OK)
67         self.assert_body(body)
68
69     def test_list(self):
70         self.create_d()
71         self.create_e()
72         code, body = self.get()
73         for project in body.projects:
74             if self.req_d.name == project.name:
75                 self.assert_body(project)
76             else:
77                 self.assert_body(project, self.req_e)
78
79
80 class TestProjectUpdate(TestProjectBase):
81     def test_withoutBody(self):
82         code, _ = self.update(None, 'noBody')
83         self.assertEqual(code, HTTP_BAD_REQUEST)
84
85     def test_notFound(self):
86         code, _ = self.update(self.req_e, 'notFound')
87         self.assertEqual(code, HTTP_NOT_FOUND)
88
89     def test_newNameExist(self):
90         self.create_d()
91         self.create_e()
92         code, body = self.update(self.req_e, self.req_d.name)
93         self.assertEqual(code, HTTP_FORBIDDEN)
94         self.assertIn("already exists", body)
95
96     def test_noUpdate(self):
97         self.create_d()
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)
101
102     def test_success(self):
103         self.create_d()
104         code, body = self.get(self.req_d.name)
105         _id = body._id
106
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)
112
113         _, new_body = self.get(req.name)
114         self.assertEqual(_id, new_body._id)
115         self.assert_body(new_body, req)
116
117
118 class TestProjectDelete(TestProjectBase):
119     def test_notFound(self):
120         code, body = self.delete('notFound')
121         self.assertEqual(code, HTTP_NOT_FOUND)
122
123     def test_success(self):
124         self.create_d()
125         code, body = self.delete(self.req_d.name)
126         self.assertEqual(code, HTTP_OK)
127         self.assertEqual(body, '')
128
129         code, body = self.get(self.req_d.name)
130         self.assertEqual(code, HTTP_NOT_FOUND)
131
132 if __name__ == '__main__':
133     unittest.main()