Use fixtures when already present

This commit is contained in:
Daniel A. Wozniak 2023-07-31 14:13:38 -07:00 committed by Gareth J. Greenaway
parent 8a97ed53ef
commit 13190ff89a
7 changed files with 72 additions and 111 deletions

View file

@ -48,7 +48,8 @@ def request_client(opts, io_loop):
elif ttype == "tcp":
import salt.transport.tcp
return salt.transport.tcp.TCPReqClient(opts, io_loop=io_loop)
resolver = salt.transport.tcp.Resolver()
return salt.transport.tcp.TCPReqClient(opts, resolver=resolver, io_loop=io_loop)
else:
raise Exception("Channels are only defined for tcp, zeromq")

View file

@ -1730,19 +1730,13 @@ class TCPReqClient(salt.transport.base.RequestClient):
stream = None
while stream is None and (not self._closed and not self._closing):
try:
if self.host and self.port:
stream = await self._tcp_client.connect(
ip_bracket(self.host, strip=True),
self.port,
ssl_options=self.opts.get("ssl"),
**kwargs,
)
else:
sock_type = socket.AF_UNIX
stream = tornado.iostream.IOStream(
socket.socket(sock_type, socket.SOCK_STREAM)
)
await stream.connect(path)
# XXX: Support ipc sockets too
stream = await self._tcp_client.connect(
ip_bracket(self.host, strip=True),
self.port,
ssl_options=self.opts.get("ssl"),
**kwargs,
)
except Exception as exc: # pylint: disable=broad-except
log.warning(
"TCP Message Client encountered an exception while connecting to"

View file

@ -26,7 +26,7 @@ def master_opts(tmp_path):
Default master configuration with relative temporary paths to not require root permissions.
"""
root_dir = tmp_path / "master"
opts = salt.config.DEFAULT_MASTER_OPTS.copy()
opts = salt.config.master_config(None)
opts["__role"] = "master"
opts["root_dir"] = str(root_dir)
for name in ("cachedir", "pki_dir", "sock_dir", "conf_dir"):

View file

@ -47,15 +47,14 @@ def load_auth():
@pytest.fixture
def master_acl_master_opts():
opts = salt.config.master_config(None)
opts["publisher_acl"] = {}
opts["publisher_acl_blacklist"] = {}
opts["master_job_cache"] = ""
opts["sign_pub_messages"] = False
opts["con_cache"] = ""
opts["external_auth"] = {}
opts["external_auth"]["pam"] = {
def master_acl_master_opts(master_opts):
master_opts["publisher_acl"] = {}
master_opts["publisher_acl_blacklist"] = {}
master_opts["master_job_cache"] = ""
master_opts["sign_pub_messages"] = False
master_opts["con_cache"] = ""
master_opts["external_auth"] = {}
master_opts["external_auth"]["pam"] = {
"test_user": [
{"*": ["test.ping"]},
{"minion_glob*": ["foo.bar"]},
@ -93,7 +92,7 @@ def master_acl_master_opts():
},
],
}
yield opts
yield master_opts
@pytest.fixture
@ -150,19 +149,18 @@ def master_acl_valid_load():
@pytest.fixture
def auth_acl_master_opts():
def auth_acl_master_opts(master_opts):
"""
Master options
"""
opts = salt.config.master_config(None)
opts["publisher_acl"] = {}
opts["publisher_acl_blacklist"] = {}
opts["master_job_cache"] = ""
opts["sign_pub_messages"] = False
opts["con_cache"] = ""
opts["external_auth"] = {}
opts["external_auth"] = {"pam": {"test_user": [{"alpha_minion": ["test.ping"]}]}}
yield opts
master_opts["publisher_acl"] = {}
master_opts["publisher_acl_blacklist"] = {}
master_opts["master_job_cache"] = ""
master_opts["sign_pub_messages"] = False
master_opts["con_cache"] = ""
master_opts["external_auth"] = {}
master_opts["external_auth"] = {"pam": {"test_user": [{"alpha_minion": ["test.ping"]}]}}
yield master_opts
@pytest.fixture
@ -372,8 +370,8 @@ async def test_master_publish_group(master_acl_clear_funcs, master_acl_valid_loa
# Request sys.doc
master_acl_valid_load["fun"] = "sys.doc"
# XXX: Of course we won't fire an event if publihs isn't called. If
# sys.dock is there wwhen we publish is that a bug?
# XXX: Of course we won't fire an event if publish isn't called. If
# sys.dock is there when we publish is that a bug?
# await master_acl_clear_funcs.publish(master_acl_valid_load)
@ -457,19 +455,6 @@ async def test_master_minion_glob(master_acl_clear_funcs, master_acl_valid_load)
), "Did not fire {} for minion glob".format(requested_function)
async def test_master_function_glob(master_acl_clear_funcs, master_acl_valid_load):
"""
Test to ensure that we can allow access to a given
set of functions in an execution module as selected
by a glob. ex:
my_user:
my_minion:
'test.*'
"""
# Unimplemented
@pytest.mark.skip_on_windows(reason="PAM eauth not available on Windows")
async def test_args_empty_spec(master_acl_clear_funcs, master_acl_valid_load):
"""
@ -636,10 +621,10 @@ async def test_args_kwargs_match(master_acl_clear_funcs, master_acl_valid_load):
Test simple kwargs restriction allowed.
'test_user_func':
'*':
- test.echo:
kwargs:
text: 'KWMSG:.*'
'*':
- test.echo:
kwargs:
text: 'KWMSG:.*'
"""
_check_minions_return = {"minions": ["some_minions"], "missing": []}
with patch(

View file

@ -7,14 +7,6 @@ import salt.utils.platform
from tests.support.mock import MagicMock, patch
@pytest.fixture
def master_opts():
"""
Master options
"""
yield salt.config.master_config(None)
@pytest.fixture
def maintenence_opts(master_opts):
"""
@ -204,12 +196,11 @@ def test_when_syndic_return_processes_load_then_correct_values_should_be_returne
fake_return.assert_called_with(expected_return)
def test_aes_funcs_white():
def test_aes_funcs_white(master_opts):
"""
Validate methods exposed on AESFuncs exist and are callable
"""
opts = salt.config.master_config(None)
aes_funcs = salt.master.AESFuncs(opts)
aes_funcs = salt.master.AESFuncs(master_opts)
try:
for name in aes_funcs.expose_methods:
func = getattr(aes_funcs, name, None)
@ -233,12 +224,11 @@ def test_transport_methods():
assert foo.get_method("bang") is None
def test_aes_funcs_black():
def test_aes_funcs_black(master_opts):
"""
Validate methods on AESFuncs that should not be called remotely
"""
opts = salt.config.master_config(None)
aes_funcs = salt.master.AESFuncs(opts)
aes_funcs = salt.master.AESFuncs(master_opts)
# Any callable that should not explicitly be allowed should be added
# here.
blacklist_methods = [
@ -284,12 +274,11 @@ def test_aes_funcs_black():
aes_funcs.destroy()
def test_clear_funcs_white():
def test_clear_funcs_white(master_opts):
"""
Validate methods exposed on ClearFuncs exist and are callable
"""
opts = salt.config.master_config(None)
clear_funcs = salt.master.ClearFuncs(opts, {})
clear_funcs = salt.master.ClearFuncs(master_opts, {})
try:
for name in clear_funcs.expose_methods:
func = getattr(clear_funcs, name, None)
@ -298,12 +287,11 @@ def test_clear_funcs_white():
clear_funcs.destroy()
def test_clear_funcs_black():
def test_clear_funcs_black(master_opts):
"""
Validate methods on ClearFuncs that should not be called remotely
"""
opts = salt.config.master_config(None)
clear_funcs = salt.master.ClearFuncs(opts, {})
clear_funcs = salt.master.ClearFuncs(master_opts, {})
blacklist_methods = [
"__class__",
"__delattr__",
@ -365,7 +353,7 @@ def test_runner_token_not_authenticated(clear_funcs):
}
}
ret = clear_funcs.runner({"token": "asdfasdfasdfasdf"})
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -391,7 +379,7 @@ def test_runner_token_authorization_error(clear_funcs):
), patch("salt.auth.LoadAuth.get_auth_list", MagicMock(return_value=[])):
ret = clear_funcs.runner(clear_load)
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -415,7 +403,7 @@ def test_runner_token_salt_invocation_error(clear_funcs):
), patch("salt.auth.LoadAuth.get_auth_list", MagicMock(return_value=["testing"])):
ret = clear_funcs.runner(clear_load)
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -432,7 +420,7 @@ def test_runner_eauth_not_authenticated(clear_funcs):
}
}
ret = clear_funcs.runner({"eauth": "foo"})
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -455,7 +443,7 @@ def test_runner_eauth_authorization_error(clear_funcs):
), patch("salt.auth.LoadAuth.get_auth_list", MagicMock(return_value=[])):
ret = clear_funcs.runner(clear_load)
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -476,7 +464,7 @@ def test_runner_eauth_salt_invocation_error(clear_funcs):
), patch("salt.auth.LoadAuth.get_auth_list", MagicMock(return_value=["testing"])):
ret = clear_funcs.runner(clear_load)
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -491,7 +479,7 @@ def test_runner_user_not_authenticated(clear_funcs):
}
}
ret = clear_funcs.runner({})
assert mock_ret == ret
assert ret == mock_ret
# wheel tests
@ -509,7 +497,7 @@ def test_wheel_token_not_authenticated(clear_funcs):
}
}
ret = clear_funcs.wheel({"token": "asdfasdfasdfasdf"})
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -534,8 +522,7 @@ def test_wheel_token_authorization_error(clear_funcs):
"salt.auth.LoadAuth.authenticate_token", MagicMock(return_value=mock_token)
), patch("salt.auth.LoadAuth.get_auth_list", MagicMock(return_value=[])):
ret = clear_funcs.wheel(clear_load)
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -558,8 +545,7 @@ def test_wheel_token_salt_invocation_error(clear_funcs):
"salt.auth.LoadAuth.authenticate_token", MagicMock(return_value=mock_token)
), patch("salt.auth.LoadAuth.get_auth_list", MagicMock(return_value=["testing"])):
ret = clear_funcs.wheel(clear_load)
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -576,7 +562,7 @@ def test_wheel_eauth_not_authenticated(clear_funcs):
}
}
ret = clear_funcs.wheel({"eauth": "foo"})
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -598,8 +584,7 @@ def test_wheel_eauth_authorization_error(clear_funcs):
"salt.auth.LoadAuth.authenticate_eauth", MagicMock(return_value=True)
), patch("salt.auth.LoadAuth.get_auth_list", MagicMock(return_value=[])):
ret = clear_funcs.wheel(clear_load)
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -619,8 +604,7 @@ def test_wheel_eauth_salt_invocation_error(clear_funcs):
"salt.auth.LoadAuth.authenticate_eauth", MagicMock(return_value=True)
), patch("salt.auth.LoadAuth.get_auth_list", MagicMock(return_value=["testing"])):
ret = clear_funcs.wheel(clear_load)
assert mock_ret == ret
assert ret == mock_ret
@pytest.mark.slow_test
@ -635,7 +619,7 @@ def test_wheel_user_not_authenticated(clear_funcs):
}
}
ret = clear_funcs.wheel({})
assert mock_ret == ret
assert ret == mock_ret
# publish tests
@ -655,7 +639,7 @@ async def test_publish_user_is_blacklisted(clear_funcs):
with patch(
"salt.acl.PublisherACL.user_is_blacklisted", MagicMock(return_value=True)
):
assert mock_ret == await clear_funcs.publish({"user": "foo", "fun": "test.arg"})
assert await clear_funcs.publish({"user": "foo", "fun": "test.arg"}) == mock_ret
@pytest.mark.slow_test
@ -672,7 +656,7 @@ async def test_publish_cmd_blacklisted(clear_funcs):
with patch(
"salt.acl.PublisherACL.user_is_blacklisted", MagicMock(return_value=False)
), patch("salt.acl.PublisherACL.cmd_is_blacklisted", MagicMock(return_value=True)):
assert mock_ret == await clear_funcs.publish({"user": "foo", "fun": "test.arg"})
assert await clear_funcs.publish({"user": "foo", "fun": "test.arg"}) == mock_ret
@pytest.mark.slow_test
@ -695,7 +679,7 @@ async def test_publish_token_not_authenticated(clear_funcs):
with patch(
"salt.acl.PublisherACL.user_is_blacklisted", MagicMock(return_value=False)
), patch("salt.acl.PublisherACL.cmd_is_blacklisted", MagicMock(return_value=False)):
assert mock_ret == await clear_funcs.publish(load)
assert await clear_funcs.publish(load) == mock_ret
@pytest.mark.slow_test
@ -729,7 +713,7 @@ async def test_publish_token_authorization_error(clear_funcs):
), patch(
"salt.auth.LoadAuth.get_auth_list", MagicMock(return_value=[])
):
assert mock_ret == await clear_funcs.publish(load)
assert await clear_funcs.publish(load) == mock_ret
@pytest.mark.slow_test
@ -752,7 +736,7 @@ async def test_publish_eauth_not_authenticated(clear_funcs):
with patch(
"salt.acl.PublisherACL.user_is_blacklisted", MagicMock(return_value=False)
), patch("salt.acl.PublisherACL.cmd_is_blacklisted", MagicMock(return_value=False)):
assert mock_ret == await clear_funcs.publish(load)
assert await clear_funcs.publish(load) == mock_ret
@pytest.mark.slow_test
@ -783,7 +767,7 @@ async def test_publish_eauth_authorization_error(clear_funcs):
), patch(
"salt.auth.LoadAuth.get_auth_list", MagicMock(return_value=[])
):
assert mock_ret == await clear_funcs.publish(load)
assert await clear_funcs.publish(load) == mock_ret
@pytest.mark.slow_test
@ -801,7 +785,7 @@ async def test_publish_user_not_authenticated(clear_funcs):
with patch(
"salt.acl.PublisherACL.user_is_blacklisted", MagicMock(return_value=False)
), patch("salt.acl.PublisherACL.cmd_is_blacklisted", MagicMock(return_value=False)):
assert mock_ret == await clear_funcs.publish(load)
assert await clear_funcs.publish(load) == mock_ret
@pytest.mark.slow_test
@ -833,7 +817,7 @@ async def test_publish_user_authenticated_missing_auth_list(clear_funcs):
), patch(
"salt.utils.master.get_values_of_matching_keys", MagicMock(return_value=[])
):
assert mock_ret == await clear_funcs.publish(load)
assert await clear_funcs.publish(load) == mock_ret
@pytest.mark.slow_test
@ -868,7 +852,7 @@ async def test_publish_user_authorization_error(clear_funcs):
), patch(
"salt.utils.minions.CkMinions.auth_check", MagicMock(return_value=False)
):
assert mock_ret == await clear_funcs.publish(load)
assert await clear_funcs.publish(load) == mock_ret
def test_run_func(maintenence):

