python-blazarclient/blazarclient/tests/test_command.py
Mark Powers f2277b5f7a Add openstackclient support
This adds support for the recommended CLI using the OpenStackClient,
without modifying the existing Blazar shell CLI.

The existing shell command classes are used, by introducing a check in
the base comand class to use either the client passed by Blazar shell,
or the client using the osc_lib client_manager.

The argument --physical-reservation is also removed for the create lease
command when using the OpenStack client.

Implements: blueprint openstackclient-support
Change-Id: I97a7b91f0d05efc887307ac167e5c368276d4f81
2021-08-05 10:24:28 -05:00

148 lines
4.4 KiB
Python

# Copyright (c) 2014 Mirantis 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.
from unittest import mock
import testtools
from blazarclient import command
from blazarclient import tests
class OpenstackCommandTestCase(tests.TestCase):
def setUp(self):
super(OpenstackCommandTestCase, self).setUp()
@testtools.skip("Have no idea how to test super")
def test_run(self):
pass
@testtools.skip("Unskip it when get_data will do smthg")
def test_get_data(self):
pass
@testtools.skip("Unskip it when get_data will do smthg")
def test_take_action(self):
pass
class TableFormatterTestCase(tests.TestCase):
def setUp(self):
super(TableFormatterTestCase, self).setUp()
@testtools.skip("Have no idea how to test super")
def test_emit_list(self):
pass
class BlazarCommandTestCase(tests.TestCase):
def setUp(self):
super(BlazarCommandTestCase, self).setUp()
self.app = mock.MagicMock()
self.parser = self.patch(command.OpenStackCommand, 'get_parser')
self.command = command.BlazarCommand(self.app, [])
def test_get_client(self):
# Test that either client_manager.reservation or client is used,
# whichever exists
client_manager = self.app.client_manager
del self.app.client_manager
client = self.command.get_client()
self.assertEqual(self.app.client, client)
self.app.client_manager = client_manager
del self.app.client
client = self.command.get_client()
self.assertEqual(self.app.client_manager.reservation, client)
def test_get_parser(self):
self.command.get_parser('TestCase')
self.parser.assert_called_once_with('TestCase')
def test_format_output_data(self):
data_before = {'key_string': 'string_value',
'key_dict': {'key': 'value'},
'key_list': ['1', '2', '3'],
'key_none': None}
data_after = {'key_string': 'string_value',
'key_dict': '{"key": "value"}',
'key_list': '1\n2\n3',
'key_none': ''}
self.command.format_output_data(data_before)
self.assertEqual(data_after, data_before)
class CreateCommandTestCase(tests.TestCase):
def setUp(self):
super(CreateCommandTestCase, self).setUp()
self.app = mock.MagicMock()
self.create_command = command.CreateCommand(self.app, [])
self.client = self.patch(self.create_command, 'get_client')
@testtools.skip("Under construction")
def test_get_data_data(self):
data = {'key_string': 'string_value',
'key_dict': "{'key0': 'value', 'key1': 'value'}",
'key_list': "['1', '2', '3',]",
'key_none': None}
self.client.resource.return_value = mock.MagicMock(return_value=data)
self.assertEqual(self.create_command.get_data({'a': 'b'}), None)
@testtools.skip("Under construction")
class UpdateCommandTestCase(tests.TestCase):
def setUp(self):
super(UpdateCommandTestCase, self).setUp()
self.app = mock.MagicMock()
self.update_command = command.UpdateCommand(self.app, [])
@testtools.skip("Under construction")
class DeleteCommandTestCase(tests.TestCase):
def setUp(self):
super(DeleteCommandTestCase, self).setUp()
self.app = mock.MagicMock()
self.delete_command = command.DeleteCommand(self.app, [])
@testtools.skip("Under construction")
class ListCommandTestCase(tests.TestCase):
def setUp(self):
super(ListCommandTestCase, self).setUp()
self.app = mock.MagicMock()
self.list_command = command.ListCommand(self.app, [])
@testtools.skip("Under construction")
class ShowCommandTestCase(tests.TestCase):
def setUp(self):
super(ShowCommandTestCase, self).setUp()
self.app = mock.MagicMock()
self.show_command = command.ShowCommand(self.app, [])