summaryrefslogtreecommitdiffstats
path: root/utils/test/result_collection_api/tests/unit/test_project.py
blob: e793111974e27c0c1923e018b264bea495589571 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import unittest

from test_base import TestBase
from resources.project_models import ProjectCreateRequest, Project, Projects
from common.constants import HTTP_OK, HTTP_BAD_REQUEST, \
    HTTP_FORBIDDEN, HTTP_NOT_FOUND


class TestProjectBase(TestBase):
    def setUp(self):
        super(TestProjectBase, self).setUp()
        self.req_d = ProjectCreateRequest('vping', 'vping-ssh test')
        self.req_e = ProjectCreateRequest('doctor', 'doctor test')
        self.get_res = Project
        self.list_res = Projects
        self.update_res = Project
        self.basePath = '/projects'

    def assert_body(self, project, req=None):
        if not req:
            req = self.req_d
        self.assertEqual(project.name, req.name)
        self.assertEqual(project.description, req.description)
        self.assertIsNotNone(project._id)
        self.assertIsNotNone(project.creation_date)


class TestProjectCreate(TestProjectBase):
    def test_withoutBody(self):
        (code, body) = self.create()
        self.assertEqual(code, HTTP_BAD_REQUEST)

    def test_success(self):
        (code, body) = self.create_d()
        self.assertEqual(code, HTTP_OK)
        self.assert_create_body(body)

    def test_alreadyExist(self):
        self.create_d()
        (code, body) = self.create_d()
        self.assertEqual(code, HTTP_FORBIDDEN)
        self.assertIn('already exists', body)


class TestProjectGet(TestProjectBase):
    def test_notExist(self):
        code, body = self.get('notExist')
        self.assertEqual(code, HTTP_NOT_FOUND)

    def test_getOne(self):
        self.create_d()
        code, body = self.get(self.req_d.name)
        self.assertEqual(code, HTTP_OK)
        self.assert_body(body)

    def test_list(self):
        self.create_d()
        self.create_e()
        code, body = self.get()
        for project in body.projects:
            if self.req_d.name == project.name:
                self.assert_body(project)
            else:
                self.assert_body(project, self.req_e)


class TestProjectUpdate(TestProjectBase):
    def test_withoutBody(self):
        code, _ = self.update('noBody')
        self.assertEqual(code, HTTP_BAD_REQUEST)

    def test_notFound(self):
        code, _ = self.update('notFound', self.req_e)
        self.assertEqual(code, HTTP_NOT_FOUND)

    def test_newNameExist(self):
        self.create_d()
        self.create_e()
        code, body = self.update(self.req_d.name, self.req_e)
        self.assertEqual(code, HTTP_FORBIDDEN)
        self.assertIn("already exists", body)

    def test_noUpdate(self):
        self.create_d()
        code, body = self.update(self.req_d.name, self.req_d)
        self.assertEqual(code, HTTP_FORBIDDEN)
        self.assertIn("Nothing to update", body)

    def test_success(self):
        self.create_d()
        code, body = self.get(self.req_d.name)
        _id = body._id

        req = ProjectCreateRequest('newName', 'new description')
        code, body = self.update(self.req_d.name, req)
        self.assertEqual(code, HTTP_OK)
        self.assertEqual(_id, body._id)
        self.assert_body(body, req)

        _, new_body = self.get(req.name)
        self.assertEqual(_id, new_body._id)
        self.assert_body(new_body, req)


class TestProjectDelete(TestProjectBase):
    def test_notFound(self):
        code = self.delete('notFound')
        self.assertEqual(code, HTTP_NOT_FOUND)

    def test_success(self):
        self.create_d()
        code = self.delete(self.req_d.name)
        self.assertEqual(code, HTTP_OK)

if __name__ == '__main__':
    unittest.main()