
Move the public API out of oslo.vmware to oslo_vmware. Retain the ability to import from the old namespace package for backwards compatibility for this release cycle. bp/drop-namespace-packages Change-Id: I11cf038c3832a7357ed53363d8ccf143daddd2a2
111 lines
4.4 KiB
Python
111 lines
4.4 KiB
Python
# Copyright (c) 2014 VMware, Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# 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.
|
|
|
|
"""
|
|
Unit tests for classes to invoke VMware VI SOAP calls.
|
|
"""
|
|
|
|
import mock
|
|
from oslo_i18n import fixture as i18n_fixture
|
|
|
|
from oslo_vmware._i18n import _
|
|
from oslo_vmware import exceptions
|
|
from oslo_vmware.tests import base
|
|
from oslo_vmware import vim
|
|
|
|
|
|
class VimTest(base.TestCase):
|
|
"""Test class for Vim."""
|
|
|
|
def setUp(self):
|
|
super(VimTest, self).setUp()
|
|
patcher = mock.patch('suds.client.Client')
|
|
self.addCleanup(patcher.stop)
|
|
self.SudsClientMock = patcher.start()
|
|
self.useFixture(i18n_fixture.ToggleLazy(True))
|
|
|
|
@mock.patch.object(vim.Vim, '__getattr__', autospec=True)
|
|
def test_service_content(self, getattr_mock):
|
|
getattr_ret = mock.Mock()
|
|
getattr_mock.side_effect = lambda *args: getattr_ret
|
|
vim_obj = vim.Vim()
|
|
vim_obj.service_content
|
|
getattr_mock.assert_called_once_with(vim_obj, 'RetrieveServiceContent')
|
|
getattr_ret.assert_called_once_with('ServiceInstance')
|
|
self.assertEqual(self.SudsClientMock.return_value, vim_obj.client)
|
|
self.assertEqual(getattr_ret.return_value, vim_obj.service_content)
|
|
|
|
def test_exception_summary_exception_as_list(self):
|
|
# assert that if a list is fed to the VimException object
|
|
# that it will error.
|
|
self.assertRaises(ValueError,
|
|
exceptions.VimException,
|
|
[], ValueError('foo'))
|
|
|
|
def test_exception_summary_string(self):
|
|
e = exceptions.VimException(_("string"), ValueError("foo"))
|
|
string = str(e)
|
|
self.assertEqual("string\nCause: foo", string)
|
|
|
|
def test_vim_fault_exception_string(self):
|
|
self.assertRaises(ValueError,
|
|
exceptions.VimFaultException,
|
|
"bad", ValueError("argument"))
|
|
|
|
def test_vim_fault_exception(self):
|
|
vfe = exceptions.VimFaultException([ValueError("example")], _("cause"))
|
|
string = str(vfe)
|
|
self.assertEqual("cause\nFaults: [ValueError('example',)]", string)
|
|
|
|
def test_vim_fault_exception_with_cause_and_details(self):
|
|
vfe = exceptions.VimFaultException([ValueError("example")],
|
|
"MyMessage",
|
|
"FooBar",
|
|
{'foo': 'bar'})
|
|
string = str(vfe)
|
|
self.assertEqual("MyMessage\n"
|
|
"Cause: FooBar\n"
|
|
"Faults: [ValueError('example',)]\n"
|
|
"Details: {'foo': 'bar'}",
|
|
string)
|
|
|
|
def test_configure_non_default_host_port(self):
|
|
vim_obj = vim.Vim('https', 'www.test.com', 12345)
|
|
self.assertEqual('https://www.test.com:12345/sdk/vimService.wsdl',
|
|
vim_obj.wsdl_url)
|
|
self.assertEqual('https://www.test.com:12345/sdk',
|
|
vim_obj.soap_url)
|
|
|
|
def test_configure_ipv6(self):
|
|
vim_obj = vim.Vim('https', '::1')
|
|
self.assertEqual('https://[::1]/sdk/vimService.wsdl',
|
|
vim_obj.wsdl_url)
|
|
self.assertEqual('https://[::1]/sdk',
|
|
vim_obj.soap_url)
|
|
|
|
def test_configure_ipv6_and_non_default_host_port(self):
|
|
vim_obj = vim.Vim('https', '::1', 12345)
|
|
self.assertEqual('https://[::1]:12345/sdk/vimService.wsdl',
|
|
vim_obj.wsdl_url)
|
|
self.assertEqual('https://[::1]:12345/sdk',
|
|
vim_obj.soap_url)
|
|
|
|
def test_configure_with_wsdl_url_override(self):
|
|
vim_obj = vim.Vim('https', 'www.example.com',
|
|
wsdl_url='https://test.com/sdk/vimService.wsdl')
|
|
self.assertEqual('https://test.com/sdk/vimService.wsdl',
|
|
vim_obj.wsdl_url)
|
|
self.assertEqual('https://www.example.com/sdk', vim_obj.soap_url)
|