Validate vmware module defaults to verifying SSL

This commit is contained in:
Megan Wilhite 2020-12-17 10:59:06 -05:00 committed by Daniel Wozniak
parent 605761d0ed
commit 46cd3263f9
10 changed files with 261 additions and 93 deletions

View file

@ -277,7 +277,7 @@ repos:
- id: pip-tools-compile
alias: compile-ci-linux-py3.5-zmq-requirements
name: Linux CI Py3.5 ZeroMQ Requirements
files: ^requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/linux\.in|pkg/py3\.5/linux\.txt))$
files: ^requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/(linux\.in|git-sources\.txt)|pkg/py3\.5/linux\.txt))$
pass_filenames: false
args:
- -v
@ -285,12 +285,14 @@ repos:
- --platform=linux
- --include=requirements/static/pkg/py{py_version}/linux.txt
- --include=requirements/pytest.txt
- --include=requirements/static/ci/git-sources.txt
- --passthrough-line-from-input=^git\+https(.*)$
- requirements/static/ci/linux.in
- id: pip-tools-compile
alias: compile-ci-linux-py3.6-zmq-requirements
name: Linux CI Py3.6 ZeroMQ Requirements
files: ^requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/linux\.in|pkg/py3\.6/linux\.txt))$
files: ^requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/(linux\.in|git-sources\.txt)|pkg/py3\.6/linux\.txt))$
pass_filenames: false
args:
- -v
@ -298,12 +300,14 @@ repos:
- --platform=linux
- --include=requirements/static/pkg/py{py_version}/linux.txt
- --include=requirements/pytest.txt
- --include=requirements/static/ci/git-sources.txt
- --passthrough-line-from-input=^git\+https(.*)$
- requirements/static/ci/linux.in
- id: pip-tools-compile
alias: compile-ci-linux-py3.7-zmq-requirements
name: Linux CI Py3.7 ZeroMQ Requirements
files: ^requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/linux\.in|pkg/py3\.7/linux\.txt))$
files: ^requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/(linux\.in|git-sources\.txt)|pkg/py3\.7/linux\.txt))$
pass_filenames: false
args:
- -v
@ -311,12 +315,14 @@ repos:
- --platform=linux
- --include=requirements/static/pkg/py{py_version}/linux.txt
- --include=requirements/pytest.txt
- --include=requirements/static/ci/git-sources.txt
- --passthrough-line-from-input=^git\+https(.*)$
- requirements/static/ci/linux.in
- id: pip-tools-compile
alias: compile-ci-linux-py3.8-zmq-requirements
name: Linux CI Py3.8 ZeroMQ Requirements
files: ^requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/linux\.in|pkg/py3\.8/linux\.txt))$
files: ^requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/(linux\.in|git-sources\.txt)|pkg/py3\.8/linux\.txt))$
pass_filenames: false
args:
- -v
@ -324,12 +330,14 @@ repos:
- --platform=linux
- --include=requirements/static/pkg/py{py_version}/linux.txt
- --include=requirements/pytest.txt
- --include=requirements/static/ci/git-sources.txt
- --passthrough-line-from-input=^git\+https(.*)$
- requirements/static/ci/linux.in
- id: pip-tools-compile
alias: compile-ci-linux-py3.9-zmq-requirements
name: Linux CI Py3.9 ZeroMQ Requirements
files: ^requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/linux\.in|pkg/py3\.9/linux\.txt))$
files: ^requirements/((base|zeromq|pytest)\.txt|static/((ci|pkg)/(linux\.in|git-sources\.txt)|pkg/py3\.9/linux\.txt))$
pass_filenames: false
args:
- -v
@ -337,6 +345,8 @@ repos:
- --platform=linux
- --include=requirements/static/pkg/py{py_version}/linux.txt
- --include=requirements/pytest.txt
- --include=requirements/static/ci/git-sources.txt
- --passthrough-line-from-input=^git\+https(.*)$
- requirements/static/ci/linux.in
- id: pip-tools-compile

View file

@ -0,0 +1 @@
git+https://github.com/vmware/vsphere-automation-sdk-python.git

View file

