~ubuntu-branches/ubuntu/natty/nova/natty

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Chuck Short, Chuck Short, Soren Hansen
  • Date: 2011-03-31 11:25:10 UTC
  • mfrom: (1.1.14 upstream)
  • Revision ID: james.westby@ubuntu.com-20110331112510-j8imyjc43jpxbe5g
Tags: 2011.2~bzr925-0ubuntu1
[Chuck Short]
* New upstream release.

[Soren Hansen]
* Make the build fail if the test suite does. The test that used to
  fail on the buildd's has been complete rewritten. (LP: #712481)
* Specify that we need Sphinx > 1.0 to build.
* Remove refresh_bzr_branches target from debian/rules. It is not used
  anymore.
* Clean up after doc builds on debian/rules clean.
* Add a nova-ajax-console-proxy package.
* Add Recommends: ajaxterm to nova-compute, so that nova-ajax-console-
  proxy will have something to connect to.
* Stop depending on aoetools. iscsi is the default nowadays (and has
  been for a while).
* Move dependency on open-iscsi from nova-volume to nova-compute.
  They're client tools, so that's where they belong.
* Add a build-depends on python-suds.
* Add logrote config for nova-ajax-console-proxy.
* Add upstart job for nova-ajax-console-proxy.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
import stubout
19
19
import webob
20
20
 
21
 
import nova.api
22
 
import nova.api.openstack.auth
23
 
from nova import context
24
21
from nova import flags
25
22
from nova import test
 
23
from nova import utils
 
24
from nova.api.openstack import users
26
25
from nova.auth.manager import User, Project
27
26
from nova.tests.api.openstack import fakes
28
27
 
43
42
    def setUp(self):
44
43
        super(UsersTest, self).setUp()
45
44
        self.stubs = stubout.StubOutForTesting()
