summaryrefslogtreecommitdiff
path: root/openstackclient/tests
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/tests')
-rw-r--r--openstackclient/tests/common/test_clientmanager.py11
-rw-r--r--openstackclient/tests/common/test_utils.py10
-rw-r--r--openstackclient/tests/compute/v2/test_server.py56
-rw-r--r--openstackclient/tests/fakes.py2
-rw-r--r--openstackclient/tests/identity/v2_0/test_catalog.py18
-rw-r--r--openstackclient/tests/image/v1/test_image.py132
-rw-r--r--openstackclient/tests/network/common.py27
-rw-r--r--openstackclient/tests/network/v2/test_network.py8
-rw-r--r--openstackclient/tests/test_shell.py8
-rw-r--r--openstackclient/tests/volume/v1/test_qos_specs.py2
-rw-r--r--openstackclient/tests/volume/v2/test_qos_specs.py2
11 files changed, 167 insertions, 109 deletions
diff --git a/openstackclient/tests/common/test_clientmanager.py b/openstackclient/tests/common/test_clientmanager.py
index 4e2f46b4..e86ef509 100644
--- a/openstackclient/tests/common/test_clientmanager.py
+++ b/openstackclient/tests/common/test_clientmanager.py
@@ -54,6 +54,7 @@ class FakeOptions(object):
self.identity_api_version = '2.0'
self.timing = None
self.region_name = None
+ self.endpoint_type = None
self.url = None
self.auth = {}
self.default_domain = 'default'
@@ -123,6 +124,8 @@ class TestClientManager(utils.TestCase):
auth_url=fakes.AUTH_URL,
),
auth_type='v2token',
+ endpoint_type=fakes.ENDPOINT_TYPE,
+ region_name=fakes.REGION_NAME,
),
api_version=API_VERSION,
verify=True
@@ -137,6 +140,14 @@ class TestClientManager(utils.TestCase):
client_manager.auth,
auth_v2.Token,
)
+ self.assertEqual(
+ fakes.ENDPOINT_TYPE,
+ client_manager._endpoint_type,
+ )
+ self.assertEqual(
+ fakes.REGION_NAME,
+ client_manager._region_name,
+ )
self.assertFalse(client_manager._insecure)
self.assertTrue(client_manager._verify)
diff --git a/openstackclient/tests/common/test_utils.py b/openstackclient/tests/common/test_utils.py
index d9f5b7a5..a25a5ba5 100644
--- a/openstackclient/tests/common/test_utils.py
+++ b/openstackclient/tests/common/test_utils.py
@@ -159,6 +159,16 @@ class TestUtils(test_utils.TestCase):
self.assertFalse(utils.wait_for_delete(manager, res_id))
self.assertFalse(mock_sleep.called)
+ def test_build_kwargs_dict_value_set(self):
+ self.assertEqual({'arg_bla': 'bla'},
+ utils.build_kwargs_dict('arg_bla', 'bla'))
+
+ def test_build_kwargs_dict_value_None(self):
+ self.assertEqual({}, utils.build_kwargs_dict('arg_bla', None))
+
+ def test_build_kwargs_dict_value_empty_str(self):
+ self.assertEqual({}, utils.build_kwargs_dict('arg_bla', ''))
+
class NoUniqueMatch(Exception):
pass
diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/compute/v2/test_server.py
index a8a1936d..4df18f05 100644
--- a/openstackclient/tests/compute/v2/test_server.py
+++ b/openstackclient/tests/compute/v2/test_server.py
@@ -15,7 +15,9 @@
import copy
import mock
+import testtools
+from openstackclient.common import exceptions
from openstackclient.common import utils as common_utils
from openstackclient.compute.v2 import server
from openstackclient.tests.compute.v2 import fakes as compute_fakes
@@ -250,7 +252,7 @@ class TestServerCreate(TestServer):
mock_open.assert_called_with('userdata.sh')
# Ensure the userdata file is closed
- mock_file.close.assert_called()
+ mock_file.close.assert_called_with()
# Set expected values
kwargs = dict(
@@ -580,3 +582,55 @@ class TestServerResize(TestServer):
self.servers_mock.revert_resize.assert_called_with(
self.servers_get_return_value,
)
+
+
+class TestServerGeneral(testtools.TestCase):
+ OLD = {
+ 'private': [
+ {
+ 'addr': '192.168.0.3',
+ 'version': 4,
+ },
+ ]
+ }
+ NEW = {
+ 'foo': [
+ {
+ 'OS-EXT-IPS-MAC:mac_addr': 'fa:16:3e:93:b3:01',
+ 'version': 4,
+ 'addr': '10.10.1.2',
+ 'OS-EXT-IPS:type': 'fixed',
+ },
+ {
+ 'OS-EXT-IPS-MAC:mac_addr': 'fa:16:3e:93:b3:02',
+ 'version': 6,
+ 'addr': '0:0:0:0:0:ffff:a0a:103',
+ 'OS-EXT-IPS:type': 'floating',
+ },
+ ]
+ }
+ ODD = {'jenkins': ['10.3.3.18', '124.12.125.4']}
+
+ def test_get_ip_address(self):
+ self.assertEqual("192.168.0.3",
+ server._get_ip_address(self.OLD, 'private', [4, 6]))
+ self.assertEqual("10.10.1.2",
+ server._get_ip_address(self.NEW, 'fixed', [4, 6]))
+ self.assertEqual("10.10.1.2",
+ server._get_ip_address(self.NEW, 'private', [4, 6]))
+ self.assertEqual("0:0:0:0:0:ffff:a0a:103",
+ server._get_ip_address(self.NEW, 'public', [6]))
+ self.assertEqual("0:0:0:0:0:ffff:a0a:103",
+ server._get_ip_address(self.NEW, 'floating', [6]))
+ self.assertEqual("124.12.125.4",
+ server._get_ip_address(self.ODD, 'public', [4, 6]))
+ self.assertEqual("10.3.3.18",
+ server._get_ip_address(self.ODD, 'private', [4, 6]))
+ self.assertRaises(exceptions.CommandError,
+ server._get_ip_address, self.NEW, 'public', [4])
+ self.assertRaises(exceptions.CommandError,
+ server._get_ip_address, self.NEW, 'admin', [4])
+ self.assertRaises(exceptions.CommandError,
+ server._get_ip_address, self.OLD, 'public', [4, 6])
+ self.assertRaises(exceptions.CommandError,
+ server._get_ip_address, self.OLD, 'private', [6])
diff --git a/openstackclient/tests/fakes.py b/openstackclient/tests/fakes.py
index 323f9543..a9322ec3 100644
--- a/openstackclient/tests/fakes.py
+++ b/openstackclient/tests/fakes.py
@@ -26,6 +26,8 @@ AUTH_URL = "http://0.0.0.0"
USERNAME = "itchy"
PASSWORD = "scratchy"
PROJECT_NAME = "poochie"
+REGION_NAME = "richie"
+ENDPOINT_TYPE = "catchy"
TEST_RESPONSE_DICT = fixture.V2Token(token_id=AUTH_TOKEN,
user_name=USERNAME)
diff --git a/openstackclient/tests/identity/v2_0/test_catalog.py b/openstackclient/tests/identity/v2_0/test_catalog.py
index 50445954..fe13d78d 100644
--- a/openstackclient/tests/identity/v2_0/test_catalog.py
+++ b/openstackclient/tests/identity/v2_0/test_catalog.py
@@ -27,11 +27,13 @@ class TestCatalog(utils.TestCommand):
{
'region': 'one',
'publicURL': 'https://public.one.example.com',
+ 'internalURL': 'https://internal.one.example.com',
'adminURL': 'https://admin.one.example.com',
},
{
'region': 'two',
'publicURL': 'https://public.two.example.com',
+ 'internalURL': 'https://internal.two.example.com',
'adminURL': 'https://admin.two.example.com',
},
],
@@ -74,11 +76,11 @@ class TestCatalogList(TestCatalog):
'supernova',
'compute',
'one\n publicURL: https://public.one.example.com\n '
- 'internalURL: https://public.one.example.com\n '
- 'adminURL: https://public.one.example.com\n'
+ 'internalURL: https://internal.one.example.com\n '
+ 'adminURL: https://admin.one.example.com\n'
'two\n publicURL: https://public.two.example.com\n '
- 'internalURL: https://public.two.example.com\n '
- 'adminURL: https://public.two.example.com\n',
+ 'internalURL: https://internal.two.example.com\n '
+ 'adminURL: https://admin.two.example.com\n',
), )
self.assertEqual(datalist, tuple(data))
@@ -108,11 +110,11 @@ class TestCatalogShow(TestCatalog):
self.assertEqual(collist, columns)
datalist = (
'one\n publicURL: https://public.one.example.com\n '
- 'internalURL: https://public.one.example.com\n '
- 'adminURL: https://public.one.example.com\n'
+ 'internalURL: https://internal.one.example.com\n '
+ 'adminURL: https://admin.one.example.com\n'
'two\n publicURL: https://public.two.example.com\n '
- 'internalURL: https://public.two.example.com\n '
- 'adminURL: https://public.two.example.com\n',
+ 'internalURL: https://internal.two.example.com\n '
+ 'adminURL: https://admin.two.example.com\n',
'qwertyuiop',
'supernova',
'compute',
diff --git a/openstackclient/tests/image/v1/test_image.py b/openstackclient/tests/image/v1/test_image.py
index eec8cfa5..a79df8b4 100644
--- a/openstackclient/tests/image/v1/test_image.py
+++ b/openstackclient/tests/image/v1/test_image.py
@@ -178,8 +178,8 @@ class TestImageCreate(TestImage):
# Ensure the input file is closed
mock_file.close.assert_called_with()
- # ImageManager.get(name)
- self.images_mock.get.assert_called_with(image_fakes.image_name)
+ # ImageManager.get(name) not to be called since update action exists
+ self.images_mock.get.assert_not_called()
# ImageManager.create(name=, **)
self.images_mock.create.assert_called_with(
@@ -201,71 +201,6 @@ class TestImageCreate(TestImage):
self.assertEqual(image_fakes.IMAGE_columns, columns)
self.assertEqual(image_fakes.IMAGE_data, data)
- def test_image_create_volume(self):
- # Set up VolumeManager Mock
- volumes_mock = self.app.client_manager.volume.volumes
- volumes_mock.reset_mock()
- volumes_mock.get.return_value = fakes.FakeResource(
- None,
- copy.deepcopy({'id': 'vol1', 'name': 'volly'}),
- loaded=True,
- )
- response = {
- "id": 'volume_id',
- "updated_at": 'updated_at',
- "status": 'uploading',
- "display_description": 'desc',
- "size": 'size',
- "volume_type": 'volume_type',
- "image_id": 'image1',
- "container_format": image.DEFAULT_CONTAINER_FORMAT,
- "disk_format": image.DEFAULT_DISK_FORMAT,
- "image_name": image_fakes.image_name,
- }
- full_response = {"os-volume_upload_image": response}
- volumes_mock.upload_to_image.return_value = (201, full_response)
-
- arglist = [
- '--volume', 'volly',
- image_fakes.image_name,
- ]
- verifylist = [
- ('private', False),
- ('protected', False),
- ('public', False),
- ('unprotected', False),
- ('volume', 'volly'),
- ('force', False),
- ('name', image_fakes.image_name),
- ]
- parsed_args = self.check_parser(self.cmd, arglist, verifylist)
-
- # DisplayCommandBase.take_action() returns two tuples
- columns, data = self.cmd.take_action(parsed_args)
-
- # VolumeManager.upload_to_image(volume, force, image_name,
- # container_format, disk_format)
- volumes_mock.upload_to_image.assert_called_with(
- 'vol1',
- False,
- image_fakes.image_name,
- 'bare',
- 'raw',
- )
-
- # ImageManager.update(image_id, remove_props=, **)
- self.images_mock.update.assert_called_with(
- image_fakes.image_id,
- name=image_fakes.image_name,
- container_format=image.DEFAULT_CONTAINER_FORMAT,
- disk_format=image.DEFAULT_DISK_FORMAT,
- properties=image_fakes.image_properties,
- volume='volly',
- )
-
- self.assertEqual(image_fakes.IMAGE_columns, columns)
- self.assertEqual(image_fakes.IMAGE_data, data)
-
class TestImageDelete(TestImage):
@@ -669,6 +604,69 @@ class TestImageSet(TestImage):
**kwargs
)
+ def test_image_update_volume(self):
+ # Set up VolumeManager Mock
+ volumes_mock = self.app.client_manager.volume.volumes
+ volumes_mock.reset_mock()
+ volumes_mock.get.return_value = fakes.FakeResource(
+ None,
+ copy.deepcopy({'id': 'vol1', 'name': 'volly'}),
+ loaded=True,
+ )
+ response = {
+ "id": 'volume_id',
+ "updated_at": 'updated_at',
+ "status": 'uploading',
+ "display_description": 'desc',
+ "size": 'size',
+ "volume_type": 'volume_type',
+ "container_format": image.DEFAULT_CONTAINER_FORMAT,
+ "disk_format": image.DEFAULT_DISK_FORMAT,
+ "image": image_fakes.image_name,
+ }
+ full_response = {"os-volume_upload_image": response}
+ volumes_mock.upload_to_image.return_value = (201, full_response)
+
+ arglist = [
+ '--volume', 'volly',
+ '--name', 'updated_image',
+ image_fakes.image_name,
+ ]
+ verifylist = [
+ ('private', False),
+ ('protected', False),
+ ('public', False),
+ ('unprotected', False),
+ ('volume', 'volly'),
+ ('force', False),
+ ('name', 'updated_image'),
+ ('image', image_fakes.image_name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # DisplayCommandBase.take_action() returns two tuples
+ columns, data = self.cmd.take_action(parsed_args)
+
+ # VolumeManager.upload_to_image(volume, force, image_name,
+ # container_format, disk_format)
+ volumes_mock.upload_to_image.assert_called_with(
+ 'vol1',
+ False,
+ image_fakes.image_name,
+ '',
+ '',
+ )
+
+ # ImageManager.update(image_id, remove_props=, **)
+ self.images_mock.update.assert_called_with(
+ image_fakes.image_id,
+ name='updated_image',
+ volume='volly',
+ )
+
+ self.assertEqual(image_fakes.IMAGE_columns, columns)
+ self.assertEqual(image_fakes.IMAGE_data, data)
+
class TestImageShow(TestImage):
diff --git a/openstackclient/tests/network/common.py b/openstackclient/tests/network/common.py
index 7162f97b..31fde257 100644
--- a/openstackclient/tests/network/common.py
+++ b/openstackclient/tests/network/common.py
@@ -33,30 +33,3 @@ class TestNetworkBase(utils.TestCommand):
service_type="network",
)
self.api = self.app.client_manager.network.api
-
- given_show_options = [
- '-f',
- 'shell',
- '-c',
- 'id',
- '--prefix',
- 'TST',
- ]
- then_show_options = [
- ('formatter', 'shell'),
- ('columns', ['id']),
- ('prefix', 'TST'),
- ]
- given_list_options = [
- '-f',
- 'csv',
- '-c',
- 'id',
- '--quote',
- 'all',
- ]
- then_list_options = [
- ('formatter', 'csv'),
- ('columns', ['id']),
- ('quote_mode', 'all'),
- ]
diff --git a/openstackclient/tests/network/v2/test_network.py b/openstackclient/tests/network/v2/test_network.py
index 36133a3b..87a44066 100644
--- a/openstackclient/tests/network/v2/test_network.py
+++ b/openstackclient/tests/network/v2/test_network.py
@@ -92,14 +92,14 @@ class TestCreateNetwork(common.TestNetworkBase):
"--project", identity_fakes_v3.project_name,
"--project-domain", identity_fakes_v3.domain_name,
FAKE_NAME,
- ] + self.given_show_options
+ ]
verifylist = [
('admin_state', False),
('shared', True),
('project', identity_fakes_v3.project_name),
('project_domain', identity_fakes_v3.domain_name),
('name', FAKE_NAME),
- ] + self.then_show_options
+ ]
mocker = mock.Mock(return_value=copy.deepcopy(RESPONSE))
self.app.client_manager.network.create_network = mocker
identity_client = identity_fakes_v3.FakeIdentityv3Client(
@@ -519,8 +519,8 @@ class TestShowNetwork(common.TestNetworkBase):
self.assertEqual(FILTERED, result)
def test_show_all_options(self, n_mock):
- arglist = [FAKE_NAME] + self.given_show_options
- verifylist = [('identifier', FAKE_NAME)] + self.then_show_options
+ arglist = [FAKE_NAME]
+ verifylist = [('identifier', FAKE_NAME)]
n_mock.return_value = copy.deepcopy(RECORD)
self.cmd = network.ShowNetwork(self.app, self.namespace)
diff --git a/openstackclient/tests/test_shell.py b/openstackclient/tests/test_shell.py
index b080ae91..674d8345 100644
--- a/openstackclient/tests/test_shell.py
+++ b/openstackclient/tests/test_shell.py
@@ -38,6 +38,7 @@ DEFAULT_REGION_NAME = "ZZ9_Plural_Z_Alpha"
DEFAULT_TOKEN = "token"
DEFAULT_SERVICE_URL = "http://127.0.0.1:8771/v3.0/"
DEFAULT_AUTH_PLUGIN = "v2password"
+DEFAULT_ENDPOINT_TYPE = "internal"
DEFAULT_COMPUTE_API_VERSION = "2"
DEFAULT_IDENTITY_API_VERSION = "2"
@@ -61,6 +62,7 @@ CLOUD_1 = {
},
'region_name': 'occ-cloud',
'donut': 'glazed',
+ 'endpoint_type': 'public',
}
}
}
@@ -104,6 +106,7 @@ global_options = {
'--os-default-domain': (DEFAULT_DOMAIN_NAME, True, True),
'--os-cacert': ('/dev/null', True, True),
'--timing': (True, True, False),
+ '--os-endpoint-type': (DEFAULT_ENDPOINT_TYPE, True, True)
}
auth_options = {
@@ -123,6 +126,7 @@ auth_options = {
'--os-auth-type': ("v2password", True, True),
'--os-token': (DEFAULT_TOKEN, True, True),
'--os-url': (DEFAULT_SERVICE_URL, True, True),
+ '--os-endpoint-type': (DEFAULT_ENDPOINT_TYPE, True, True),
}
@@ -608,6 +612,10 @@ class TestShellCli(TestShell):
'glazed',
_shell.cloud.config['donut'],
)
+ self.assertEqual(
+ 'public',
+ _shell.cloud.config['endpoint_type'],
+ )
@mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
@mock.patch("os_client_config.config.OpenStackConfig._load_config_file")
diff --git a/openstackclient/tests/volume/v1/test_qos_specs.py b/openstackclient/tests/volume/v1/test_qos_specs.py
index 0a5d14e6..226fe673 100644
--- a/openstackclient/tests/volume/v1/test_qos_specs.py
+++ b/openstackclient/tests/volume/v1/test_qos_specs.py
@@ -312,7 +312,7 @@ class TestQosList(TestQos):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.qos_mock.list.assert_called()
+ self.qos_mock.list.assert_called_with()
collist = (
'ID',
diff --git a/openstackclient/tests/volume/v2/test_qos_specs.py b/openstackclient/tests/volume/v2/test_qos_specs.py
index 92b3f179..6a550988 100644
--- a/openstackclient/tests/volume/v2/test_qos_specs.py
+++ b/openstackclient/tests/volume/v2/test_qos_specs.py
@@ -312,7 +312,7 @@ class TestQosList(TestQos):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- self.qos_mock.list.assert_called()
+ self.qos_mock.list.assert_called_with()
collist = (
'ID',