View file

@ -23,10 +23,9 @@ def sock_dir(tmp_path):
@pytest.fixture
def minion_config(sock_dir):
minion_config = salt.config.minion_config("")
minion_config["sock_dir"] = sock_dir
yield minion_config
def minion_config(sock_dir, minion_opts):
minion_opts["sock_dir"] = sock_dir
yield minion_opts
def test_ipc_connect_in_async_methods():
@ -55,10 +54,9 @@ async def test_ipc_connect_sync_wrapped(io_loop, tmp_path):
@pytest.fixture
def master_config(sock_dir):
conf = salt.config.master_config("")
conf["sock_dir"] = sock_dir
yield conf
def master_config(sock_dir, master_opts):
master_opts["sock_dir"] = sock_dir
yield master_opts
@pytest.mark.skip_on_windows(reason="Unix socket not available on win32")

View file

@ -182,7 +182,6 @@ async def test_publish_client_connect_server_down(transport, io_loop):
async def test_publish_client_connect_server_comes_up(transport, io_loop):
print(io_loop)
opts = {"master_ip": "127.0.0.1"}
host = "127.0.0.1"
port = 11122
@ -194,7 +193,7 @@ async def test_publish_client_connect_server_comes_up(transport, io_loop):
ctx = zmq.asyncio.Context()
uri = f"tcp://{opts['master_ip']}:{port}"
msg = salt.payload.dumps({"meh": 123})
print(f"send {msg}")
log.debug("TEST - Senging %r", msg)
client = salt.transport.zeromq.PublishClient(
opts, io_loop, host=host, port=port
)