@ -2,7 +2,7 @@
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile -o requirements/static/ci/py3.5/linux.txt -v requirements/static/pkg/py3.5/linux.txt requirements/pytest.txt requirements/static/ci/linux.in
# pip-compile -o requirements/static/ci/py3.5/linux.txt -v requirements/static/pkg/py3.5/linux.txt requirements/pytest.txt requirements/static/ci/git-sources.txt requirements/static/ci/linux.in
#
adal==1.2.3 # via azure-datalake-store, msrestazure
apache-libcloud==2.0.0
@ -225,3 +225,5 @@ xmltodict==0.12.0 # via moto
yamlordereddictloader==0.4.0 # via junos-eznc
zc.lockfile==1.4
zipp==0.6.0 # via importlib-metadata, importlib-resources
# Passthrough dependencies from requirements/static/ci/git-sources.txt
git+https://github.com/vmware/vsphere-automation-sdk-python.git

View file

@ -2,7 +2,7 @@
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile -o requirements/static/ci/py3.6/linux.txt -v requirements/static/pkg/py3.6/linux.txt requirements/pytest.txt requirements/static/ci/linux.in
# pip-compile -o requirements/static/ci/py3.6/linux.txt -v requirements/static/pkg/py3.6/linux.txt requirements/pytest.txt requirements/static/ci/git-sources.txt requirements/static/ci/linux.in
#
adal==1.2.3 # via azure-datalake-store, msrestazure
apache-libcloud==2.0.0
@ -229,3 +229,5 @@ xmltodict==0.12.0 # via moto
yamlordereddictloader==0.4.0 # via junos-eznc
zc.lockfile==1.4
zipp==0.6.0 # via importlib-metadata, importlib-resources
# Passthrough dependencies from requirements/static/ci/git-sources.txt
git+https://github.com/vmware/vsphere-automation-sdk-python.git

View file

@ -2,7 +2,7 @@
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile -o requirements/static/ci/py3.7/linux.txt -v requirements/static/pkg/py3.7/linux.txt requirements/pytest.txt requirements/static/ci/linux.in
# pip-compile -o requirements/static/ci/py3.7/linux.txt -v requirements/static/pkg/py3.7/linux.txt requirements/pytest.txt requirements/static/ci/git-sources.txt requirements/static/ci/linux.in
#
adal==1.2.3 # via azure-datalake-store, msrestazure
apache-libcloud==2.0.0
@ -227,3 +227,5 @@ xmltodict==0.12.0 # via moto
yamlordereddictloader==0.4.0 # via junos-eznc
zc.lockfile==1.4
zipp==0.6.0 # via importlib-metadata
# Passthrough dependencies from requirements/static/ci/git-sources.txt
git+https://github.com/vmware/vsphere-automation-sdk-python.git

View file

@ -2,7 +2,7 @@
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile -o requirements/static/ci/py3.8/linux.txt -v requirements/static/pkg/py3.8/linux.txt requirements/pytest.txt requirements/static/ci/linux.in
# pip-compile -o requirements/static/ci/py3.8/linux.txt -v requirements/static/pkg/py3.8/linux.txt requirements/pytest.txt requirements/static/ci/git-sources.txt requirements/static/ci/linux.in
#
adal==1.2.3 # via azure-datalake-store, msrestazure
apache-libcloud==2.0.0
@ -226,3 +226,5 @@ wrapt==1.11.1 # via aws-xray-sdk
xmltodict==0.12.0 # via moto
yamlordereddictloader==0.4.0 # via junos-eznc
zc.lockfile==1.4
# Passthrough dependencies from requirements/static/ci/git-sources.txt
git+https://github.com/vmware/vsphere-automation-sdk-python.git

View file

@ -2,7 +2,7 @@
# This file is autogenerated by pip-compile
# To update, run:
#
# pip-compile -o requirements/static/ci/py3.9/linux.txt -v requirements/static/pkg/py3.9/linux.txt requirements/pytest.txt requirements/static/ci/linux.in
# pip-compile -o requirements/static/ci/py3.9/linux.txt -v requirements/static/pkg/py3.9/linux.txt requirements/pytest.txt requirements/static/ci/git-sources.txt requirements/static/ci/linux.in
#
adal==1.2.3 # via azure-datalake-store, msrestazure
apache-libcloud==2.0.0
@ -226,3 +226,5 @@ wrapt==1.11.1 # via aws-xray-sdk
xmltodict==0.12.0 # via moto
yamlordereddictloader==0.4.0 # via junos-eznc
zc.lockfile==1.4
# Passthrough dependencies from requirements/static/ci/git-sources.txt
git+https://github.com/vmware/vsphere-automation-sdk-python.git

