|
15 | 15 |
|
16 | 16 | import copy |
17 | 17 |
|
| 18 | +from glanceclient.common import utils as glanceclient_utils |
18 | 19 | from glanceclient.v2 import schemas |
19 | 20 | import mock |
20 | 21 | from osc_lib import exceptions |
@@ -1505,3 +1506,53 @@ def test_image_unset_mixed_option(self): |
1505 | 1506 | self.image.id, 'test' |
1506 | 1507 | ) |
1507 | 1508 | self.assertIsNone(result) |
| 1509 | + |
| 1510 | + |
| 1511 | +class TestImageSave(TestImage): |
| 1512 | + |
| 1513 | + image = image_fakes.FakeImage.create_one_image({}) |
| 1514 | + |
| 1515 | + def setUp(self): |
| 1516 | + super(TestImageSave, self).setUp() |
| 1517 | + |
| 1518 | + # Generate a request id |
| 1519 | + self.resp = mock.MagicMock() |
| 1520 | + self.resp.headers['x-openstack-request-id'] = 'req_id' |
| 1521 | + |
| 1522 | + # Get the command object to test |
| 1523 | + self.cmd = image.SaveImage(self.app, None) |
| 1524 | + |
| 1525 | + def test_save_data(self): |
| 1526 | + req_id_proxy = glanceclient_utils.RequestIdProxy( |
| 1527 | + ['some_data', self.resp] |
| 1528 | + ) |
| 1529 | + self.images_mock.data.return_value = req_id_proxy |
| 1530 | + |
| 1531 | + arglist = ['--file', '/path/to/file', self.image.id] |
| 1532 | + |
| 1533 | + verifylist = [ |
| 1534 | + ('file', '/path/to/file'), |
| 1535 | + ('image', self.image.id) |
| 1536 | + ] |
| 1537 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 1538 | + |
| 1539 | + with mock.patch('glanceclient.common.utils.save_image') as mocked_save: |
| 1540 | + self.cmd.take_action(parsed_args) |
| 1541 | + mocked_save.assert_called_once_with(req_id_proxy, '/path/to/file') |
| 1542 | + |
| 1543 | + def test_save_no_data(self): |
| 1544 | + req_id_proxy = glanceclient_utils.RequestIdProxy( |
| 1545 | + [None, self.resp] |
| 1546 | + ) |
| 1547 | + self.images_mock.data.return_value = req_id_proxy |
| 1548 | + |
| 1549 | + arglist = ['--file', '/path/to/file', self.image.id] |
| 1550 | + |
| 1551 | + verifylist = [ |
| 1552 | + ('file', '/path/to/file'), |
| 1553 | + ('image', self.image.id) |
| 1554 | + ] |
| 1555 | + parsed_args = self.check_parser(self.cmd, arglist, verifylist) |
| 1556 | + |
| 1557 | + # Raise SystemExit if no data was provided. |
| 1558 | + self.assertRaises(SystemExit, self.cmd.take_action, parsed_args) |
0 commit comments