5a3d485ab8d62ee91b54036f07d8c14eb8b97f74
[releng.git] / utils / test / result_collection_api / tests / unit / test_pod.py
1 import unittest
2 import json
3
4 from test_base import TestBase
5 from resources.pod_models import PodCreateRequest, \
6     PodCreateResponse, PodsGetResponse
7 from common.constants import HTTP_OK, HTTP_BAD_REQUEST, HTTP_FORBIDDEN
8
9
10 class TestPodCreate(TestBase):
11     req = PodCreateRequest(name='zte-1', mode='alive', details='zte pod 1')
12
13     def test_withoutBody(self):
14         res = self.create('/pods', body=None)
15         self.assertEqual(res.code, HTTP_BAD_REQUEST)
16
17     def test_success(self):
18         res = self.create('/pods', body=self.req.format())
19         self.assertEqual(res.code, HTTP_OK)
20         res_body = PodCreateResponse.from_dict(json.loads(res.body))
21         self._assertMeta(res_body.meta, True)
22         self._assertBody(res_body.pod)
23
24     def test_alreadyExist(self):
25         self.create('/pods', body=self.req.format())
26         res = self.create('/pods', body=self.req.format())
27         self.assertEqual(res.code, HTTP_FORBIDDEN)
28         self.assertIn('already exists', res.body)
29
30     def _assertMeta(self, meta, success):
31         self.assertEqual(meta.success, success)
32         if success:
33             self.assertEqual(meta.uri, '/pods/{}'.format(self.req.name))
34
35     def _assertBody(self, res):
36         self.assertEqual(res.name, self.req.name)
37         self.assertEqual(res.mode, self.req.mode)
38         self.assertEqual(res.details, self.req.details)
39         self.assertIsNotNone(res.creation_date)
40         self.assertIsNotNone(res._id)
41
42
43 class TestPodGet(TestBase):
44     def test_notExist(self):
45         res = self.get('/pods/notExist')
46         body = PodsGetResponse.from_dict(json.loads(res.body))
47         self._assertMeta(body.meta, 0)
48
49     def test_getOne(self):
50         self.create('/pods', body=TestPodCreate.req.format())
51         res = self.get('/pods/{}'.format(TestPodCreate.req.name))
52         body = PodsGetResponse.from_dict(json.loads(res.body))
53         self._assertMeta(body.meta, 1)
54         self._assertBody(TestPodCreate.req, body.pods[0])
55
56     def test_list(self):
57         req = PodCreateRequest(name='zte-2', mode='alive', details='zte pod 2')
58         self.create('/pods', body=TestPodCreate.req.format())
59         self.create('/pods', body=req.format())
60         res = self.get('/pods')
61         body = PodsGetResponse.from_dict(json.loads(res.body))
62         self._assertMeta(body.meta, 2)
63         for pod in body.pods:
64             if req.name == pod.name:
65                 self._assertBody(req, pod)
66             else:
67                 self._assertBody(TestPodCreate.req, pod)
68
69     def _assertMeta(self, meta, total):
70         def check_success():
71             if total is 0:
72                 return False
73             else:
74                 return True
75         self.assertEqual(meta.total, total)
76         self.assertEqual(meta.success, check_success())
77
78     def _assertBody(self, req, res):
79         self.assertEqual(res.name, req.name)
80         self.assertEqual(res.mode, req.mode)
81         self.assertEqual(res.details, req.details)
82         self.assertIsNotNone(res.creation_date)
83
84
85 if __name__ == '__main__':
86     unittest.main()