View file

@ -0,0 +1,52 @@
import pytest
import requests
import salt.utils.http
from tests.support.mock import MagicMock, patch
def test_requests_session_verify_ssl_false(ssl_webserver, integration_files_dir):
"""
test salt.utils.http.session when using verify_ssl
"""
for verify in [True, False, None]:
kwargs = {"verify_ssl": verify}
if verify is None:
kwargs.pop("verify_ssl")
if verify is True or verify is None:
with pytest.raises(requests.exceptions.SSLError) as excinfo:
session = salt.utils.http.session(**kwargs)
ret = session.get(ssl_webserver.url("this.txt"))
else:
session = salt.utils.http.session(**kwargs)
ret = session.get(ssl_webserver.url("this.txt"))
assert ret.status_code == 200
def test_session_ca_bundle_verify_false():
"""
test salt.utils.http.session when using
both ca_bunlde and verify_ssl false
"""
ret = salt.utils.http.session(ca_bundle="/tmp/test_bundle", verify_ssl=False)
assert ret is False
def test_session_headers():
"""
test salt.utils.http.session when setting
headers
"""
ret = salt.utils.http.session(headers={"Content-Type": "application/json"})
assert ret.headers["Content-Type"] == "application/json"
def test_session_ca_bundle():
"""
test salt.utils.https.session when setting ca_bundle
"""
fpath = "/tmp/test_bundle"
patch_os = patch("os.path.exists", MagicMock(return_value=True))
with patch_os:
ret = salt.utils.http.session(ca_bundle=fpath)
assert ret.verify == fpath

View file

@ -3160,6 +3160,116 @@ class TestVSphereTagging(TestCase, LoaderModuleMockMixin):
{"Tag attached": self.list_attached_tags_return},
)
def test_get_client(self):
"""
test get_client when verify_ssl and ca_bundle are not passed
"""
mock_client = MagicMock(return_value=None)
patch_client = patch("salt.utils.vmware.get_vsphere_client",
mock_client)
cert_path="/test/ca-certificates.crt"
mock_ca = MagicMock(return_value=cert_path)
patch_ca = patch("salt.utils.http.get_ca_bundle", mock_ca)
mock_details = MagicMock(return_value=self.details)
patch_details = patch.dict(vsphere.__salt__, {"vcenter.get_details":
mock_details})
with patch_client, patch_ca, patch_details:
vsphere._get_client(server='localhost', username='testuser',
password='testpassword')
self.assertEqual(mock_client.call_args_list,
[call(ca_bundle=cert_path,
password='testpassword', server='localhost',
username='testuser', verify_ssl=True)])
self.assertEqual(mock_details.assert_called_once(), None)
self.assertEqual(mock_ca.assert_called_once(), None)
def test_get_client_verify_ssl_false(self):
"""
test get_client when verify_ssl=False is set
"""
details = self.details.copy()
details["verify_ssl"] = False
mock_client = MagicMock(return_value=None)
patch_client = patch("salt.utils.vmware.get_vsphere_client",
mock_client)
cert_path="/test/ca-certificates.crt"
mock_ca = MagicMock(return_value=cert_path)
patch_ca = patch("salt.utils.http.get_ca_bundle", mock_ca)
mock_details = MagicMock(return_value=details)
patch_details = patch.dict(vsphere.__salt__, {"vcenter.get_details":
mock_details})
with patch_client, patch_ca, patch_details:
vsphere._get_client(server='localhost', username='testuser',
password='testpassword')
self.assertEqual(mock_client.call_args_list,
[call(ca_bundle=None,
password='testpassword', server='localhost',
username='testuser', verify_ssl=False)])
self.assertEqual(mock_details.assert_called_once(), None)
self.assertEqual(mock_ca.assert_not_called(), None)
def test_get_client_verify_ssl_false_ca_bundle(self):
"""
test get_client when verify_ssl=False and ca_bundle set
"""
details = self.details.copy()
details["verify_ssl"] = False
details["ca_bundle"] = '/tmp/test'
mock_client = MagicMock(return_value=None)
patch_client = patch("salt.utils.vmware.get_vsphere_client",
mock_client)
cert_path="/test/ca-certificates.crt"
mock_ca = MagicMock(return_value=cert_path)
patch_ca = patch("salt.utils.http.get_ca_bundle", mock_ca)
mock_details = MagicMock(return_value=details)
patch_details = patch.dict(vsphere.__salt__, {"vcenter.get_details":
mock_details})
with patch_client, patch_ca, patch_details:
self.assertFalse(vsphere._get_client(server='localhost', username='testuser',
password='testpassword'))
self.assertEqual(mock_details.assert_called_once(), None)
self.assertEqual(mock_ca.assert_not_called(), None)
def test_get_client_ca_bundle(self):
"""
test get_client when verify_ssl=False and ca_bundle set
"""
cert_path="/test/ca-certificates.crt"
details = self.details.copy()
details["ca_bundle"] = cert_path
mock_client = MagicMock(return_value=None)
patch_client = patch("salt.utils.vmware.get_vsphere_client",
mock_client)
mock_ca = MagicMock(return_value=cert_path)
patch_ca = patch("salt.utils.http.get_ca_bundle", mock_ca)
mock_details = MagicMock(return_value=details)
patch_details = patch.dict(vsphere.__salt__, {"vcenter.get_details":
mock_details})
with patch_client, patch_ca, patch_details:
vsphere._get_client(server='localhost', username='testuser',
password='testpassword')
self.assertEqual(mock_client.call_args_list,
[call(ca_bundle=cert_path,
password='testpassword', server='localhost',
username='testuser', verify_ssl=True)])
self.assertEqual(mock_details.assert_called_once(), None)
self.assertEqual(mock_ca.assert_called_once(), None)
self.assertEqual(mock_ca.call_args_list, [call({'ca_bundle':
cert_path})])
class TestCertificateVerify(TestCase, LoaderModuleMockMixin):
def setup_loader_modules(self):
@ -3219,3 +3329,4 @@ class TestCertificateVerify(TestCase, LoaderModuleMockMixin):
username="root",
verify_ssl=certificate_verify_value,
)

