|
21 | 21 | from django import http
|
22 | 22 | from django.core.urlresolvers import reverse
|
23 | 23 | from mox import IsA, IgnoreArg
|
| 24 | +from copy import deepcopy |
24 | 25 |
|
25 | 26 | from horizon import api
|
26 | 27 | from horizon import test
|
@@ -308,6 +309,47 @@ def test_instance_vnc_exception(self):
|
308 | 309 | res = self.client.get(url)
|
309 | 310 | self.assertRedirectsNoFollow(res, INDEX_URL)
|
310 | 311 |
|
| 312 | + def test_create_instance_snapshot(self): |
| 313 | + server = self.servers.first() |
| 314 | + snapshot_server = deepcopy(server) |
| 315 | + setattr(snapshot_server, 'OS-EXT-STS:task_state', |
| 316 | + "IMAGE_SNAPSHOT") |
| 317 | + self.mox.StubOutWithMock(api, 'server_get') |
| 318 | + self.mox.StubOutWithMock(api, 'snapshot_create') |
| 319 | + self.mox.StubOutWithMock(api, 'snapshot_list_detailed') |
| 320 | + self.mox.StubOutWithMock(api, 'image_list_detailed') |
| 321 | + self.mox.StubOutWithMock(api, 'volume_snapshot_list') |
| 322 | + self.mox.StubOutWithMock(api, 'server_list') |
| 323 | + self.mox.StubOutWithMock(api, 'flavor_list') |
| 324 | + self.mox.StubOutWithMock(api, 'server_delete') |
| 325 | + self.mox.StubOutWithMock(api, 'volume_list') |
| 326 | + api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server) |
| 327 | + api.snapshot_create(IsA(http.HttpRequest), |
| 328 | + server.id, |
| 329 | + "snapshot1") |
| 330 | + api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server) |
| 331 | + api.snapshot_list_detailed(IsA(http.HttpRequest)).AndReturn([]) |
| 332 | + api.image_list_detailed(IsA(http.HttpRequest)).AndReturn([]) |
| 333 | + api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn([]) |
| 334 | + |
| 335 | + api.volume_list(IsA(http.HttpRequest)).AndReturn(self.volumes.list()) |
| 336 | + api.server_list(IsA(http.HttpRequest)).AndReturn([snapshot_server]) |
| 337 | + api.flavor_list(IgnoreArg()).AndReturn(self.flavors.list()) |
| 338 | + self.mox.ReplayAll() |
| 339 | + |
| 340 | + formData = {'instance_id': server.id, |
| 341 | + 'method': 'CreateSnapshot', |
| 342 | + 'tenant_id': server.tenant_id, |
| 343 | + 'name': 'snapshot1'} |
| 344 | + url = reverse('horizon:nova:images_and_snapshots:snapshots:create', |
| 345 | + args=[server.id]) |
| 346 | + redir_url = reverse('horizon:nova:images_and_snapshots:index') |
| 347 | + res = self.client.post(url, formData) |
| 348 | + self.assertRedirects(res, redir_url) |
| 349 | + res = self.client.get(INDEX_URL) |
| 350 | + self.assertContains(res, "<td class=\"status_unknown\">" |
| 351 | + "Snapshotting</td>", 1) |
| 352 | + |
311 | 353 | def test_instance_update_get(self):
|
312 | 354 | server = self.servers.first()
|
313 | 355 |
|
|
0 commit comments