Fix "volume unset" command pass normally when nothing specified

When nothing specified in "volume unset" command, there
will be an error message says that the "--properties"
option is required, it is unusual behaviour, this patch
fix it and also add unit test for it.
Also, this patch add unit test for "volume show" command
by the way.

Change-Id: I5b5d587670acf0af4262b8521292455bf9f60fe5
Partial-bug: #1588588
This commit is contained in:
Huanxuan Ao 2016-09-21 15:08:14 +08:00
parent 4a8b802d6b
commit bba5c9047f
2 changed files with 99 additions and 2 deletions

View File

@ -880,3 +880,102 @@ class TestVolumeSet(TestVolume):
self.cmd.take_action(parsed_args)
self.volumes_mock.set_bootable.assert_called_with(
self._volume.id, verifylist[index][0][1])
class TestVolumeShow(TestVolume):
columns = (
'attachments',
'availability_zone',
'bootable',
'created_at',
'display_description',
'display_name',
'id',
'properties',
'size',
'snapshot_id',
'status',
'type',
)
def setUp(self):
super(TestVolumeShow, self).setUp()
self._volume = volume_fakes.FakeVolume.create_one_volume()
self.datalist = (
self._volume.attachments,
self._volume.availability_zone,
self._volume.bootable,
self._volume.created_at,
self._volume.display_description,
self._volume.display_name,
self._volume.id,
utils.format_dict(self._volume.metadata),
self._volume.size,
self._volume.snapshot_id,
self._volume.status,
self._volume.volume_type,
)
self.volumes_mock.get.return_value = self._volume
# Get the command object to test
self.cmd = volume.ShowVolume(self.app, None)
def test_volume_show(self):
arglist = [
self._volume.id
]
verifylist = [
("volume", self._volume.id)
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
self.volumes_mock.get.assert_called_with(self._volume.id)
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, data)
class TestVolumeUnset(TestVolume):
_volume = volume_fakes.FakeVolume.create_one_volume()
def setUp(self):
super(TestVolumeUnset, self).setUp()
self.volumes_mock.get.return_value = self._volume
self.volumes_mock.delete_metadata.return_value = None
# Get the command object to test
self.cmd = volume.UnsetVolume(self.app, None)
def test_volume_unset_no_options(self):
arglist = [
self._volume.display_name,
]
verifylist = [
('property', None),
('volume', self._volume.display_name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
self.assertIsNone(result)
def test_volume_unset_property(self):
arglist = [
'--property', 'myprop',
self._volume.display_name,
]
verifylist = [
('property', ['myprop']),
('volume', self._volume.display_name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
self.volumes_mock.delete_metadata.assert_called_with(
self._volume.id, ['myprop']
)
self.assertIsNone(result)

View File

@ -452,10 +452,8 @@ class UnsetVolume(command.Command):
'--property',
metavar='<key>',
action='append',
default=[],
help=_('Remove a property from volume '
'(repeat option to remove multiple properties)'),
required=True,
)
return parser