1
# Copyright 2010 OpenStack LLC.
4
# Licensed under the Apache License, Version 2.0 (the "License"); you may
5
# not use this file except in compliance with the License. You may obtain
6
# a copy of the License at
8
# http://www.apache.org/licenses/LICENSE-2.0
10
# Unless required by applicable law or agreed to in writing, software
11
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
# License for the specific language governing permissions and limitations
16
from lxml import etree
18
from nova.api.openstack.compute.contrib import users
19
import nova.auth.manager as auth_manager
21
from nova.tests.api.openstack import fakes
22
from nova import utils
26
self.manager = fakes.FakeAuthManager()
29
class UsersTest(test.TestCase):
31
super(UsersTest, self).setUp()
32
self.flags(verbose=True)
33
self.stubs.Set(users.Controller, '__init__',
35
fakes.FakeAuthManager.clear_fakes()
36
fakes.FakeAuthManager.projects = dict(testacct=auth_manager.Project(
42
fakes.FakeAuthDatabase.data = {}
43
fakes.stub_out_networking(self.stubs)
44
fakes.stub_out_rate_limiting(self.stubs)
46
fakemgr = fakes.FakeAuthManager()
47
fakemgr.add_user(auth_manager.User('id1', 'guy1',
48
'acc1', 'secret1', False))
49
fakemgr.add_user(auth_manager.User('id2', 'guy2',
50
'acc2', 'secret2', True))
52
self.controller = users.Controller()
54
def test_get_user_list(self):
55
req = fakes.HTTPRequest.blank('/v2/fake/users')
56
res_dict = self.controller.index(req)
58
self.assertEqual(len(res_dict['users']), 2)
60
def test_get_user_by_id(self):
61
req = fakes.HTTPRequest.blank('/v2/fake/users/id2')
62
res_dict = self.controller.show(req, 'id2')
64
self.assertEqual(res_dict['user']['id'], 'id2')
65
self.assertEqual(res_dict['user']['name'], 'guy2')
66
self.assertEqual(res_dict['user']['secret'], 'secret2')
67
self.assertEqual(res_dict['user']['admin'], True)
69
def test_user_delete(self):
70
req = fakes.HTTPRequest.blank('/v2/fake/users/id1')
71
self.controller.delete(req, 'id1')
73
self.assertTrue('id1' not in [u.id for u in
74
fakes.FakeAuthManager.auth_data])
76
def test_user_create(self):
77
secret = utils.generate_password()
78
body = dict(user=dict(name='test_guy',
82
req = fakes.HTTPRequest.blank('/v2/fake/users')
83
res_dict = self.controller.create(req, body)
85
# NOTE(justinsb): This is a questionable assertion in general
86
# fake sets id=name, but others might not...
87
self.assertEqual(res_dict['user']['id'], 'test_guy')
89
self.assertEqual(res_dict['user']['name'], 'test_guy')
90
self.assertEqual(res_dict['user']['access'], 'acc3')
91
self.assertEqual(res_dict['user']['secret'], secret)
92
self.assertEqual(res_dict['user']['admin'], True)
93
self.assertTrue('test_guy' in [u.id for u in
94
fakes.FakeAuthManager.auth_data])
95
self.assertEqual(len(fakes.FakeAuthManager.auth_data), 3)
97
def test_user_update(self):
98
new_secret = utils.generate_password()
99
body = dict(user=dict(name='guy2',
103
req = fakes.HTTPRequest.blank('/v2/fake/users/id2')
104
res_dict = self.controller.update(req, 'id2', body)
106
self.assertEqual(res_dict['user']['id'], 'id2')
107
self.assertEqual(res_dict['user']['name'], 'guy2')
108
self.assertEqual(res_dict['user']['access'], 'acc2')
109
self.assertEqual(res_dict['user']['secret'], new_secret)
110
self.assertEqual(res_dict['user']['admin'], True)
113
class TestUsersXMLSerializer(test.TestCase):
115
def test_index(self):
116
serializer = users.UsersTemplate()
117
fixture = {'users': [{'id': 'id1',
126
output = serializer.serialize(fixture)
127
res_tree = etree.XML(output)
129
self.assertEqual(res_tree.tag, 'users')
130
self.assertEqual(len(res_tree), 2)
131
self.assertEqual(res_tree[0].tag, 'user')
132
self.assertEqual(res_tree[0].get('id'), 'id1')
133
self.assertEqual(res_tree[1].tag, 'user')
134
self.assertEqual(res_tree[1].get('id'), 'id2')
137
serializer = users.UserTemplate()
138
fixture = {'user': {'id': 'id2',
143
output = serializer.serialize(fixture)
144
res_tree = etree.XML(output)
146
self.assertEqual(res_tree.tag, 'user')
147
self.assertEqual(res_tree.get('id'), 'id2')
148
self.assertEqual(res_tree.get('name'), 'guy2')
149
self.assertEqual(res_tree.get('secret'), 'secret2')
150
self.assertEqual(res_tree.get('admin'), 'True')