mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Add ssl argument to MongoClient for mongo returner
This commit is contained in:
parent
4819ad1949
commit
bbf86a67be
2 changed files with 81 additions and 2 deletions
|
@ -107,6 +107,7 @@ def _get_options(ret):
|
|||
attrs = {
|
||||
"host": "host",
|
||||
"port": "port",
|
||||
"ssl": "ssl",
|
||||
"db": "db",
|
||||
"user": "user",
|
||||
"password": "password",
|
||||
|
@ -127,6 +128,7 @@ def _get_conn(ret):
|
|||
|
||||
host = _options.get("host")
|
||||
port = _options.get("port")
|
||||
ssl = _options.get("ssl") or False
|
||||
db_ = _options.get("db")
|
||||
user = _options.get("user")
|
||||
password = _options.get("password")
|
||||
|
@ -136,8 +138,8 @@ def _get_conn(ret):
|
|||
# pymongo versions < 2.3 until then there are
|
||||
# a bunch of these sections that need to be supported
|
||||
|
||||
if PYMONGO_VERSION > Version("2.3"):
|
||||
conn = pymongo.MongoClient(host, port)
|
||||
if PYMONGO_VERSION > _LooseVersion("2.3"):
|
||||
conn = pymongo.MongoClient(host=host, port=port, ssl=ssl)
|
||||
else:
|
||||
conn = pymongo.Connection(host, port)
|
||||
mdb = conn[db_]
|
||||
|
|
77
tests/pytests/unit/returners/test_mongo_return.py
Normal file
77
tests/pytests/unit/returners/test_mongo_return.py
Normal file
|
@ -0,0 +1,77 @@
|
|||
import pytest
|
||||
import salt.returners.mongo_return as mongo_return
|
||||
from tests.support.mock import patch
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def configure_loader_modules():
|
||||
fake_opts = {"mongo.host": "fnord", "mongo.port": "fnordport"}
|
||||
return {
|
||||
mongo_return: {
|
||||
"__opts__": fake_opts,
|
||||
"__salt__": {"config.option": fake_opts.get},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"expected_ssl, use_ssl",
|
||||
[
|
||||
(True, {"fnord.mongo.ssl": True}),
|
||||
(False, {"fnord.mongo.ssl": False}),
|
||||
(False, {"fnord.mongo.ssl": None}),
|
||||
(False, {}),
|
||||
],
|
||||
)
|
||||
def test_mongo_returner_should_correctly_pass_ssl_to_MongoClient_when_ret_is_set(
|
||||
expected_ssl, use_ssl
|
||||
):
|
||||
with patch(
|
||||
"salt.returners.mongo_return.pymongo", create=True
|
||||
) as fake_mongo, patch.object(
|
||||
mongo_return,
|
||||
"PYMONGO_VERSION",
|
||||
mongo_return._LooseVersion("99999"),
|
||||
create=True,
|
||||
), patch.dict(
|
||||
"salt.returners.mongo_return.__opts__",
|
||||
{
|
||||
**use_ssl,
|
||||
**{"fnord.mongo.host": "fnordfnord", "fnord.mongo.port": "fnordfnordport"},
|
||||
},
|
||||
):
|
||||
mongo_return._get_conn(ret={"ret_config": "fnord"})
|
||||
fake_mongo.MongoClient.assert_called_with(
|
||||
host="fnordfnord", port="fnordfnordport", ssl=expected_ssl
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"expected_ssl, use_ssl",
|
||||
[
|
||||
(True, {"mongo.ssl": True}),
|
||||
(False, {"mongo.ssl": False}),
|
||||
(False, {"mongo.ssl": None}),
|
||||
(False, {}),
|
||||
],
|
||||
)
|
||||
def test_mongo_returner_should_correctly_pass_ssl_to_MongoClient(expected_ssl, use_ssl):
|
||||
# Here these fnord.X.Y config options should be ignored
|
||||
with patch(
|
||||
"salt.returners.mongo_return.pymongo", create=True
|
||||
) as fake_mongo, patch.object(
|
||||
mongo_return,
|
||||
"PYMONGO_VERSION",
|
||||
mongo_return._LooseVersion("99999"),
|
||||
create=True,
|
||||
), patch.dict(
|
||||
"salt.returners.mongo_return.__opts__",
|
||||
{
|
||||
**use_ssl,
|
||||
**{"fnord.mongo.host": "fnordfnord", "fnord.mongo.port": "fnordfnordport"},
|
||||
},
|
||||
):
|
||||
mongo_return._get_conn(ret=None)
|
||||
fake_mongo.MongoClient.assert_called_with(
|
||||
host="fnord", port="fnordport", ssl=expected_ssl
|
||||
)
|
Loading…
Add table
Reference in a new issue