Mridula Joshi 4bb6efa8f8 Adds command `image metadef object list`
Depends-on: https://review.opendev.org/c/openstack/openstacksdk/+/858350
Change-Id: I0691f7519e8fb9f01836e6232e0bcebd2c428ac3
2023-11-08 10:44:31 +00:00

140 lines
4.4 KiB
Python

# Copyright 2023 Red Hat
#
# 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 openstackclient.image.v2 import metadef_objects
from openstackclient.tests.unit.image.v2 import fakes
class TestMetadefObjectsCreate(fakes.TestImagev2):
_metadef_namespace = fakes.create_one_metadef_namespace()
_metadef_objects = fakes.create_one_metadef_object()
expected_columns = (
'created_at',
'description',
'name',
'namespace_name',
'properties',
'required',
'updated_at',
)
expected_data = (
_metadef_objects.created_at,
_metadef_objects.description,
_metadef_objects.name,
_metadef_objects.namespace_name,
_metadef_objects.properties,
_metadef_objects.required,
_metadef_objects.updated_at,
)
def setUp(self):
super().setUp()
self.image_client.create_metadef_object.return_value = (
self._metadef_objects
)
self.cmd = metadef_objects.CreateMetadefObjects(self.app, None)
def test_namespace_create(self):
arglist = [
'--namespace',
self._metadef_namespace.namespace,
self._metadef_objects.name,
]
verifylist = []
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
self.assertEqual(self.expected_columns, columns)
self.assertEqual(self.expected_data, data)
class TestMetadefObjectsShow(fakes.TestImagev2):
_metadef_namespace = fakes.create_one_metadef_namespace()
_metadef_objects = fakes.create_one_metadef_object()
expected_columns = (
'created_at',
'description',
'name',
'namespace_name',
'properties',
'required',
'updated_at',
)
expected_data = (
_metadef_objects.created_at,
_metadef_objects.description,
_metadef_objects.name,
_metadef_objects.namespace_name,
_metadef_objects.properties,
_metadef_objects.required,
_metadef_objects.updated_at,
)
def setUp(self):
super().setUp()
self.image_client.get_metadef_object.return_value = (
self._metadef_objects
)
self.cmd = metadef_objects.ShowMetadefObjects(self.app, None)
def test_object_show(self):
arglist = [
self._metadef_namespace.namespace,
self._metadef_objects.name,
]
verifylist = []
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
self.assertEqual(self.expected_columns, columns)
self.assertEqual(self.expected_data, data)
class TestMetadefObjectList(fakes.TestImagev2):
_metadef_namespace = fakes.create_one_metadef_namespace()
_metadef_objects = [fakes.create_one_metadef_object()]
columns = ['name', 'description']
datalist = []
def setUp(self):
super().setUp()
self.image_client.metadef_objects.side_effect = [
self._metadef_objects,
[],
]
# Get the command object to test
self.image_client.metadef_objects.return_value = iter(
self._metadef_objects
)
self.cmd = metadef_objects.ListMetadefObjects(self.app, None)
self.datalist = self._metadef_objects
def test_metadef_objects_list(self):
arglist = [self._metadef_namespace.namespace]
parsed_args = self.check_parser(self.cmd, arglist, [])
# 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.assertEqual(self.columns, columns)
self.assertEqual(getattr(self.datalist[0], 'name'), next(data)[0])