Rename arm-pod3-2 to arm-pod4
[releng.git] / utils / test / testapi / opnfv_testapi / tests / unit / test_token.py
1 # All rights reserved. This program and the accompanying materials
2 # are made available under the terms of the Apache License, Version 2.0
3 # which accompanies this distribution, and is available at
4 # http://www.apache.org/licenses/LICENSE-2.0
5
6 import httplib
7 import unittest
8
9 from tornado import web
10
11 import fake_pymongo
12 from opnfv_testapi.common import message
13 from opnfv_testapi.resources import project_models
14 from opnfv_testapi.router import url_mappings
15 import test_base as base
16
17
18 class TestToken(base.TestBase):
19     def get_app(self):
20         return web.Application(
21             url_mappings.mappings,
22             db=fake_pymongo,
23             debug=True,
24             auth=True
25         )
26
27
28 class TestTokenCreateProject(TestToken):
29     def setUp(self):
30         super(TestTokenCreateProject, self).setUp()
31         self.req_d = project_models.ProjectCreateRequest('vping')
32         fake_pymongo.tokens.insert({"access_token": "12345"})
33         self.basePath = '/api/v1/projects'
34
35     def test_projectCreateTokenInvalid(self):
36         self.headers['X-Auth-Token'] = '1234'
37         code, body = self.create_d()
38         self.assertEqual(code, httplib.FORBIDDEN)
39         self.assertIn(message.invalid_token(), body)
40
41     def test_projectCreateTokenUnauthorized(self):
42         self.headers.pop('X-Auth-Token')
43         code, body = self.create_d()
44         self.assertEqual(code, httplib.UNAUTHORIZED)
45         self.assertIn(message.unauthorized(), body)
46
47     def test_projectCreateTokenSuccess(self):
48         self.headers['X-Auth-Token'] = '12345'
49         code, body = self.create_d()
50         self.assertEqual(code, httplib.OK)
51
52
53 class TestTokenDeleteProject(TestToken):
54     def setUp(self):
55         super(TestTokenDeleteProject, self).setUp()
56         self.req_d = project_models.ProjectCreateRequest('vping')
57         fake_pymongo.tokens.insert({"access_token": "12345"})
58         self.basePath = '/api/v1/projects'
59
60     def test_projectDeleteTokenIvalid(self):
61         self.headers['X-Auth-Token'] = '12345'
62         self.create_d()
63         self.headers['X-Auth-Token'] = '1234'
64         code, body = self.delete(self.req_d.name)
65         self.assertEqual(code, httplib.FORBIDDEN)
66         self.assertIn(message.invalid_token(), body)
67
68     def test_projectDeleteTokenUnauthorized(self):
69         self.headers['X-Auth-Token'] = '12345'
70         self.create_d()
71         self.headers.pop('X-Auth-Token')
72         code, body = self.delete(self.req_d.name)
73         self.assertEqual(code, httplib.UNAUTHORIZED)
74         self.assertIn(message.unauthorized(), body)
75
76     def test_projectDeleteTokenSuccess(self):
77         self.headers['X-Auth-Token'] = '12345'
78         self.create_d()
79         code, body = self.delete(self.req_d.name)
80         self.assertEqual(code, httplib.OK)
81
82
83 class TestTokenUpdateProject(TestToken):
84     def setUp(self):
85         super(TestTokenUpdateProject, self).setUp()
86         self.req_d = project_models.ProjectCreateRequest('vping')
87         fake_pymongo.tokens.insert({"access_token": "12345"})
88         self.basePath = '/api/v1/projects'
89
90     def test_projectUpdateTokenIvalid(self):
91         self.headers['X-Auth-Token'] = '12345'
92         self.create_d()
93         code, body = self.get(self.req_d.name)
94         self.headers['X-Auth-Token'] = '1234'
95         req = project_models.ProjectUpdateRequest('newName', 'new description')
96         code, body = self.update(req, self.req_d.name)
97         self.assertEqual(code, httplib.FORBIDDEN)
98         self.assertIn(message.invalid_token(), body)
99
100     def test_projectUpdateTokenUnauthorized(self):
101         self.headers['X-Auth-Token'] = '12345'
102         self.create_d()
103         code, body = self.get(self.req_d.name)
104         self.headers.pop('X-Auth-Token')
105         req = project_models.ProjectUpdateRequest('newName', 'new description')
106         code, body = self.update(req, self.req_d.name)
107         self.assertEqual(code, httplib.UNAUTHORIZED)
108         self.assertIn(message.unauthorized(), body)
109
110     def test_projectUpdateTokenSuccess(self):
111         self.headers['X-Auth-Token'] = '12345'
112         self.create_d()
113         code, body = self.get(self.req_d.name)
114         req = project_models.ProjectUpdateRequest('newName', 'new description')
115         code, body = self.update(req, self.req_d.name)
116         self.assertEqual(code, httplib.OK)
117
118 if __name__ == '__main__':
119     unittest.main()