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__',
48
self.stubs.Set(nova.api.openstack.users.Controller, '_check_admin',
47
self.stubs.Set(users.Controller, '_check_admin',
50
fakes.FakeAuthManager.auth_data = {}
49
fakes.FakeAuthManager.clear_fakes()
51
50
fakes.FakeAuthManager.projects = dict(testacct=Project('testacct',
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',
66
fakemgr.add_user('acc2', User('guy2', 'guy2', 'acc2',
63
fakemgr.add_user(User('id1', 'guy1', 'acc1', 'secret1', False))
64
fakemgr.add_user(User('id2', 'guy2', 'acc2', 'secret2', True))
69
66
def tearDown(self):
70
67
self.stubs.UnsetAll()
80
77
self.assertEqual(len(res_dict['users']), 2)
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)
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)
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)
96
self.assertEqual(res_dict['user']['id'], 'id1')
97
self.assertEqual(res.status_int, 200)
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)
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)
101
113
def test_user_create(self):
114
secret = utils.generate_password()
102
115
body = dict(user=dict(name='test_guy',
104
secret='invasionIsInNormandy',
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)
114
127
self.assertEqual(res.status_int, 200)
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')
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)
124
141
def test_user_update(self):
142
new_secret = utils.generate_password()
125
143
body = dict(user=dict(name='guy2',
127
secret='invasionIsInNormandy'))
128
req = webob.Request.blank('/v1.0/users/guy2')
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)
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)