summaryrefslogtreecommitdiff
path: root/openstackclient/tests/unit
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/tests/unit')
-rw-r--r--openstackclient/tests/unit/compute/v2/test_console.py86
-rw-r--r--openstackclient/tests/unit/compute/v2/test_flavor.py26
-rw-r--r--openstackclient/tests/unit/compute/v2/test_keypair.py258
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py2
4 files changed, 294 insertions, 78 deletions
diff --git a/openstackclient/tests/unit/compute/v2/test_console.py b/openstackclient/tests/unit/compute/v2/test_console.py
index 1c6d658b..db9603c9 100644
--- a/openstackclient/tests/unit/compute/v2/test_console.py
+++ b/openstackclient/tests/unit/compute/v2/test_console.py
@@ -32,9 +32,6 @@ class TestConsole(compute_fakes.TestComputev2):
self.sdk_client.find_server = mock.Mock()
self.sdk_client.get_server_console_output = mock.Mock()
- self.servers_mock = self.app.client_manager.compute.servers
- self.servers_mock.reset_mock()
-
class TestConsoleLog(TestConsole):
_server = compute_fakes.FakeServer.create_one_server()
@@ -107,18 +104,16 @@ class TestConsoleLog(TestConsole):
class TestConsoleUrlShow(TestConsole):
+ _server = compute_fakes.FakeServer.create_one_server()
def setUp(self):
super(TestConsoleUrlShow, self).setUp()
- fake_console_data = {'remote_console': {'url': 'http://localhost',
- 'protocol': 'fake_protocol',
- 'type': 'fake_type'}}
- methods = {
- 'get_console_url': fake_console_data
- }
- self.fake_server = compute_fakes.FakeServer.create_one_server(
- methods=methods)
- self.servers_mock.get.return_value = self.fake_server
+ self.sdk_client.find_server.return_value = self._server
+ fake_console_data = {'url': 'http://localhost',
+ 'protocol': 'fake_protocol',
+ 'type': 'fake_type'}
+ self.sdk_client.create_console = mock.Mock(
+ return_value=fake_console_data)
self.columns = (
'protocol',
@@ -126,9 +121,9 @@ class TestConsoleUrlShow(TestConsole):
'url',
)
self.data = (
- fake_console_data['remote_console']['protocol'],
- fake_console_data['remote_console']['type'],
- fake_console_data['remote_console']['url']
+ fake_console_data['protocol'],
+ fake_console_data['type'],
+ fake_console_data['url']
)
self.cmd = console.ShowConsoleURL(self.app, None)
@@ -143,7 +138,9 @@ class TestConsoleUrlShow(TestConsole):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.fake_server.get_console_url.assert_called_once_with('novnc')
+ self.sdk_client.create_console.assert_called_once_with(
+ self._server.id,
+ console_type='novnc')
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
@@ -158,7 +155,9 @@ class TestConsoleUrlShow(TestConsole):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.fake_server.get_console_url.assert_called_once_with('novnc')
+ self.sdk_client.create_console.assert_called_once_with(
+ self._server.id,
+ console_type='novnc')
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
@@ -173,7 +172,9 @@ class TestConsoleUrlShow(TestConsole):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.fake_server.get_console_url.assert_called_once_with('xvpvnc')
+ self.sdk_client.create_console.assert_called_once_with(
+ self._server.id,
+ console_type='xvpvnc')
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
@@ -188,41 +189,12 @@ class TestConsoleUrlShow(TestConsole):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.fake_server.get_console_url.assert_called_once_with(
- 'spice-html5')
+ self.sdk_client.create_console.assert_called_once_with(
+ self._server.id,
+ console_type='spice-html5')
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
- def test_console_url_show_compatible(self):
- methods = {
- 'get_console_url': {'console': {'url': 'http://localhost',
- 'type': 'fake_type'}},
- }
- old_fake_server = compute_fakes.FakeServer.create_one_server(
- methods=methods)
- old_columns = (
- 'type',
- 'url',
- )
- old_data = (
- methods['get_console_url']['console']['type'],
- methods['get_console_url']['console']['url']
- )
- arglist = [
- 'foo_vm',
- ]
- verifylist = [
- ('url_type', 'novnc'),
- ('server', 'foo_vm'),
- ]
- parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- with mock.patch.object(self.servers_mock, 'get',
- return_value=old_fake_server):
- columns, data = self.cmd.take_action(parsed_args)
- old_fake_server.get_console_url.assert_called_once_with('novnc')
- self.assertEqual(old_columns, columns)
- self.assertEqual(old_data, data)
-
def test_console_url_show_with_rdp(self):
arglist = [
'--rdp',
@@ -234,8 +206,9 @@ class TestConsoleUrlShow(TestConsole):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.fake_server.get_console_url.assert_called_once_with(
- 'rdp-html5')
+ self.sdk_client.create_console.assert_called_once_with(
+ self._server.id,
+ console_type='rdp-html5')
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
@@ -250,8 +223,9 @@ class TestConsoleUrlShow(TestConsole):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.fake_server.get_console_url.assert_called_once_with(
- 'serial')
+ self.sdk_client.create_console.assert_called_once_with(
+ self._server.id,
+ console_type='serial')
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
@@ -266,6 +240,8 @@ class TestConsoleUrlShow(TestConsole):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.fake_server.get_console_url.assert_called_once_with('webmks')
+ self.sdk_client.create_console.assert_called_once_with(
+ self._server.id,
+ console_type='webmks')
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
diff --git a/openstackclient/tests/unit/compute/v2/test_flavor.py b/openstackclient/tests/unit/compute/v2/test_flavor.py
index 4732cc82..2828d74e 100644
--- a/openstackclient/tests/unit/compute/v2/test_flavor.py
+++ b/openstackclient/tests/unit/compute/v2/test_flavor.py
@@ -17,8 +17,8 @@ from unittest import mock
from unittest.mock import call
import novaclient
+from osc_lib.cli import format_columns
from osc_lib import exceptions
-from osc_lib import utils
from openstackclient.compute.v2 import flavor
from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
@@ -70,7 +70,7 @@ class TestFlavorCreate(TestFlavor):
flavor.id,
flavor.name,
flavor.is_public,
- utils.format_dict(flavor.properties),
+ format_columns.DictColumn(flavor.properties),
flavor.ram,
flavor.rxtx_factor,
flavor.swap,
@@ -111,7 +111,7 @@ class TestFlavorCreate(TestFlavor):
self.flavors_mock.create.assert_called_once_with(*default_args)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.data, data)
+ self.assertItemEqual(self.data, data)
def test_flavor_create_all_options(self):
@@ -165,7 +165,7 @@ class TestFlavorCreate(TestFlavor):
self.flavor.get_keys.assert_called_once_with()
self.assertEqual(self.columns, columns)
- self.assertEqual(self.data, data)
+ self.assertItemEqual(self.data, data)
def test_flavor_create_other_options(self):
@@ -226,7 +226,7 @@ class TestFlavorCreate(TestFlavor):
{'key1': 'value1', 'key2': 'value2'})
self.flavor.get_keys.assert_called_with()
self.assertEqual(self.columns, columns)
- self.assertEqual(self.data, data)
+ self.assertItemEqual(self.data, data)
def test_public_flavor_create_with_project(self):
arglist = [
@@ -300,7 +300,7 @@ class TestFlavorCreate(TestFlavor):
self.flavors_mock.create.assert_called_once_with(*args)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.data, data)
+ self.assertItemEqual(self.data, data)
def test_flavor_create_with_description_api_older(self):
arglist = [
@@ -429,7 +429,7 @@ class TestFlavorList(TestFlavor):
data_long = (data[0] + (
flavors[0].swap,
flavors[0].rxtx_factor,
- u'property=\'value\''
+ format_columns.DictColumn(flavors[0].properties)
), )
def setUp(self):
@@ -583,7 +583,7 @@ class TestFlavorList(TestFlavor):
)
self.assertEqual(self.columns_long, columns)
- self.assertEqual(tuple(self.data_long), tuple(data))
+ self.assertListItemEqual(self.data_long, tuple(data))
class TestFlavorSet(TestFlavor):
@@ -817,7 +817,7 @@ class TestFlavorShow(TestFlavor):
flavor.id,
flavor.name,
flavor.is_public,
- utils.format_dict(flavor.get_keys()),
+ format_columns.DictColumn(flavor.get_keys()),
flavor.ram,
flavor.rxtx_factor,
flavor.swap,
@@ -854,7 +854,7 @@ class TestFlavorShow(TestFlavor):
columns, data = self.cmd.take_action(parsed_args)
self.assertEqual(self.columns, columns)
- self.assertEqual(self.data, data)
+ self.assertItemEqual(self.data, data)
def test_private_flavor_show(self):
private_flavor = compute_fakes.FakeFlavor.create_one_flavor(
@@ -874,13 +874,13 @@ class TestFlavorShow(TestFlavor):
data_with_project = (
private_flavor.disabled,
private_flavor.ephemeral,
- self.flavor_access.tenant_id,
+ [self.flavor_access.tenant_id],
private_flavor.description,
private_flavor.disk,
private_flavor.id,
private_flavor.name,
private_flavor.is_public,
- utils.format_dict(private_flavor.get_keys()),
+ format_columns.DictColumn(private_flavor.get_keys()),
private_flavor.ram,
private_flavor.rxtx_factor,
private_flavor.swap,
@@ -894,7 +894,7 @@ class TestFlavorShow(TestFlavor):
self.flavor_access_mock.list.assert_called_with(
flavor=private_flavor.id)
self.assertEqual(self.columns, columns)
- self.assertEqual(data_with_project, data)
+ self.assertItemEqual(data_with_project, data)
class TestFlavorUnset(TestFlavor):
diff --git a/openstackclient/tests/unit/compute/v2/test_keypair.py b/openstackclient/tests/unit/compute/v2/test_keypair.py
index 5e6a4741..9632a667 100644
--- a/openstackclient/tests/unit/compute/v2/test_keypair.py
+++ b/openstackclient/tests/unit/compute/v2/test_keypair.py
@@ -38,6 +38,15 @@ class TestKeypair(compute_fakes.TestComputev2):
self.keypairs_mock = self.app.client_manager.compute.keypairs
self.keypairs_mock.reset_mock()
+ # Initialize the user mock
+ self.users_mock = self.app.client_manager.identity.users
+ self.users_mock.reset_mock()
+ self.users_mock.get.return_value = fakes.FakeResource(
+ None,
+ copy.deepcopy(identity_fakes.USER),
+ loaded=True,
+ )
+
class TestKeypairCreate(TestKeypair):
@@ -226,6 +235,54 @@ class TestKeypairCreate(TestKeypair):
'--os-compute-api-version 2.2 or greater is required',
str(ex))
+ def test_key_pair_create_with_user(self):
+
+ self.app.client_manager.compute.api_version = \
+ api_versions.APIVersion('2.10')
+
+ arglist = [
+ '--user', identity_fakes.user_name,
+ self.keypair.name,
+ ]
+ verifylist = [
+ ('user', identity_fakes.user_name),
+ ('name', self.keypair.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.keypairs_mock.create.assert_called_with(
+ name=self.keypair.name,
+ public_key=None,
+ user_id=identity_fakes.user_id,
+ )
+
+ self.assertEqual({}, columns)
+ self.assertEqual({}, data)
+
+ def test_key_pair_create_with_user_pre_v210(self):
+
+ self.app.client_manager.compute.api_version = \
+ api_versions.APIVersion('2.9')
+
+ arglist = [
+ '--user', identity_fakes.user_name,
+ self.keypair.name,
+ ]
+ verifylist = [
+ ('user', identity_fakes.user_name),
+ ('name', self.keypair.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ ex = self.assertRaises(
+ exceptions.CommandError,
+ self.cmd.take_action,
+ parsed_args)
+ self.assertIn(
+ '--os-compute-api-version 2.10 or greater is required', str(ex))
+
class TestKeypairDelete(TestKeypair):
@@ -301,6 +358,51 @@ class TestKeypairDelete(TestKeypair):
self.keypairs[0].name
)
+ def test_keypair_delete_with_user(self):
+
+ self.app.client_manager.compute.api_version = \
+ api_versions.APIVersion('2.10')
+
+ arglist = [
+ '--user', identity_fakes.user_name,
+ self.keypairs[0].name
+ ]
+ verifylist = [
+ ('user', identity_fakes.user_name),
+ ('name', [self.keypairs[0].name]),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ ret = self.cmd.take_action(parsed_args)
+
+ self.assertIsNone(ret)
+ self.keypairs_mock.delete.assert_called_with(
+ self.keypairs[0].name,
+ user_id=identity_fakes.user_id,
+ )
+
+ def test_keypair_delete_with_user_pre_v210(self):
+
+ self.app.client_manager.compute.api_version = \
+ api_versions.APIVersion('2.9')
+
+ arglist = [
+ '--user', identity_fakes.user_name,
+ self.keypairs[0].name
+ ]
+ verifylist = [
+ ('user', identity_fakes.user_name),
+ ('name', [self.keypairs[0].name]),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ ex = self.assertRaises(
+ exceptions.CommandError,
+ self.cmd.take_action,
+ parsed_args)
+ self.assertIn(
+ '--os-compute-api-version 2.10 or greater is required', str(ex))
+
class TestKeypairList(TestKeypair):
@@ -310,14 +412,6 @@ class TestKeypairList(TestKeypair):
def setUp(self):
super(TestKeypairList, self).setUp()
- self.users_mock = self.app.client_manager.identity.users
- self.users_mock.reset_mock()
- self.users_mock.get.return_value = fakes.FakeResource(
- None,
- copy.deepcopy(identity_fakes.USER),
- loaded=True,
- )
-
self.keypairs_mock.list.return_value = self.keypairs
# Get the command object to test
@@ -378,6 +472,14 @@ class TestKeypairList(TestKeypair):
self.app.client_manager.compute.api_version = \
api_versions.APIVersion('2.10')
+ users_mock = self.app.client_manager.identity.users
+ users_mock.reset_mock()
+ users_mock.get.return_value = fakes.FakeResource(
+ None,
+ copy.deepcopy(identity_fakes.USER),
+ loaded=True,
+ )
+
arglist = [
'--user', identity_fakes.user_name,
]
@@ -388,7 +490,7 @@ class TestKeypairList(TestKeypair):
columns, data = self.cmd.take_action(parsed_args)
- self.users_mock.get.assert_called_with(identity_fakes.user_name)
+ users_mock.get.assert_called_with(identity_fakes.user_name)
self.keypairs_mock.list.assert_called_with(
user_id=identity_fakes.user_id,
)
@@ -423,6 +525,83 @@ class TestKeypairList(TestKeypair):
self.assertIn(
'--os-compute-api-version 2.10 or greater is required', str(ex))
+ def test_keypair_list_with_project(self):
+
+ # Filtering by user is support for nova api 2.10 or above
+ self.app.client_manager.compute.api_version = \
+ api_versions.APIVersion('2.10')
+
+ projects_mock = self.app.client_manager.identity.tenants
+ projects_mock.reset_mock()
+ projects_mock.get.return_value = fakes.FakeResource(
+ None,
+ copy.deepcopy(identity_fakes.PROJECT),
+ loaded=True,
+ )
+
+ users_mock = self.app.client_manager.identity.users
+ users_mock.reset_mock()
+ users_mock.list.return_value = [
+ fakes.FakeResource(
+ None,
+ copy.deepcopy(identity_fakes.USER),
+ loaded=True,
+ ),
+ ]
+
+ arglist = ['--project', identity_fakes.project_name]
+ verifylist = [('project', identity_fakes.project_name)]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ projects_mock.get.assert_called_with(identity_fakes.project_name)
+ users_mock.list.assert_called_with(tenant_id=identity_fakes.project_id)
+ self.keypairs_mock.list.assert_called_with(
+ user_id=identity_fakes.user_id,
+ )
+
+ self.assertEqual(('Name', 'Fingerprint', 'Type'), columns)
+ self.assertEqual(
+ ((
+ self.keypairs[0].name,
+ self.keypairs[0].fingerprint,
+ self.keypairs[0].type,
+ ), ),
+ tuple(data)
+ )
+
+ def test_keypair_list_with_project_pre_v210(self):
+
+ self.app.client_manager.compute.api_version = \
+ api_versions.APIVersion('2.9')
+
+ arglist = ['--project', identity_fakes.project_name]
+ verifylist = [('project', identity_fakes.project_name)]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ ex = self.assertRaises(
+ exceptions.CommandError,
+ self.cmd.take_action,
+ parsed_args)
+ self.assertIn(
+ '--os-compute-api-version 2.10 or greater is required', str(ex))
+
+ def test_keypair_list_conflicting_user_options(self):
+
+ # Filtering by user is support for nova api 2.10 or above
+ self.app.client_manager.compute.api_version = \
+ api_versions.APIVersion('2.10')
+
+ arglist = [
+ '--user', identity_fakes.user_name,
+ '--project', identity_fakes.project_name,
+ ]
+
+ self.assertRaises(
+ tests_utils.ParserException,
+ self.check_parser, self.cmd, arglist, None)
+
class TestKeypairShow(TestKeypair):
@@ -477,11 +656,14 @@ class TestKeypairShow(TestKeypair):
verifylist = [
('name', self.keypair.name)
]
-
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
+ self.keypairs_mock.get.assert_called_with(
+ self.keypair.name,
+ )
+
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
@@ -502,3 +684,59 @@ class TestKeypairShow(TestKeypair):
self.assertEqual({}, columns)
self.assertEqual({}, data)
+
+ def test_keypair_show_with_user(self):
+
+ # overwrite the setup one because we want to omit private_key
+ self.keypair = compute_fakes.FakeKeypair.create_one_keypair(
+ no_pri=True)
+ self.keypairs_mock.get.return_value = self.keypair
+
+ self.data = (
+ self.keypair.fingerprint,
+ self.keypair.name,
+ self.keypair.type,
+ self.keypair.user_id
+ )
+
+ self.app.client_manager.compute.api_version = \
+ api_versions.APIVersion('2.10')
+
+ arglist = [
+ '--user', identity_fakes.user_name,
+ self.keypair.name,
+ ]
+ verifylist = [
+ ('user', identity_fakes.user_name),
+ ('name', self.keypair.name)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.users_mock.get.assert_called_with(identity_fakes.user_name)
+ self.keypairs_mock.get.assert_called_with(
+ self.keypair.name,
+ )
+
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, data)
+
+ def test_keypair_show_with_user_pre_v210(self):
+
+ arglist = [
+ '--user', identity_fakes.user_name,
+ self.keypair.name,
+ ]
+ verifylist = [
+ ('user', identity_fakes.user_name),
+ ('name', self.keypair.name)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ ex = self.assertRaises(
+ exceptions.CommandError,
+ self.cmd.take_action,
+ parsed_args)
+ self.assertIn(
+ '--os-compute-api-version 2.10 or greater is required', str(ex))
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 20e3f70e..b62ee3dc 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -4092,6 +4092,7 @@ class TestListMigration(TestServer):
'--server', 'server1',
'--host', 'host1',
'--status', 'migrating',
+ '--type', 'cold-migration',
]
verifylist = [
('server', 'server1'),
@@ -4106,6 +4107,7 @@ class TestListMigration(TestServer):
'status': 'migrating',
'host': 'host1',
'server': 'server1',
+ 'type': 'migration',
}
self.migrations_mock.list.assert_called_with(**kwargs)