46
 
        self.stubs.Set(nova.api.openstack.users.Controller, '__init__',
 
45
        self.stubs.Set(users.Controller, '__init__',
47
46
                       fake_init)
48
 
        self.stubs.Set(nova.api.openstack.users.Controller, '_check_admin',
 
47
        self.stubs.Set(users.Controller, '_check_admin',
49
48
                       fake_admin_check)
50
 
        fakes.FakeAuthManager.auth_data = {}
 
49
        fakes.FakeAuthManager.clear_fakes()
51
50
        fakes.FakeAuthManager.projects = dict(testacct=Project('testacct',
52
51
                                                               'testacct',
53
 
                                                               'guy1',
 
52
                                                               'id1',
54
53
                                                               'test',
55
54
                                                               []))
56
55
        fakes.FakeAuthDatabase.data = {}
61
60
        self.allow_admin = FLAGS.allow_admin_api
62
61
        FLAGS.allow_admin_api = True
63
62
        fakemgr = fakes.FakeAuthManager()
64
 
        fakemgr.add_user('acc1', User('guy1', 'guy1', 'acc1',
65
 
                                      'fortytwo!', False))
66
 
        fakemgr.add_user('acc2', User('guy2', 'guy2', 'acc2',
67
 
                                      'swordfish', True))
 
63
        fakemgr.add_user(User('id1', 'guy1', 'acc1', 'secret1', False))
 
64
        fakemgr.add_user(User('id2', 'guy2', 'acc2', 'secret2', True))
68
65
 
69
66
    def tearDown(self):
70
67
        self.stubs.UnsetAll()
80
77
        self.assertEqual(len(res_dict['users']), 2)
81
78
 
82
79
    def test_get_user_by_id(self):
83
 
        req = webob.Request.blank('/v1.0/users/guy2')
 
80
        req = webob.Request.blank('/v1.0/users/id2')
84
81
        res = req.get_response(fakes.wsgi_app())
85
82
        res_dict = json.loads(res.body)
86
83
 
87
 
        self.assertEqual(res_dict['user']['id'], 'guy2')
 
84
        self.assertEqual(res_dict['user']['id'], 'id2')
88
85
        self.assertEqual(res_dict['user']['name'], 'guy2')
89
 
        self.assertEqual(res_dict['user']['secret'], 'swordfish')
 
86
        self.assertEqual(res_dict['user']['secret'], 'secret2')
90
87
        self.assertEqual(res_dict['user']['admin'], True)
91
88
        self.assertEqual(res.status_int, 200)
92
89
 
93
90
    def test_user_delete(self):
94
 
        req = webob.Request.blank('/v1.0/users/guy1')
 
91
        # Check the user exists
 
92
        req = webob.Request.blank('/v1.0/users/id1')
 
93
        res = req.get_response(fakes.wsgi_app())
 
94
        res_dict = json.loads(res.body)
 
95
 
 
96
        self.assertEqual(res_dict['user']['id'], 'id1')
 
97
        self.assertEqual(res.status_int, 200)
 
98
 
 
99
        # Delete the user
 
100
        req = webob.Request.blank('/v1.0/users/id1')
95
101
        req.method = 'DELETE'
96
102
        res = req.get_response(fakes.wsgi_app())
97
 
        self.assertTrue('guy1' not in [u.id for u in
98
 
                        fakes.FakeAuthManager.auth_data.values()])
 
103
        self.assertTrue('id1' not in [u.id for u in
 
104
                        fakes.FakeAuthManager.auth_data])
99
105
        self.assertEqual(res.status_int, 200)
100
106
 
 
107
        # Check the user is not returned (and returns 404)
 
108
        req = webob.Request.blank('/v1.0/users/id1')
 
109
        res = req.get_response(fakes.wsgi_app())
 
110
        res_dict = json.loads(res.body)
 
111
        self.assertEqual(res.status_int, 404)
 
112
 
101
113
    def test_user_create(self):
 
114
        secret = utils.generate_password()
102
115
        body = dict(user=dict(name='test_guy',
103
116
                              access='acc3',
104
 
                              secret='invasionIsInNormandy',
 
117
                              secret=secret,
105
118
                              admin=True))
106
119
        req = webob.Request.blank('/v1.0/users')
107
120
        req.headers["Content-Type"] = "application/json"
112
125
        res_dict = json.loads(res.body)
113
126
 
114
127
        self.assertEqual(res.status_int, 200)
 
128
 
 
129
        # NOTE(justinsb): This is a questionable assertion in general
 
130
        # fake sets id=name, but others might not...
115
131
        self.assertEqual(res_dict['user']['id'], 'test_guy')
 
132
 
116
133
        self.assertEqual(res_dict['user']['name'], 'test_guy')
117
134
        self.assertEqual(res_dict['user']['access'], 'acc3')
118
 
        self.assertEqual(res_dict['user']['secret'], 'invasionIsInNormandy')
 
135
        self.assertEqual(res_dict['user']['secret'], secret)
119
136
        self.assertEqual(res_dict['user']['admin'], True)
120
137
        self.assertTrue('test_guy' in [u.id for u in
121
 
                        fakes.FakeAuthManager.auth_data.values()])
122
 
        self.assertEqual(len(fakes.FakeAuthManager.auth_data.values()), 3)
 
138
                        fakes.FakeAuthManager.auth_data])
 
139
        self.assertEqual(len(fakes.FakeAuthManager.auth_data), 3)
123
140
 
124
141
    def test_user_update(self):
 
142
        new_secret = utils.generate_password()
125
143
        body = dict(user=dict(name='guy2',
126
144
                              access='acc2',
127
 
                              secret='invasionIsInNormandy'))
128
 
        req = webob.Request.blank('/v1.0/users/guy2')
 
145
                              secret=new_secret))
 
146
        req = webob.Request.blank('/v1.0/users/id2')
129
147
        req.headers["Content-Type"] = "application/json"
130
148
        req.method = 'PUT'
131
149
        req.body = json.dumps(body)
134
152
        res_dict = json.loads(res.body)
135
153
 
136
154
        self.assertEqual(res.status_int, 200)
137
 
        self.assertEqual(res_dict['user']['id'], 'guy2')
 
155
        self.assertEqual(res_dict['user']['id'], 'id2')
138
156
        self.assertEqual(res_dict['user']['name'], 'guy2')
139
157
        self.assertEqual(res_dict['user']['access'], 'acc2')
140
 
        self.assertEqual(res_dict['user']['secret'], 'invasionIsInNormandy')
 
158
        self.assertEqual(res_dict['user']['secret'], new_secret)
141
159
        self.assertEqual(res_dict['user']['admin'], True)