7ca43885c2
Black used with the '-l 79 -S' flags. A future change will ignore this commit in git-blame history by adding a 'git-blame-ignore-revs' file. Change-Id: I6420ec6fd550903b03083b9b1f8391511913c86f Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
186 lines
5.2 KiB
Python
186 lines
5.2 KiB
Python
# 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.
|
|
|
|
from osc_lib.cli import format_columns
|
|
|
|
from openstackclient.image.v2 import task
|
|
from openstackclient.tests.unit.image.v2 import fakes as image_fakes
|
|
|
|
|
|
class TestTask(image_fakes.TestImagev2):
|
|
def setUp(self):
|
|
super().setUp()
|
|
|
|
# Get shortcuts to mocked image client
|
|
self.client = self.app.client_manager.image
|
|
|
|
|
|
class TestTaskShow(TestTask):
|
|
task = image_fakes.create_one_task()
|
|
|
|
columns = (
|
|
'created_at',
|
|
'expires_at',
|
|
'id',
|
|
'input',
|
|
'message',
|
|
'owner_id',
|
|
'properties',
|
|
'result',
|
|
'status',
|
|
'type',
|
|
'updated_at',
|
|
)
|
|
data = (
|
|
task.created_at,
|
|
task.expires_at,
|
|
task.id,
|
|
task.input,
|
|
task.message,
|
|
task.owner_id,
|
|
format_columns.DictColumn({}),
|
|
task.result,
|
|
task.status,
|
|
task.type,
|
|
task.updated_at,
|
|
)
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
|
|
self.client.get_task.return_value = self.task
|
|
|
|
# Get the command object to test
|
|
self.cmd = task.ShowTask(self.app, None)
|
|
|
|
def test_task_show(self):
|
|
arglist = [self.task.id]
|
|
verifylist = [
|
|
('task', self.task.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.client.get_task.assert_called_with(self.task.id)
|
|
|
|
self.assertEqual(self.columns, columns)
|
|
self.assertCountEqual(self.data, data)
|
|
|
|
|
|
class TestTaskList(TestTask):
|
|
tasks = image_fakes.create_tasks()
|
|
|
|
columns = (
|
|
'ID',
|
|
'Type',
|
|
'Status',
|
|
'Owner',
|
|
)
|
|
datalist = [
|
|
(
|
|
task.id,
|
|
task.type,
|
|
task.status,
|
|
task.owner_id,
|
|
)
|
|
for task in tasks
|
|
]
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
|
|
self.client.tasks.side_effect = [self.tasks, []]
|
|
|
|
# Get the command object to test
|
|
self.cmd = task.ListTask(self.app, None)
|
|
|
|
def test_task_list_no_options(self):
|
|
arglist = []
|
|
verifylist = [
|
|
('sort_key', None),
|
|
('sort_dir', None),
|
|
('limit', None),
|
|
('marker', None),
|
|
('type', None),
|
|
('status', None),
|
|
]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
|
|
columns, data = self.cmd.take_action(parsed_args)
|
|
|
|
self.client.tasks.assert_called_with()
|
|
|
|
self.assertEqual(self.columns, columns)
|
|
self.assertCountEqual(self.datalist, data)
|
|
|
|
def test_task_list_sort_key_option(self):
|
|
arglist = ['--sort-key', 'created_at']
|
|
verifylist = [('sort_key', 'created_at')]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
|
|
columns, data = self.cmd.take_action(parsed_args)
|
|
|
|
self.client.tasks.assert_called_with(
|
|
sort_key=parsed_args.sort_key,
|
|
)
|
|
|
|
self.assertEqual(self.columns, columns)
|
|
self.assertCountEqual(self.datalist, data)
|
|
|
|
def test_task_list_sort_dir_option(self):
|
|
arglist = ['--sort-dir', 'desc']
|
|
verifylist = [('sort_dir', 'desc')]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
|
|
self.cmd.take_action(parsed_args)
|
|
|
|
self.client.tasks.assert_called_with(
|
|
sort_dir=parsed_args.sort_dir,
|
|
)
|
|
|
|
def test_task_list_pagination_options(self):
|
|
arglist = ['--limit', '1', '--marker', self.tasks[0].id]
|
|
verifylist = [('limit', 1), ('marker', self.tasks[0].id)]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
|
|
self.cmd.take_action(parsed_args)
|
|
|
|
self.client.tasks.assert_called_with(
|
|
limit=parsed_args.limit,
|
|
marker=parsed_args.marker,
|
|
)
|
|
|
|
def test_task_list_type_option(self):
|
|
arglist = ['--type', self.tasks[0].type]
|
|
verifylist = [('type', self.tasks[0].type)]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
|
|
self.cmd.take_action(parsed_args)
|
|
|
|
self.client.tasks.assert_called_with(
|
|
type=self.tasks[0].type,
|
|
)
|
|
|
|
def test_task_list_status_option(self):
|
|
arglist = ['--status', self.tasks[0].status]
|
|
verifylist = [('status', self.tasks[0].status)]
|
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
|
|
self.cmd.take_action(parsed_args)
|
|
|
|
self.client.tasks.assert_called_with(
|
|
status=self.tasks[0].status,
|
|
)
|