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
9 from tornado import web
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
18 class TestToken(base.TestBase):
20 return web.Application(
21 url_mappings.mappings,
28 class TestTokenCreateProject(TestToken):
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'
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)
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)
47 def test_projectCreateTokenSuccess(self):
48 self.headers['X-Auth-Token'] = '12345'
49 code, body = self.create_d()
50 self.assertEqual(code, httplib.OK)
53 class TestTokenDeleteProject(TestToken):
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'
60 def test_projectDeleteTokenIvalid(self):
61 self.headers['X-Auth-Token'] = '12345'
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)
68 def test_projectDeleteTokenUnauthorized(self):
69 self.headers['X-Auth-Token'] = '12345'
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)
76 def test_projectDeleteTokenSuccess(self):
77 self.headers['X-Auth-Token'] = '12345'
79 code, body = self.delete(self.req_d.name)
80 self.assertEqual(code, httplib.OK)
83 class TestTokenUpdateProject(TestToken):
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'
90 def test_projectUpdateTokenIvalid(self):
91 self.headers['X-Auth-Token'] = '12345'
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)
100 def test_projectUpdateTokenUnauthorized(self):
101 self.headers['X-Auth-Token'] = '12345'
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)
110 def test_projectUpdateTokenSuccess(self):
111 self.headers['X-Auth-Token'] = '12345'
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)
118 if __name__ == '__main__':