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

« back to all changes in this revision

Viewing changes to nova/tests/api/openstack/volume/test_volumes.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:
19
19
import webob
20
20
 
21
21
from nova.api.openstack.volume import volumes
 
22
from nova import db
 
23
from nova import exception
22
24
from nova import flags
23
25
from nova.openstack.common import timeutils
24
26
from nova import test
34
36
        super(VolumeApiTest, self).setUp()
35
37
        self.controller = volumes.VolumeController()
36
38
 
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)
40
44
 
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)
43
47
 
44
 
        vol = {"size": 100,
 
48
        vol = {"size": size,
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,
61
65
                               'metadata': {},
62
66
                               'id': '1',
63
 
                               'created_at': datetime.datetime(1, 1, 1,
64
 
                                                              1, 1, 1),
 
67
                               'created_at': datetime.datetime(1999, 1, 1,
 
68
                                                               1, 1, 1),
65
69
                               'size': 100}}
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)
 
73
 
 
74
    def test_volume_create_int_size(self):
 
75
        self._do_test_volume_create(100)
 
76
 
 
77
    def test_volume_create_str_size(self):
 
78
        self._do_test_volume_create('100')
 
79
 
 
80
    def test_volume_creation_fails_with_bad_size(self):
 
81
        vol = {"size": '',
 
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,
 
89
                          req,
 
90
                          body)
67
91
 
68
92
    def test_volume_create_no_body(self):
69
93
        body = {}
74
98
                          body)
75
99
 
76
100
    def test_volume_list(self):
 
101
        self.stubs.Set(volume_api.API, 'get_all',
 
102
                     fakes.stub_volume_get_all_by_project)
 
103
 
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,
89
116
                                 'metadata': {},
90
117
                                 'id': '1',
91
 
                                 'created_at': datetime.datetime(1, 1, 1,
92
 
                                                                1, 1, 1),
 
118
                                 'created_at': datetime.datetime(1999, 1, 1,
 
119
                                                                 1, 1, 1),
93
120
                                 'size': 1}]}
94
121
        self.maxDiff = None
95
122
        self.assertEqual(res_dict, expected)
96
123
 
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)
 
127
 
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,
110
140
                                 'metadata': {},
111
141
                                 'id': '1',
112
 
                                 'created_at': datetime.datetime(1, 1, 1,
113
 
                                                                1, 1, 1),
 
142
                                 'created_at': datetime.datetime(1999, 1, 1,
 
143
                                                                 1, 1, 1),
114
144
                                 'size': 1}]}
115
145
        self.assertEqual(res_dict, expected)
116
146
 
129
159
                               'snapshot_id': None,
130
160
                               'metadata': {},
131
161
                               'id': '1',
132
 
                               'created_at': datetime.datetime(1, 1, 1,
133
 
                                                              1, 1, 1),
 
162
                               'created_at': datetime.datetime(1999, 1, 1,
 
163
                                                               1, 1, 1),
134
164
                               'size': 1}}
135
165
        self.assertEqual(res_dict, expected)
136
166
 
151
181
                               'snapshot_id': None,
152
182
                               'metadata': {},
153
183
                               'id': '1',
154
 
                               'created_at': datetime.datetime(1, 1, 1,
155
 
                                                              1, 1, 1),
 
184
                               'created_at': datetime.datetime(1999, 1, 1,
 
185
                                                               1, 1, 1),
156
186
                               'size': 1}}
157
187
        self.assertEqual(res_dict, expected)
158
188
 
179
209
                          req,
180
210
                          1)
181
211
 
 
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)
 
216
 
 
217
        self.assertTrue('volumes' in res)
 
218
        self.assertEqual(1, len(res['volumes']))
 
219
 
 
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']))
 
226
 
 
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']))
 
232
 
 
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']))
 
238
 
182
239
 
183
240
class VolumeSerializerTest(test.TestCase):
184
241
    def _verify_volume_attachment(self, attach, tree):