diff options
| author | Zuul <zuul@review.opendev.org> | 2021-03-05 20:15:22 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2021-03-05 20:15:22 +0000 |
| commit | f802c710835e2e9ac42964c7282bbb4e539b38c5 (patch) | |
| tree | 5481aa54f82e1eb80921ba2591bd0db1dc6d83b3 /glanceclient/tests | |
| parent | db512d319812542b9b007c1e70e56717f9ffabef (diff) | |
| parent | e0a35a1150a7afe1e28b8d9b59a9e41951276baa (diff) | |
| download | python-glanceclient-3.3.0.tar.gz | |
Merge "Get tasks associated with image"wallaby-em3.3.0
Diffstat (limited to 'glanceclient/tests')
| -rw-r--r-- | glanceclient/tests/unit/v2/base.py | 7 | ||||
| -rw-r--r-- | glanceclient/tests/unit/v2/test_images.py | 30 | ||||
| -rw-r--r-- | glanceclient/tests/unit/v2/test_shell_v2.py | 52 |
3 files changed, 89 insertions, 0 deletions
diff --git a/glanceclient/tests/unit/v2/base.py b/glanceclient/tests/unit/v2/base.py index d6f5cc5..694cd0f 100644 --- a/glanceclient/tests/unit/v2/base.py +++ b/glanceclient/tests/unit/v2/base.py @@ -38,6 +38,13 @@ class BaseController(testtools.TestCase): return resources + def get_associated_image_tasks(self, *args, **kwargs): + resource = self.controller.get_associated_image_tasks( + *args, **kwargs) + + self._assertRequestId(resource) + return resource + def get(self, *args, **kwargs): resource = self.controller.get(*args, **kwargs) diff --git a/glanceclient/tests/unit/v2/test_images.py b/glanceclient/tests/unit/v2/test_images.py index 55610d8..199d6ec 100644 --- a/glanceclient/tests/unit/v2/test_images.py +++ b/glanceclient/tests/unit/v2/test_images.py @@ -20,6 +20,7 @@ from unittest import mock import ddt +from glanceclient.common import utils as common_utils from glanceclient import exc from glanceclient.tests.unit.v2 import base from glanceclient.tests import utils @@ -674,6 +675,19 @@ data_fixtures = { ]}, ), }, + '/v2/images/3a4560a1-e585-443e-9b39-553b46ec92d1/tasks': { + 'GET': ( + {}, + {'tasks': [ + { + 'id': '6f99bf80-2ee6-47cf-acfe-1f1fabb7e810', + 'status': 'succeed', + 'message': 'Copied 44 MiB', + 'updated_at': '2021-03-01T18:28:26.000000' + } + ]}, + ), + }, } schema_fixtures = { @@ -715,6 +729,22 @@ class TestController(testtools.TestCase): self.controller = base.BaseController(self.api, self.schema_api, images.Controller) + def test_image_tasks_supported(self): + with mock.patch.object(common_utils, + 'has_version') as mock_has_version: + mock_has_version.return_value = True + image_tasks = self.controller.get_associated_image_tasks( + '3a4560a1-e585-443e-9b39-553b46ec92d1') + self.assertEqual(1, len(image_tasks['tasks'])) + + def test_image_tasks_not_supported(self): + with mock.patch.object(common_utils, + 'has_version') as mock_has_version: + mock_has_version.return_value = False + self.assertRaises(exc.HTTPNotImplemented, + self.controller.get_associated_image_tasks, + '3a4560a1-e585-443e-9b39-553b46ec92d1') + def test_list_images(self): images = self.controller.list() self.assertEqual('3a4560a1-e585-443e-9b39-553b46ec92d1', images[0].id) diff --git a/glanceclient/tests/unit/v2/test_shell_v2.py b/glanceclient/tests/unit/v2/test_shell_v2.py index 3f1d77a..c2aa58a 100644 --- a/glanceclient/tests/unit/v2/test_shell_v2.py +++ b/glanceclient/tests/unit/v2/test_shell_v2.py @@ -113,6 +113,7 @@ class ShellV2Test(testtools.TestCase): utils.print_list = mock.Mock() utils.print_dict = mock.Mock() utils.save_image = mock.Mock() + utils.print_dict_list = mock.Mock() def assert_exits_with_msg(self, func, func_args, err_msg=None): with mock.patch.object(utils, 'exit') as mocked_utils_exit: @@ -562,6 +563,57 @@ class ShellV2Test(testtools.TestCase): 'size': 1024}, max_column_width=120) + def _test_do_image_tasks(self, verbose=False, supported=True): + args = self._make_args({'id': 'pass', 'verbose': verbose}) + expected_columns = ["Message", "Status", "Updated at"] + expected_output = { + "tasks": [ + { + "image_id": "pass", + "id": "task_1", + "user_id": "user_1", + "request_id": "request_id_1", + "message": "fake_message", + "status": "status", + } + ] + } + + if verbose: + columns_to_prepend = ['Image Id', 'Task Id'] + columns_to_extend = ['User Id', 'Request Id', + 'Result', 'Owner', 'Input', 'Expires at'] + expected_columns = (columns_to_prepend + expected_columns + + columns_to_extend) + expected_output["tasks"][0]["Result"] = "Fake Result" + expected_output["tasks"][0]["Owner"] = "Fake Owner" + expected_output["tasks"][0]["Input"] = "Fake Input" + expected_output["tasks"][0]["Expires at"] = "Fake Expiry" + + with mock.patch.object(self.gc.images, + 'get_associated_image_tasks') as mocked_tasks: + if supported: + mocked_tasks.return_value = expected_output + else: + mocked_tasks.side_effect = exc.HTTPNotImplemented + test_shell.do_image_tasks(self.gc, args) + mocked_tasks.assert_called_once_with('pass') + if supported: + utils.print_dict_list.assert_called_once_with( + expected_output['tasks'], expected_columns) + + def test_do_image_tasks_without_verbose(self): + self._test_do_image_tasks() + + def test_do_image_tasks_with_verbose(self): + self._test_do_image_tasks(verbose=True) + + def test_do_image_tasks_unsupported(self): + with mock.patch('glanceclient.common.utils.exit') as mock_exit: + self._test_do_image_tasks(supported=False) + mock_exit.assert_called_once_with( + 'Server does not support image tasks API (v2.12)') + @mock.patch('sys.stdin', autospec=True) def test_do_image_create_no_user_props(self, mock_stdin): args = self._make_args({'name': 'IMG-01', 'disk_format': 'vhd', |
