34
36
super(VolumeApiTest, self).setUp()
35
37
self.controller = volumes.VolumeController()
37
self.stubs.Set(volume_api.API, 'get_all', fakes.stub_volume_get_all)
39
self.stubs.Set(db, 'volume_get_all', fakes.stub_volume_get_all)
40
self.stubs.Set(db, 'volume_get_all_by_project',
41
fakes.stub_volume_get_all_by_project)
38
42
self.stubs.Set(volume_api.API, 'get', fakes.stub_volume_get)
39
43
self.stubs.Set(volume_api.API, 'delete', fakes.stub_volume_delete)
41
def test_volume_create(self):
45
def _do_test_volume_create(self, size):
42
46
self.stubs.Set(volume_api.API, "create", fakes.stub_volume_create)
45
49
"display_name": "Volume Test Name",
46
50
"display_description": "Volume Test Desc",
47
51
"availability_zone": "zone1:host1"}
48
52
body = {"volume": vol}
49
53
req = fakes.HTTPRequest.blank('/v1/volumes')
50
res_dict = self.controller.create(req, body)
54
res = self.controller.create(req, body)
51
55
expected = {'volume': {'status': 'fakestatus',
52
56
'display_description': 'Volume Test Desc',
53
57
'availability_zone': 'zone1:host1',
60
64
'snapshot_id': None,
63
'created_at': datetime.datetime(1, 1, 1,
67
'created_at': datetime.datetime(1999, 1, 1,
66
self.assertEqual(res_dict, expected)
70
self.assertEqual(res.obj, expected)
71
self.assertEqual(res.code, 200)
72
self.assertTrue('location' in res.headers)
74
def test_volume_create_int_size(self):
75
self._do_test_volume_create(100)
77
def test_volume_create_str_size(self):
78
self._do_test_volume_create('100')
80
def test_volume_creation_fails_with_bad_size(self):
82
"display_name": "Volume Test Name",
83
"display_description": "Volume Test Desc",
84
"availability_zone": "zone1:host1"}
85
body = {"volume": vol}
86
req = fakes.HTTPRequest.blank('/v1/volumes')
87
self.assertRaises(exception.InvalidInput,
88
self.controller.create,
68
92
def test_volume_create_no_body(self):
76
100
def test_volume_list(self):
101
self.stubs.Set(volume_api.API, 'get_all',
102
fakes.stub_volume_get_all_by_project)
77
104
req = fakes.HTTPRequest.blank('/v1/volumes')
78
105
res_dict = self.controller.index(req)
79
106
expected = {'volumes': [{'status': 'fakestatus',
88
115
'snapshot_id': None,
91
'created_at': datetime.datetime(1, 1, 1,
118
'created_at': datetime.datetime(1999, 1, 1,
94
121
self.maxDiff = None
95
122
self.assertEqual(res_dict, expected)
97
124
def test_volume_list_detail(self):
125
self.stubs.Set(volume_api.API, 'get_all',
126
fakes.stub_volume_get_all_by_project)
98
128
req = fakes.HTTPRequest.blank('/v1/volumes/detail')
99
129
res_dict = self.controller.index(req)
100
130
expected = {'volumes': [{'status': 'fakestatus',
109
139
'snapshot_id': None,
112
'created_at': datetime.datetime(1, 1, 1,
142
'created_at': datetime.datetime(1999, 1, 1,
115
145
self.assertEqual(res_dict, expected)
129
159
'snapshot_id': None,
132
'created_at': datetime.datetime(1, 1, 1,
162
'created_at': datetime.datetime(1999, 1, 1,
135
165
self.assertEqual(res_dict, expected)
151
181
'snapshot_id': None,
154
'created_at': datetime.datetime(1, 1, 1,
184
'created_at': datetime.datetime(1999, 1, 1,
157
187
self.assertEqual(res_dict, expected)
212
def test_admin_list_volumes_limited_to_project(self):
213
req = fakes.HTTPRequest.blank('/v2/fake/volumes',
214
use_admin_context=True)
215
res = self.controller.index(req)
217
self.assertTrue('volumes' in res)
218
self.assertEqual(1, len(res['volumes']))
220
def test_admin_list_volumes_all_tenants(self):
221
req = fakes.HTTPRequest.blank('/v2/fake/volumes?all_tenants=1',
222
use_admin_context=True)
223
res = self.controller.index(req)
224
self.assertTrue('volumes' in res)
225
self.assertEqual(3, len(res['volumes']))
227
def test_all_tenants_non_admin_gets_all_tenants(self):
228
req = fakes.HTTPRequest.blank('/v2/fake/volumes?all_tenants=1')
229
res = self.controller.index(req)
230
self.assertTrue('volumes' in res)
231
self.assertEqual(1, len(res['volumes']))
233
def test_non_admin_get_by_project(self):
234
req = fakes.HTTPRequest.blank('/v2/fake/volumes')
235
res = self.controller.index(req)
236
self.assertTrue('volumes' in res)
237
self.assertEqual(1, len(res['volumes']))
183
240
class VolumeSerializerTest(test.TestCase):
184
241
def _verify_volume_attachment(self, attach, tree):