Skip to content

Commit 3f62429

Browse files
committed
volume: Add v3-specific volume transfer module
This makes testing easier. Change-Id: I515aa54750439a6c4ad5b16cffe004ba1c7cf5b2 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
1 parent f1f390f commit 3f62429

6 files changed

Lines changed: 729 additions & 81 deletions

File tree

openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from unittest import mock
1616
from unittest.mock import call
1717

18-
from cinderclient import api_versions
1918
from osc_lib import exceptions
2019
from osc_lib import utils
2120

@@ -176,49 +175,6 @@ def test_transfer_create_with_name(self):
176175
self.assertEqual(self.columns, columns)
177176
self.assertEqual(self.data, data)
178177

179-
def test_transfer_create_with_no_snapshots(self):
180-
self.volume_client.api_version = api_versions.APIVersion('3.55')
181-
182-
arglist = [
183-
'--no-snapshots',
184-
self.volume.id,
185-
]
186-
verifylist = [
187-
('name', None),
188-
('snapshots', False),
189-
('volume', self.volume.id),
190-
]
191-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
192-
193-
columns, data = self.cmd.take_action(parsed_args)
194-
195-
self.transfer_mock.create.assert_called_once_with(
196-
self.volume.id, None, no_snapshots=True
197-
)
198-
self.assertEqual(self.columns, columns)
199-
self.assertEqual(self.data, data)
200-
201-
def test_transfer_create_pre_v355(self):
202-
self.volume_client.api_version = api_versions.APIVersion('3.54')
203-
204-
arglist = [
205-
'--no-snapshots',
206-
self.volume.id,
207-
]
208-
verifylist = [
209-
('name', None),
210-
('snapshots', False),
211-
('volume', self.volume.id),
212-
]
213-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
214-
215-
exc = self.assertRaises(
216-
exceptions.CommandError, self.cmd.take_action, parsed_args
217-
)
218-
self.assertIn(
219-
'--os-volume-api-version 3.55 or greater is required', str(exc)
220-
)
221-
222178

223179
class TestTransferDelete(TestTransfer):
224180
volume_transfers = volume_fakes.create_transfers(count=2)

openstackclient/tests/unit/volume/v3/fakes.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ def __init__(self, **kwargs):
6262
self.resource_filters.resource_class = fakes.FakeResource(None, {})
6363
self.restores = mock.Mock()
6464
self.restores.resource_class = fakes.FakeResource(None, {})
65+
self.transfers = mock.Mock()
66+
self.transfers.resource_class = fakes.FakeResource(None, {})
6567
self.volume_encryption_types = mock.Mock()
6668
self.volume_encryption_types.resource_class = fakes.FakeResource(
6769
None, {}
@@ -438,6 +440,69 @@ def create_resource_filters(attrs=None, count=2):
438440
return resource_filters
439441

440442

443+
def create_one_transfer(attrs=None):
444+
"""Create a fake transfer.
445+
446+
:param dict attrs:
447+
A dictionary with all attributes of Transfer Request
448+
:return:
449+
A FakeResource object with volume_id, name, id.
450+
"""
451+
# Set default attribute
452+
transfer_info = {
453+
'volume_id': 'volume-id-' + uuid.uuid4().hex,
454+
'name': 'fake_transfer_name',
455+
'id': 'id-' + uuid.uuid4().hex,
456+
'links': 'links-' + uuid.uuid4().hex,
457+
}
458+
459+
# Overwrite default attributes if there are some attributes set
460+
attrs = attrs or {}
461+
462+
transfer_info.update(attrs)
463+
464+
transfer = fakes.FakeResource(None, transfer_info, loaded=True)
465+
466+
return transfer
467+
468+
469+
def create_transfers(attrs=None, count=2):
470+
"""Create multiple fake transfers.
471+
472+
:param dict attrs:
473+
A dictionary with all attributes of transfer
474+
:param Integer count:
475+
The number of transfers to be faked
476+
:return:
477+
A list of FakeResource objects
478+
"""
479+
transfers = []
480+
for n in range(0, count):
481+
transfers.append(create_one_transfer(attrs))
482+
483+
return transfers
484+
485+
486+
def get_transfers(transfers=None, count=2):
487+
"""Get an iterable MagicMock object with a list of faked transfers.
488+
489+
If transfers list is provided, then initialize the Mock object with the
490+
list. Otherwise create one.
491+
492+
:param List transfers:
493+
A list of FakeResource objects faking transfers
494+
:param Integer count:
495+
The number of transfers to be faked
496+
:return
497+
An iterable Mock object with side_effect set to a list of faked
498+
transfers
499+
"""
500+
if transfers is None:
501+
transfers = create_transfers(count)
502+
503+
return mock.Mock(side_effect=transfers)
504+
505+
441506
def create_one_type_access(attrs=None):
442507
"""Create a fake volume type access for project.
443508

0 commit comments

Comments
 (0)