View file

@ -1691,13 +1691,13 @@ class PrivateGetServiceInstanceTestCase(TestCase):
mechanism="sspi",
)
def test_second_attempt_successful_connection(self):
def test_first_attempt_successful_connection_verify_ssl_false(self):
with patch("ssl.SSLContext", MagicMock()), patch(
"ssl._create_unverified_context", MagicMock()
):
exc = vim.fault.HostConnectFault()
exc.msg = "[SSL: CERTIFICATE_VERIFY_FAILED]"
mock_sc = MagicMock(side_effect=[exc, None])
mock_sc = MagicMock(side_effect=[None])
mock_ssl = MagicMock()
with patch("salt.utils.vmware.SmartConnect", mock_sc):
@ -1712,19 +1712,11 @@ class PrivateGetServiceInstanceTestCase(TestCase):
mechanism="sspi",
principal="fake_principal",
domain="fake_domain",
verify_ssl=False,
)
mock_ssl.assert_called_once_with()
calls = [
call(
host="fake_host.fqdn",
user="fake_username",
pwd="fake_password",
protocol="fake_protocol",
port=1,
b64token="fake_token",
mechanism="sspi",
),
call(
host="fake_host.fqdn",
user="fake_username",
@ -1738,21 +1730,18 @@ class PrivateGetServiceInstanceTestCase(TestCase):
]
mock_sc.assert_has_calls(calls)
def test_third_attempt_successful_connection(self):
def test_second_attempt_successful_connection_verify_ssl_false(self):
with patch("ssl.SSLContext", MagicMock()), patch(
"ssl._create_unverified_context", MagicMock()
):
exc = vim.fault.HostConnectFault()
exc.msg = "[SSL: CERTIFICATE_VERIFY_FAILED]"
exc2 = Exception("certificate verify failed")
mock_sc = MagicMock(side_effect=[exc, exc2, None])
exc = Exception("certificate verify failed")
mock_sc = MagicMock(side_effect=[exc, None])
mock_ssl_unverif = MagicMock()
mock_ssl_context = MagicMock()
with patch("salt.utils.vmware.SmartConnect", mock_sc):
with patch("ssl._create_unverified_context", mock_ssl_unverif):
with patch("ssl.SSLContext", mock_ssl_context):
salt.utils.vmware._get_service_instance(
host="fake_host.fqdn",
username="fake_username",
@ -1762,20 +1751,12 @@ class PrivateGetServiceInstanceTestCase(TestCase):
mechanism="sspi",
principal="fake_principal",
domain="fake_domain",
verify_ssl=False
)
mock_ssl_context.assert_called_once_with(ssl.PROTOCOL_TLSv1)
mock_ssl_unverif.assert_called_once_with()
calls = [
call(
host="fake_host.fqdn",
user="fake_username",
pwd="fake_password",
protocol="fake_protocol",
port=1,
b64token="fake_token",
mechanism="sspi",
),
call(
host="fake_host.fqdn",
user="fake_username",
@ -1799,7 +1780,7 @@ class PrivateGetServiceInstanceTestCase(TestCase):
]
mock_sc.assert_has_calls(calls)
def test_first_attempt_unsuccessful_connection_default_error(self):
def test_attempt_unsuccessful_connection_default_error(self):
exc = Exception("Exception")
mock_sc = MagicMock(side_effect=exc)
@ -1816,13 +1797,13 @@ class PrivateGetServiceInstanceTestCase(TestCase):
domain="fake_domain",
)
self.assertEqual(mock_sc.call_count, 1)
self.assertIn(
"Could not connect to host 'fake_host.fqdn'",
excinfo.Exception.message,
)
self.assertEqual(mock_sc.call_count, 1)
self.assertIn(
"Could not connect to host 'fake_host.fqdn'",
excinfo.exception.message,
)
def test_first_attempt_unsuccessful_connection_vim_fault(self):
def test_attempt_unsuccessful_connection_vim_fault(self):
exc = vim.fault.VimFault()
exc.msg = "VimFault"
mock_sc = MagicMock(side_effect=exc)
@ -1840,15 +1821,15 @@ class PrivateGetServiceInstanceTestCase(TestCase):
domain="fake_domain",
)
self.assertEqual(mock_sc.call_count, 1)
self.assertEqual("VimFault", excinfo.Exception.message)
self.assertEqual(mock_sc.call_count, 1)
self.assertEqual("VimFault", excinfo.exception.message)
def test_second_attempt_unsuccsessful_connection_default_error(self):
def test_first_attempt_unsuccsessful_connection_default_error(self):
with patch("ssl.SSLContext", MagicMock()), patch(
"ssl._create_unverified_context", MagicMock()
):
exc = vim.fault.HostConnectFault()
exc.msg = "[SSL: CERTIFICATE_VERIFY_FAILED]"
exc.msg = "certificate verify failed"
exc2 = Exception("Exception")
mock_sc = MagicMock(side_effect=[exc, exc2])
@ -1863,22 +1844,48 @@ class PrivateGetServiceInstanceTestCase(TestCase):
mechanism="sspi",
principal="fake_principal",
domain="fake_domain",
verify_ssl=False,
)
self.assertEqual(mock_sc.call_count, 2)
self.assertIn(
"Could not connect to host 'fake_host.fqdn'",
excinfo.Exception.message,
self.assertEqual(mock_sc.call_count, 2)
self.assertIn(
"Could not connect to host 'fake_host.fqdn'",
excinfo.exception.message
)
def test_first_attempt_unsuccsessful_cannot_vim_fault_verify_ssl(self):
with patch("ssl.SSLContext", MagicMock()), patch(
"ssl._create_unverified_context", MagicMock()
):
exc = vim.fault.VimFault()
exc.msg = "VimFault"
mock_sc = MagicMock(side_effect=[exc])
with patch("salt.utils.vmware.SmartConnect", mock_sc):
with self.assertRaises(VMwareConnectionError) as excinfo:
salt.utils.vmware._get_service_instance(
host="fake_host.fqdn",
username="fake_username",
password="fake_password",
protocol="fake_protocol",
port=1,
mechanism="sspi",
principal="fake_principal",
domain="fake_domain",
verify_ssl=False,
)
def test_second_attempt_unsuccsessful_connection_vim_fault(self):
self.assertEqual(mock_sc.call_count, 1)
self.assertIn("VimFault", excinfo.exception.message)
def test_third_attempt_unsuccessful_connection_detault_error(self):
with patch("ssl.SSLContext", MagicMock()), patch(
"ssl._create_unverified_context", MagicMock()
):
exc = vim.fault.HostConnectFault()
exc.msg = "[SSL: CERTIFICATE_VERIFY_FAILED]"
exc2 = vim.fault.VimFault()
exc2.msg = "VimFault"
exc.msg = "certificate verify failed"
exc2 = Exception("Exception")
mock_sc = MagicMock(side_effect=[exc, exc2])
with patch("salt.utils.vmware.SmartConnect", mock_sc):
@ -1892,20 +1899,19 @@ class PrivateGetServiceInstanceTestCase(TestCase):
mechanism="sspi",
principal="fake_principal",
domain="fake_domain",
verify_ssl=False
)
self.assertEqual(mock_sc.call_count, 2)
self.assertIn("VimFault", excinfo.Exception.message)
self.assertEqual(mock_sc.call_count, 2)
self.assertIn("Could not connect to host 'fake_host.fqdn", excinfo.exception.message)
def test_third_attempt_unsuccessful_connection_detault_error(self):
def test_second_attempt_unsuccessful_connection_vim_fault(self):
with patch("ssl.SSLContext", MagicMock()), patch(
"ssl._create_unverified_context", MagicMock()
):
exc = vim.fault.HostConnectFault()
exc.msg = "[SSL: CERTIFICATE_VERIFY_FAILED]"
exc2 = Exception("certificate verify failed")
exc3 = Exception("Exception")
mock_sc = MagicMock(side_effect=[exc, exc2, exc3])
exc = vim.fault.VimFault()
exc.msg = "VimFault"
mock_sc = MagicMock(side_effect=[exc])
with patch("salt.utils.vmware.SmartConnect", mock_sc):
with self.assertRaises(VMwareConnectionError) as excinfo:
@ -1918,37 +1924,11 @@ class PrivateGetServiceInstanceTestCase(TestCase):
mechanism="sspi",
principal="fake_principal",
domain="fake_domain",
verify_ssl=False
)
self.assertEqual(mock_sc.call_count, 3)
self.assertIn("Exception", excinfo.Exception.message)
def test_third_attempt_unsuccessful_connection_vim_fault(self):
with patch("ssl.SSLContext", MagicMock()), patch(
"ssl._create_unverified_context", MagicMock()
):
exc = vim.fault.HostConnectFault()
exc.msg = "[SSL: CERTIFICATE_VERIFY_FAILED]"
exc2 = Exception("certificate verify failed")
exc3 = vim.fault.VimFault()
exc3.msg = "VimFault"
mock_sc = MagicMock(side_effect=[exc, exc2, exc3])
with patch("salt.utils.vmware.SmartConnect", mock_sc):
with self.assertRaises(VMwareConnectionError) as excinfo:
salt.utils.vmware._get_service_instance(
host="fake_host.fqdn",
username="fake_username",
password="fake_password",
protocol="fake_protocol",
port=1,
mechanism="sspi",
principal="fake_principal",
domain="fake_domain",
)
self.assertEqual(mock_sc.call_count, 3)
self.assertIn("VimFault", excinfo.Exception.message)
self.assertEqual(mock_sc.call_count, 1)
self.assertIn("VimFault", excinfo.exception.message)
@skipIf(not HAS_PYVMOMI, "The 'pyvmomi' library is missing")
@ -1975,7 +1955,8 @@ class GetServiceInstanceTestCase(TestCase):
with patch("salt.utils.vmware._get_service_instance", mock_get_si):
salt.utils.vmware.get_service_instance(host="fake_host")
mock_get_si.assert_called_once_with(
"fake_host", None, None, "https", 443, "userpass", None, None
"fake_host", None, None, "https", 443, "userpass", None, None,
verify_ssl=True
)
def test_no_cached_service_instance_same_host_on_proxy(self):
@ -2002,6 +1983,7 @@ class GetServiceInstanceTestCase(TestCase):
"fake_mechanism",
"fake_principal",
"fake_domain",
verify_ssl=True,
)
def test_cached_service_instance_different_host(self):
@ -2039,6 +2021,7 @@ class GetServiceInstanceTestCase(TestCase):
mechanism="fake_mechanism",
principal="fake_principal",
domain="fake_domain",
verify_ssl=True
)
mock_get_si.assert_called_once_with(
"fake_host",
@ -2049,6 +2032,7 @@ class GetServiceInstanceTestCase(TestCase):
"fake_mechanism",
"fake_principal",
"fake_domain",
verify_ssl=True,
)
def test_unauthenticated_service_instance(self):