101 |
101 |
self.maxDiff = None
|
102 |
102 |
images = [{'id': 1,
|
103 |
103 |
'name': 'image-1',
|
104 |
|
'status':'available',
|
|
104 |
'status': 'available',
|
105 |
105 |
'created_at': '2012-11-26 11:52:54',
|
106 |
106 |
'updated_at': '2012-12-26 11:52:54',
|
107 |
107 |
'owner': 'user1',
|
108 |
108 |
'deleted_at': '',
|
109 |
109 |
'is_snapshot': False,
|
110 |
|
'properties': {'foo':'bar'}},
|
|
110 |
'is_public': True,
|
|
111 |
'properties': {'foo': 'bar'}},
|
111 |
112 |
{'id': 2,
|
112 |
113 |
'name': 'image-2',
|
113 |
114 |
'status': 'deleted',
|
... | ... | |
116 |
117 |
'owner': 'user1',
|
117 |
118 |
'deleted_at': '2012-12-27 11:52:54',
|
118 |
119 |
'is_snapshot': False,
|
|
120 |
'is_public': True,
|
119 |
121 |
'properties': ''},
|
120 |
122 |
{'id': 3,
|
121 |
123 |
'name': 'image-3',
|
... | ... | |
125 |
127 |
'updated_at': '2012-12-26 11:52:54',
|
126 |
128 |
'owner': 'user1',
|
127 |
129 |
'is_snapshot': False,
|
|
130 |
'is_public': False,
|
128 |
131 |
'properties': ''}]
|
129 |
132 |
result_images = [
|
130 |
133 |
{'id': 1,
|
131 |
134 |
'name': 'image-1',
|
132 |
|
'status':'ACTIVE',
|
|
135 |
'status': 'ACTIVE',
|
133 |
136 |
'progress': 100,
|
134 |
137 |
'created': '2012-11-26T11:52:54+00:00',
|
135 |
138 |
'updated': '2012-12-26T11:52:54+00:00',
|
136 |
139 |
'user_id': 'user1',
|
137 |
140 |
'tenant_id': 'user1',
|
138 |
141 |
'is_snapshot': False,
|
139 |
|
'metadata': {'foo':'bar'}},
|
|
142 |
'public': True,
|
|
143 |
'metadata': {'foo': 'bar'}},
|
140 |
144 |
{'id': 2,
|
141 |
145 |
'name': 'image-2',
|
142 |
146 |
'status': 'DELETED',
|
... | ... | |
146 |
150 |
'created': '2012-11-26T11:52:54+00:00',
|
147 |
151 |
'updated': '2012-12-26T11:52:54+00:00',
|
148 |
152 |
'is_snapshot': False,
|
|
153 |
'public': True,
|
149 |
154 |
'metadata': {}},
|
150 |
155 |
{'id': 3,
|
151 |
156 |
'name': 'image-3',
|
... | ... | |
156 |
161 |
'created': '2012-11-26T11:52:54+00:00',
|
157 |
162 |
'updated': '2012-12-26T11:52:54+00:00',
|
158 |
163 |
'is_snapshot': False,
|
|
164 |
'public': False,
|
159 |
165 |
'metadata': {}}]
|
160 |
166 |
mimage().list_images.return_value = images
|
161 |
167 |
response = self.myget('images/detail', 'user')
|
... | ... | |
175 |
181 |
images = [
|
176 |
182 |
{'id': 1,
|
177 |
183 |
'name': 'image-1',
|
178 |
|
'status':'available',
|
|
184 |
'status': 'available',
|
179 |
185 |
'progress': 100,
|
180 |
186 |
'created_at': old_time.isoformat(),
|
181 |
187 |
'deleted_at': '',
|
182 |
188 |
'updated_at': old_time.isoformat(),
|
183 |
189 |
'owner': 'user1',
|
184 |
190 |
'is_snapshot': False,
|
|
191 |
'is_public': True,
|
185 |
192 |
'properties': ''},
|
186 |
193 |
{'id': 2,
|
187 |
194 |
'name': 'image-2',
|
... | ... | |
192 |
199 |
'updated_at': new_time.isoformat(),
|
193 |
200 |
'deleted_at': new_time.isoformat(),
|
194 |
201 |
'is_snapshot': False,
|
|
202 |
'is_public': False,
|
195 |
203 |
'properties': ''}]
|
196 |
204 |
mimage().list_images.return_value = images
|
197 |
205 |
response =\
|
... | ... | |
211 |
219 |
'deleted_at': '',
|
212 |
220 |
'owner': 'user1',
|
213 |
221 |
'is_snapshot': False,
|
|
222 |
'is_public': True,
|
214 |
223 |
'properties': {'foo': 'bar'}}
|
215 |
224 |
result_image = \
|
216 |
225 |
{'id': 42,
|
... | ... | |
222 |
231 |
'user_id': 'user1',
|
223 |
232 |
'tenant_id': 'user1',
|
224 |
233 |
'is_snapshot': False,
|
|
234 |
'public': True,
|
225 |
235 |
'metadata': {'foo': 'bar'}}
|
226 |
236 |
mimage.return_value.get_image.return_value = image
|
227 |
237 |
response = self.myget('images/42', 'user')
|
... | ... | |
232 |
242 |
|
233 |
243 |
@assert_backend_closed
|
234 |
244 |
def test_invalid_image(self, mimage):
|
235 |
|
mimage.return_value.get_image.side_effect = faults.ItemNotFound('Image not found')
|
|
245 |
mimage.return_value.get_image.side_effect = \
|
|
246 |
faults.ItemNotFound('Image not found')
|
236 |
247 |
response = self.myget('images/42', 'user')
|
237 |
248 |
self.assertItemNotFound(response)
|
238 |
249 |
|
... | ... | |
248 |
259 |
response = self.myget('nonexistent')
|
249 |
260 |
self.assertEqual(response.status_code, 400)
|
250 |
261 |
try:
|
251 |
|
error = json.loads(response.content)
|
|
262 |
json.loads(response.content)
|
252 |
263 |
except ValueError:
|
253 |
264 |
self.assertTrue(False)
|
254 |
265 |
|
... | ... | |
287 |
298 |
class ImageMetadataAPITest(ComputeAPITest):
|
288 |
299 |
def setUp(self):
|
289 |
300 |
self.image = {'id': 42,
|
290 |
|
'name': 'image-1',
|
291 |
|
'status': 'available',
|
292 |
|
'created_at': '2012-11-26 11:52:54',
|
293 |
|
'updated_at': '2012-12-26 11:52:54',
|
294 |
|
'deleted_at': '',
|
295 |
|
'properties': {'foo': 'bar', 'foo2': 'bar2'}}
|
|
301 |
'name': 'image-1',
|
|
302 |
'status': 'available',
|
|
303 |
'created_at': '2012-11-26 11:52:54',
|
|
304 |
'updated_at': '2012-12-26 11:52:54',
|
|
305 |
'deleted_at': '',
|
|
306 |
'properties': {'foo': 'bar', 'foo2': 'bar2'}}
|
296 |
307 |
self.result_image = \
|
297 |
|
{'id': 42,
|
298 |
|
'name': 'image-1',
|
299 |
|
'status': 'ACTIVE',
|
300 |
|
'progress': 100,
|
301 |
|
'created': '2012-11-26T11:52:54+00:00',
|
302 |
|
'updated': '2012-12-26T11:52:54+00:00',
|
303 |
|
'metadata': {'foo': 'bar'}}
|
|
308 |
{'id': 42,
|
|
309 |
'name': 'image-1',
|
|
310 |
'status': 'ACTIVE',
|
|
311 |
'progress': 100,
|
|
312 |
'created': '2012-11-26T11:52:54+00:00',
|
|
313 |
'updated': '2012-12-26T11:52:54+00:00',
|
|
314 |
'metadata': {'foo': 'bar'}}
|
304 |
315 |
super(ImageMetadataAPITest, self).setUp()
|
305 |
316 |
|
306 |
317 |
@assert_backend_closed
|
... | ... | |
329 |
340 |
backend.return_value.get_image.return_value = self.image
|
330 |
341 |
response = self.mydelete('images/42/metadata/foo', 'user')
|
331 |
342 |
self.assertEqual(response.status_code, 204)
|
332 |
|
backend.return_value.update_metadata.assert_called_once_with('42', {'properties': {'foo2':
|
333 |
|
'bar2'}})
|
|
343 |
backend.return_value.update_metadata\
|
|
344 |
.assert_called_once_with('42', {'properties': {'foo2': 'bar2'}})
|
334 |
345 |
|
335 |
346 |
@assert_backend_closed
|
336 |
347 |
def test_create_metadata_item(self, backend):
|
... | ... | |
364 |
375 |
backend.return_value.get_image.return_value = self.image
|
365 |
376 |
request = {'met': {'foo3': 'bar3', 'foo4': 'bar4'}}
|
366 |
377 |
response = self.myput('images/42/metadata/foo3', 'user',
|
367 |
|
json.dumps(request), 'json')
|
|
378 |
json.dumps(request), 'json')
|
368 |
379 |
self.assertBadRequest(response)
|
369 |
380 |
|
370 |
381 |
@assert_backend_closed
|