diff options
Diffstat (limited to 'openstackclient/tests/image/v1/test_image.py')
| -rw-r--r-- | openstackclient/tests/image/v1/test_image.py | 701 |
1 files changed, 0 insertions, 701 deletions
diff --git a/openstackclient/tests/image/v1/test_image.py b/openstackclient/tests/image/v1/test_image.py deleted file mode 100644 index cf08d138..00000000 --- a/openstackclient/tests/image/v1/test_image.py +++ /dev/null @@ -1,701 +0,0 @@ -# Copyright 2013 Nebula Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -# - -import copy -import mock - -from osc_lib import exceptions - -from openstackclient.image.v1 import image -from openstackclient.tests import fakes -from openstackclient.tests.image.v1 import fakes as image_fakes - - -class TestImage(image_fakes.TestImagev1): - - def setUp(self): - super(TestImage, self).setUp() - - # Get a shortcut to the ServerManager Mock - self.images_mock = self.app.client_manager.image.images - self.images_mock.reset_mock() - - -class TestImageCreate(TestImage): - - def setUp(self): - super(TestImageCreate, self).setUp() - - self.images_mock.create.return_value = fakes.FakeResource( - None, - copy.deepcopy(image_fakes.IMAGE), - loaded=True, - ) - # This is the return value for utils.find_resource() - self.images_mock.get.return_value = fakes.FakeResource( - None, - copy.deepcopy(image_fakes.IMAGE), - loaded=True, - ) - self.images_mock.update.return_value = fakes.FakeResource( - None, - copy.deepcopy(image_fakes.IMAGE), - loaded=True, - ) - - # Get the command object to test - self.cmd = image.CreateImage(self.app, None) - - def test_image_reserve_no_options(self): - mock_exception = { - 'find.side_effect': exceptions.CommandError('x'), - 'get.side_effect': exceptions.CommandError('x'), - } - self.images_mock.configure_mock(**mock_exception) - arglist = [ - image_fakes.image_name, - ] - verifylist = [ - ('container_format', image.DEFAULT_CONTAINER_FORMAT), - ('disk_format', image.DEFAULT_DISK_FORMAT), - ('name', image_fakes.image_name), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # In base command class ShowOne in cliff, abstract method take_action() - # returns a two-part tuple with a tuple of column names and a tuple of - # data to be shown. - columns, data = self.cmd.take_action(parsed_args) - - # ImageManager.create(name=, **) - self.images_mock.create.assert_called_with( - name=image_fakes.image_name, - container_format=image.DEFAULT_CONTAINER_FORMAT, - disk_format=image.DEFAULT_DISK_FORMAT, - data=mock.ANY, - ) - - # Verify update() was not called, if it was show the args - self.assertEqual(self.images_mock.update.call_args_list, []) - - self.assertEqual(image_fakes.IMAGE_columns, columns) - self.assertEqual(image_fakes.IMAGE_data, data) - - def test_image_reserve_options(self): - mock_exception = { - 'find.side_effect': exceptions.CommandError('x'), - 'get.side_effect': exceptions.CommandError('x'), - } - self.images_mock.configure_mock(**mock_exception) - arglist = [ - '--container-format', 'ovf', - '--disk-format', 'fs', - '--min-disk', '10', - '--min-ram', '4', - '--protected', - '--private', - '--project', 'q', - image_fakes.image_name, - ] - verifylist = [ - ('container_format', 'ovf'), - ('disk_format', 'fs'), - ('min_disk', 10), - ('min_ram', 4), - ('protected', True), - ('unprotected', False), - ('public', False), - ('private', True), - ('project', 'q'), - ('name', image_fakes.image_name), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # In base command class ShowOne in cliff, abstract method take_action() - # returns a two-part tuple with a tuple of column names and a tuple of - # data to be shown. - columns, data = self.cmd.take_action(parsed_args) - - # ImageManager.create(name=, **) - self.images_mock.create.assert_called_with( - name=image_fakes.image_name, - container_format='ovf', - disk_format='fs', - min_disk=10, - min_ram=4, - protected=True, - is_public=False, - owner='q', - data=mock.ANY, - ) - - # Verify update() was not called, if it was show the args - self.assertEqual(self.images_mock.update.call_args_list, []) - - self.assertEqual(image_fakes.IMAGE_columns, columns) - self.assertEqual(image_fakes.IMAGE_data, data) - - @mock.patch('openstackclient.image.v1.image.io.open', name='Open') - def test_image_create_file(self, mock_open): - mock_file = mock.MagicMock(name='File') - mock_open.return_value = mock_file - mock_open.read.return_value = image_fakes.image_data - mock_exception = { - 'find.side_effect': exceptions.CommandError('x'), - 'get.side_effect': exceptions.CommandError('x'), - } - self.images_mock.configure_mock(**mock_exception) - - arglist = [ - '--file', 'filer', - '--unprotected', - '--public', - '--property', 'Alpha=1', - '--property', 'Beta=2', - image_fakes.image_name, - ] - verifylist = [ - ('file', 'filer'), - ('protected', False), - ('unprotected', True), - ('public', True), - ('private', False), - ('properties', {'Alpha': '1', 'Beta': '2'}), - ('name', image_fakes.image_name), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # In base command class ShowOne in cliff, abstract method take_action() - # returns a two-part tuple with a tuple of column names and a tuple of - # data to be shown. - columns, data = self.cmd.take_action(parsed_args) - - # Ensure input file is opened - mock_open.assert_called_with('filer', 'rb') - - # Ensure the input file is closed - mock_file.close.assert_called_with() - - # ImageManager.get(name) not to be called since update action exists - self.images_mock.get.assert_not_called() - - # ImageManager.create(name=, **) - self.images_mock.create.assert_called_with( - name=image_fakes.image_name, - container_format=image.DEFAULT_CONTAINER_FORMAT, - disk_format=image.DEFAULT_DISK_FORMAT, - protected=False, - is_public=True, - properties={ - 'Alpha': '1', - 'Beta': '2', - }, - data=mock_file, - ) - - # Verify update() was not called, if it was show the args - self.assertEqual(self.images_mock.update.call_args_list, []) - - self.assertEqual(image_fakes.IMAGE_columns, columns) - self.assertEqual(image_fakes.IMAGE_data, data) - - -class TestImageDelete(TestImage): - - def setUp(self): - super(TestImageDelete, self).setUp() - - # This is the return value for utils.find_resource() - self.images_mock.get.return_value = fakes.FakeResource( - None, - copy.deepcopy(image_fakes.IMAGE), - loaded=True, - ) - self.images_mock.delete.return_value = None - - # Get the command object to test - self.cmd = image.DeleteImage(self.app, None) - - def test_image_delete_no_options(self): - arglist = [ - image_fakes.image_id, - ] - verifylist = [ - ('images', [image_fakes.image_id]), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - result = self.cmd.take_action(parsed_args) - - self.images_mock.delete.assert_called_with(image_fakes.image_id) - self.assertIsNone(result) - - -class TestImageList(TestImage): - - columns = ( - 'ID', - 'Name', - 'Status', - ) - datalist = ( - ( - image_fakes.image_id, - image_fakes.image_name, - '', - ), - ) - - def setUp(self): - super(TestImageList, self).setUp() - - self.api_mock = mock.Mock() - self.api_mock.image_list.side_effect = [ - [copy.deepcopy(image_fakes.IMAGE)], [], - ] - self.app.client_manager.image.api = self.api_mock - - # Get the command object to test - self.cmd = image.ListImage(self.app, None) - - def test_image_list_no_options(self): - arglist = [] - verifylist = [ - ('public', False), - ('private', False), - ('long', False), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # In base command class Lister in cliff, abstract method take_action() - # returns a tuple containing the column names and an iterable - # containing the data to be listed. - columns, data = self.cmd.take_action(parsed_args) - self.api_mock.image_list.assert_called_with( - detailed=True, - marker=image_fakes.image_id, - ) - - self.assertEqual(self.columns, columns) - self.assertEqual(self.datalist, tuple(data)) - - def test_image_list_public_option(self): - arglist = [ - '--public', - ] - verifylist = [ - ('public', True), - ('private', False), - ('long', False), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # In base command class Lister in cliff, abstract method take_action() - # returns a tuple containing the column names and an iterable - # containing the data to be listed. - columns, data = self.cmd.take_action(parsed_args) - self.api_mock.image_list.assert_called_with( - detailed=True, - public=True, - marker=image_fakes.image_id, - ) - - self.assertEqual(self.columns, columns) - self.assertEqual(self.datalist, tuple(data)) - - def test_image_list_private_option(self): - arglist = [ - '--private', - ] - verifylist = [ - ('public', False), - ('private', True), - ('long', False), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # In base command class Lister in cliff, abstract method take_action() - # returns a tuple containing the column names and an iterable - # containing the data to be listed. - columns, data = self.cmd.take_action(parsed_args) - self.api_mock.image_list.assert_called_with( - detailed=True, - private=True, - marker=image_fakes.image_id, - ) - - self.assertEqual(self.columns, columns) - self.assertEqual(self.datalist, tuple(data)) - - def test_image_list_long_option(self): - arglist = [ - '--long', - ] - verifylist = [ - ('long', True), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # In base command class Lister in cliff, abstract method take_action() - # returns a tuple containing the column names and an iterable - # containing the data to be listed. - columns, data = self.cmd.take_action(parsed_args) - self.api_mock.image_list.assert_called_with( - detailed=True, - marker=image_fakes.image_id, - ) - - collist = ( - 'ID', - 'Name', - 'Disk Format', - 'Container Format', - 'Size', - 'Checksum', - 'Status', - 'Visibility', - 'Protected', - 'Project', - 'Properties', - ) - - self.assertEqual(collist, columns) - datalist = (( - image_fakes.image_id, - image_fakes.image_name, - '', - '', - '', - '', - '', - 'public', - False, - image_fakes.image_owner, - "Alpha='a', Beta='b', Gamma='g'", - ), ) - self.assertEqual(datalist, tuple(data)) - - @mock.patch('openstackclient.api.utils.simple_filter') - def test_image_list_property_option(self, sf_mock): - sf_mock.side_effect = [ - [copy.deepcopy(image_fakes.IMAGE)], [], - ] - - arglist = [ - '--property', 'a=1', - ] - verifylist = [ - ('property', {'a': '1'}), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # In base command class Lister in cliff, abstract method take_action() - # returns a tuple containing the column names and an iterable - # containing the data to be listed. - columns, data = self.cmd.take_action(parsed_args) - self.api_mock.image_list.assert_called_with( - detailed=True, - marker=image_fakes.image_id, - ) - sf_mock.assert_called_with( - [image_fakes.IMAGE], - attr='a', - value='1', - property_field='properties', - ) - - self.assertEqual(self.columns, columns) - self.assertEqual(self.datalist, tuple(data)) - - @mock.patch('osc_lib.utils.sort_items') - def test_image_list_sort_option(self, si_mock): - si_mock.side_effect = [ - [copy.deepcopy(image_fakes.IMAGE)], [], - ] - - arglist = ['--sort', 'name:asc'] - verifylist = [('sort', 'name:asc')] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # In base command class Lister in cliff, abstract method take_action() - # returns a tuple containing the column names and an iterable - # containing the data to be listed. - columns, data = self.cmd.take_action(parsed_args) - self.api_mock.image_list.assert_called_with( - detailed=True, - marker=image_fakes.image_id, - ) - si_mock.assert_called_with( - [image_fakes.IMAGE], - 'name:asc' - ) - - self.assertEqual(self.columns, columns) - self.assertEqual(self.datalist, tuple(data)) - - -class TestImageSet(TestImage): - - def setUp(self): - super(TestImageSet, self).setUp() - - # This is the return value for utils.find_resource() - self.images_mock.get.return_value = fakes.FakeResource( - None, - copy.deepcopy(image_fakes.IMAGE), - loaded=True, - ) - self.images_mock.update.return_value = fakes.FakeResource( - None, - copy.deepcopy(image_fakes.IMAGE), - loaded=True, - ) - - # Get the command object to test - self.cmd = image.SetImage(self.app, None) - - def test_image_set_no_options(self): - arglist = [ - image_fakes.image_name, - ] - verifylist = [ - ('image', image_fakes.image_name), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - result = self.cmd.take_action(parsed_args) - - self.images_mock.update.assert_called_with(image_fakes.image_id, - **{}) - self.assertIsNone(result) - - def test_image_set_options(self): - arglist = [ - '--name', 'new-name', - '--min-disk', '2', - '--min-ram', '4', - '--container-format', 'ovf', - '--disk-format', 'vmdk', - '--size', '35165824', - '--project', 'new-owner', - image_fakes.image_name, - ] - verifylist = [ - ('name', 'new-name'), - ('min_disk', 2), - ('min_ram', 4), - ('container_format', 'ovf'), - ('disk_format', 'vmdk'), - ('size', 35165824), - ('project', 'new-owner'), - ('image', image_fakes.image_name), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - result = self.cmd.take_action(parsed_args) - - kwargs = { - 'name': 'new-name', - 'owner': 'new-owner', - 'min_disk': 2, - 'min_ram': 4, - 'container_format': 'ovf', - 'disk_format': 'vmdk', - 'size': 35165824 - } - # ImageManager.update(image, **kwargs) - self.images_mock.update.assert_called_with( - image_fakes.image_id, - **kwargs - ) - self.assertIsNone(result) - - def test_image_set_bools1(self): - arglist = [ - '--protected', - '--private', - image_fakes.image_name, - ] - verifylist = [ - ('protected', True), - ('unprotected', False), - ('public', False), - ('private', True), - ('image', image_fakes.image_name), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - result = self.cmd.take_action(parsed_args) - - kwargs = { - 'protected': True, - 'is_public': False, - } - # ImageManager.update(image, **kwargs) - self.images_mock.update.assert_called_with( - image_fakes.image_id, - **kwargs - ) - self.assertIsNone(result) - - def test_image_set_bools2(self): - arglist = [ - '--unprotected', - '--public', - image_fakes.image_name, - ] - verifylist = [ - ('protected', False), - ('unprotected', True), - ('public', True), - ('private', False), - ('image', image_fakes.image_name), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - result = self.cmd.take_action(parsed_args) - - kwargs = { - 'protected': False, - 'is_public': True, - } - # ImageManager.update(image, **kwargs) - self.images_mock.update.assert_called_with( - image_fakes.image_id, - **kwargs - ) - self.assertIsNone(result) - - def test_image_set_properties(self): - arglist = [ - '--property', 'Alpha=1', - '--property', 'Beta=2', - image_fakes.image_name, - ] - verifylist = [ - ('properties', {'Alpha': '1', 'Beta': '2'}), - ('image', image_fakes.image_name), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - result = self.cmd.take_action(parsed_args) - - kwargs = { - 'properties': { - 'Alpha': '1', - 'Beta': '2', - 'Gamma': 'g', - }, - } - # ImageManager.update(image, **kwargs) - self.images_mock.update.assert_called_with( - image_fakes.image_id, - **kwargs - ) - self.assertIsNone(result) - - def test_image_update_volume(self): - # Set up VolumeManager Mock - volumes_mock = self.app.client_manager.volume.volumes - volumes_mock.reset_mock() - volumes_mock.get.return_value = fakes.FakeResource( - None, - copy.deepcopy({'id': 'vol1', 'name': 'volly'}), - loaded=True, - ) - response = { - "id": 'volume_id', - "updated_at": 'updated_at', - "status": 'uploading', - "display_description": 'desc', - "size": 'size', - "volume_type": 'volume_type', - "container_format": image.DEFAULT_CONTAINER_FORMAT, - "disk_format": image.DEFAULT_DISK_FORMAT, - "image": image_fakes.image_name, - } - full_response = {"os-volume_upload_image": response} - volumes_mock.upload_to_image.return_value = (201, full_response) - - arglist = [ - '--volume', 'volly', - '--name', 'updated_image', - image_fakes.image_name, - ] - verifylist = [ - ('private', False), - ('protected', False), - ('public', False), - ('unprotected', False), - ('volume', 'volly'), - ('force', False), - ('name', 'updated_image'), - ('image', image_fakes.image_name), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - result = self.cmd.take_action(parsed_args) - - # VolumeManager.upload_to_image(volume, force, image_name, - # container_format, disk_format) - volumes_mock.upload_to_image.assert_called_with( - 'vol1', - False, - image_fakes.image_name, - '', - '', - ) - # ImageManager.update(image_id, remove_props=, **) - self.images_mock.update.assert_called_with( - image_fakes.image_id, - name='updated_image', - volume='volly', - ) - self.assertIsNone(result) - - -class TestImageShow(TestImage): - - def setUp(self): - super(TestImageShow, self).setUp() - - self.images_mock.get.return_value = fakes.FakeResource( - None, - copy.deepcopy(image_fakes.IMAGE), - loaded=True, - ) - - # Get the command object to test - self.cmd = image.ShowImage(self.app, None) - - def test_image_show(self): - arglist = [ - image_fakes.image_id, - ] - verifylist = [ - ('image', image_fakes.image_id), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - # In base command class ShowOne in cliff, abstract method take_action() - # returns a two-part tuple with a tuple of column names and a tuple of - # data to be shown. - columns, data = self.cmd.take_action(parsed_args) - self.images_mock.get.assert_called_with( - image_fakes.image_id, - ) - - self.assertEqual(image_fakes.IMAGE_columns, columns) - self.assertEqual(image_fakes.IMAGE_data, data) |
