~ubuntu-branches/ubuntu/quantal/nova/quantal-proposed

« back to all changes in this revision

Viewing changes to nova/tests/api/openstack/compute/contrib/test_users.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-08-16 14:04:11 UTC
  • mto: This revision was merged to the branch mainline in revision 84.
  • Revision ID: package-import@ubuntu.com-20120816140411-0mr4n241wmk30t9l
Tags: upstream-2012.2~f3
ImportĀ upstreamĀ versionĀ 2012.2~f3

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright 2010 OpenStack LLC.
2
 
# All Rights Reserved.
3
 
#
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
7
 
#
8
 
#         http://www.apache.org/licenses/LICENSE-2.0
9
 
#
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
14
 
#    under the License.
15
 
 
16
 
from lxml import etree
17
 
 
18
 
from nova.api.openstack.compute.contrib import users
19
 
import nova.auth.manager as auth_manager
20
 
from nova import test
21
 
from nova.tests.api.openstack import fakes
22
 
from nova import utils
23
 
 
24
 
 
25
 
def fake_init(self):
26
 
    self.manager = fakes.FakeAuthManager()
27
 
 
28
 
 
29
 
class UsersTest(test.TestCase):
30
 
    def setUp(self):
31
 
        super(UsersTest, self).setUp()
32
 
        self.flags(verbose=True)
33
 
        self.stubs.Set(users.Controller, '__init__',
34
 
                       fake_init)
35
 
        fakes.FakeAuthManager.clear_fakes()
36
 
        fakes.FakeAuthManager.projects = dict(testacct=auth_manager.Project(
37
 
                                                               'testacct',
38
 
                                                               'testacct',
39
 
                                                               'id1',
40
 
                                                               'test',
41
 
                                                               []))
42
 
        fakes.FakeAuthDatabase.data = {}
43
 
        fakes.stub_out_networking(self.stubs)
44
 
        fakes.stub_out_rate_limiting(self.stubs)
45
 
 
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))
51
 
 
52
 
        self.controller = users.Controller()
53
 
 
54
 
    def test_get_user_list(self):
55
 
        req = fakes.HTTPRequest.blank('/v2/fake/users')
56
 
        res_dict = self.controller.index(req)
57
 
 
58
 
        self.assertEqual(len(res_dict['users']), 2)
59
 
 
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')
63
 
 
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)
68
 
 
69
 
    def test_user_delete(self):
70
 
        req = fakes.HTTPRequest.blank('/v2/fake/users/id1')
71
 
        self.controller.delete(req, 'id1')
72
 
 
73
 
        self.assertTrue('id1' not in [u.id for u in
74
 
                        fakes.FakeAuthManager.auth_data])
75
 
 
76
 
    def test_user_create(self):
77
 
        secret = utils.generate_password()
78
 
        body = dict(user=dict(name='test_guy',
79
 
                              access='acc3',
80
 
                              secret=secret,
81
 
                              admin=True))
82
 
        req = fakes.HTTPRequest.blank('/v2/fake/users')
83
 
        res_dict = self.controller.create(req, body)
84
 
 
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')
88
 
 
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)
96
 
 
97
 
    def test_user_update(self):
98
 
        new_secret = utils.generate_password()
99
 
        body = dict(user=dict(name='guy2',
100
 
                              access='acc2',
101
 
                              secret=new_secret))
102
 
 
103
 
        req = fakes.HTTPRequest.blank('/v2/fake/users/id2')
104
 
        res_dict = self.controller.update(req, 'id2', body)
105
 
 
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)
111
 
 
112
 
 
113
 
class TestUsersXMLSerializer(test.TestCase):
114
 
 
115
 
    def test_index(self):
116
 
        serializer = users.UsersTemplate()
117
 
        fixture = {'users': [{'id': 'id1',
118
 
                              'name': 'guy1',
119
 
                              'secret': 'secret1',
120
 
                              'admin': False},
121
 
                             {'id': 'id2',
122
 
                              'name': 'guy2',
123
 
                              'secret': 'secret2',
124
 
                              'admin': True}]}
125
 
 
126
 
        output = serializer.serialize(fixture)
127
 
        res_tree = etree.XML(output)
128
 
 
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')
135
 
 
136
 
    def test_show(self):
137
 
        serializer = users.UserTemplate()
138
 
        fixture = {'user': {'id': 'id2',
139
 
                            'name': 'guy2',
140
 
                            'secret': 'secret2',
141
 
                            'admin': True}}
142
 
 
143
 
        output = serializer.serialize(fixture)
144
 
        res_tree = etree.XML(output)
145
 
 
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')