mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Move ssh state tests to pytest
This commit is contained in:
parent
4deb1b3f9a
commit
c90fc2fdac
5 changed files with 303 additions and 352 deletions
|
@ -85,8 +85,8 @@ salt/modules/rabbitmq.py:
|
|||
- integration.states.test_rabbitmq_vhost
|
||||
|
||||
salt/modules/ssh.py:
|
||||
- unit.states.test_ssh_auth
|
||||
- unit.states.test_ssh_known_hosts
|
||||
- pytests.unit.states.test_ssh_auth
|
||||
- pytests.unit.states.test_ssh_known_hosts
|
||||
|
||||
salt/auth/*:
|
||||
- pytests.integration.cli.test_salt_auth
|
||||
|
|
159
tests/pytests/unit/states/test_ssh_auth.py
Normal file
159
tests/pytests/unit/states/test_ssh_auth.py
Normal file
|
@ -0,0 +1,159 @@
|
|||
"""
|
||||
:codeauthor: Jayesh Kariya <jayeshk@saltstack.com>
|
||||
"""
|
||||
|
||||
import pytest
|
||||
import salt.states.ssh_auth as ssh_auth
|
||||
from tests.support.mock import MagicMock, patch
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def configure_loader_modules():
|
||||
return {ssh_auth: {}}
|
||||
|
||||
|
||||
def test_present():
|
||||
"""
|
||||
Test to verifies that the specified SSH key
|
||||
is present for the specified user.
|
||||
"""
|
||||
name = "sshkeys"
|
||||
user = "root"
|
||||
source = "salt://ssh_keys/id_rsa.pub"
|
||||
|
||||
ret = {"name": name, "changes": {}, "result": True, "comment": ""}
|
||||
|
||||
mock = MagicMock(return_value="exists")
|
||||
mock_data = MagicMock(side_effect=["replace", "new"])
|
||||
with patch.dict(
|
||||
ssh_auth.__salt__, {"ssh.check_key": mock, "ssh.set_auth_key": mock_data}
|
||||
):
|
||||
with patch.dict(ssh_auth.__opts__, {"test": True}):
|
||||
comt = "The authorized host key sshkeys is already " "present for user root"
|
||||
ret.update({"comment": comt})
|
||||
assert ssh_auth.present(name, user, source) == ret
|
||||
|
||||
with patch.dict(ssh_auth.__opts__, {"test": False}):
|
||||
comt = "The authorized host key sshkeys " "for user root was updated"
|
||||
ret.update({"comment": comt, "changes": {name: "Updated"}})
|
||||
assert ssh_auth.present(name, user, source) == ret
|
||||
|
||||
comt = "The authorized host key sshkeys " "for user root was added"
|
||||
ret.update({"comment": comt, "changes": {name: "New"}})
|
||||
assert ssh_auth.present(name, user, source) == ret
|
||||
|
||||
|
||||
def test_absent():
|
||||
"""
|
||||
Test to verifies that the specified SSH key is absent.
|
||||
"""
|
||||
name = "sshkeys"
|
||||
user = "root"
|
||||
source = "salt://ssh_keys/id_rsa.pub"
|
||||
|
||||
ret = {"name": name, "changes": {}, "result": None, "comment": ""}
|
||||
|
||||
mock = MagicMock(
|
||||
side_effect=["User authorized keys file not present", "Key removed"]
|
||||
)
|
||||
mock_up = MagicMock(side_effect=["update", "updated"])
|
||||
with patch.dict(
|
||||
ssh_auth.__salt__, {"ssh.rm_auth_key": mock, "ssh.check_key": mock_up}
|
||||
):
|
||||
with patch.dict(ssh_auth.__opts__, {"test": True}):
|
||||
comt = "Key sshkeys for user root is set for removal"
|
||||
ret.update({"comment": comt})
|
||||
assert ssh_auth.absent(name, user, source) == ret
|
||||
|
||||
comt = "Key is already absent"
|
||||
ret.update({"comment": comt, "result": True})
|
||||
assert ssh_auth.absent(name, user, source) == ret
|
||||
|
||||
with patch.dict(ssh_auth.__opts__, {"test": False}):
|
||||
comt = "User authorized keys file not present"
|
||||
ret.update({"comment": comt, "result": False})
|
||||
assert ssh_auth.absent(name, user, source) == ret
|
||||
|
||||
comt = "Key removed"
|
||||
ret.update({"comment": comt, "result": True, "changes": {name: "Removed"}})
|
||||
assert ssh_auth.absent(name, user, source) == ret
|
||||
|
||||
|
||||
def test_manage():
|
||||
"""
|
||||
Test to verifies that the specified SSH key is absent.
|
||||
"""
|
||||
user = "root"
|
||||
ret = {"name": "", "changes": {}, "result": None, "comment": ""}
|
||||
|
||||
mock_rm = MagicMock(
|
||||
side_effect=["User authorized keys file not present", "Key removed"]
|
||||
)
|
||||
mock_up = MagicMock(side_effect=["update", "updated"])
|
||||
mock_set = MagicMock(side_effect=["replace", "new"])
|
||||
mock_keys = MagicMock(
|
||||
return_value={
|
||||
"somekey": {
|
||||
"enc": "ssh-rsa",
|
||||
"comment": "user@host",
|
||||
"options": [],
|
||||
"fingerprint": "b7",
|
||||
}
|
||||
}
|
||||
)
|
||||
with patch.dict(
|
||||
ssh_auth.__salt__,
|
||||
{
|
||||
"ssh.rm_auth_key": mock_rm,
|
||||
"ssh.set_auth_key": mock_set,
|
||||
"ssh.check_key": mock_up,
|
||||
"ssh.auth_keys": mock_keys,
|
||||
},
|
||||
):
|
||||
with patch("salt.states.ssh_auth.present") as call_mocked_present:
|
||||
mock_present = {"comment": "", "changes": {}, "result": None}
|
||||
call_mocked_present.return_value = mock_present
|
||||
with patch.dict(ssh_auth.__opts__, {"test": True}):
|
||||
assert ssh_auth.manage("sshid", ["somekey"], user) == ret
|
||||
|
||||
comt = "somekey Key set for removal"
|
||||
ret.update({"comment": comt})
|
||||
assert ssh_auth.manage("sshid", [], user) == ret
|
||||
|
||||
with patch("salt.states.ssh_auth.present") as call_mocked_present:
|
||||
mock_present = {"comment": "", "changes": {}, "result": True}
|
||||
call_mocked_present.return_value = mock_present
|
||||
with patch.dict(ssh_auth.__opts__, {"test": False}):
|
||||
ret = {"name": "", "changes": {}, "result": True, "comment": ""}
|
||||
assert ssh_auth.manage("sshid", ["somekey"], user) == ret
|
||||
|
||||
with patch("salt.states.ssh_auth.absent") as call_mocked_absent:
|
||||
mock_absent = {"comment": "Key removed"}
|
||||
call_mocked_absent.return_value = mock_absent
|
||||
ret.update(
|
||||
{
|
||||
"comment": "",
|
||||
"result": True,
|
||||
"changes": {"somekey": "Key removed"},
|
||||
}
|
||||
)
|
||||
assert ssh_auth.manage("sshid", ["addkey"], user) == ret
|
||||
|
||||
# add a key
|
||||
with patch("salt.states.ssh_auth.present") as call_mocked_present:
|
||||
mock_present = {
|
||||
"comment": "The authorized host key newkey for user {} was added".format(
|
||||
user
|
||||
),
|
||||
"changes": {"newkey": "New"},
|
||||
"result": True,
|
||||
}
|
||||
call_mocked_present.return_value = mock_present
|
||||
with patch.dict(ssh_auth.__opts__, {"test": False}):
|
||||
ret = {
|
||||
"name": "",
|
||||
"changes": {"newkey": "New"},
|
||||
"result": True,
|
||||
"comment": "",
|
||||
}
|
||||
assert ssh_auth.manage("sshid", ["newkey", "somekey"], user) == ret
|
142
tests/pytests/unit/states/test_ssh_known_hosts.py
Normal file
142
tests/pytests/unit/states/test_ssh_known_hosts.py
Normal file
|
@ -0,0 +1,142 @@
|
|||
"""
|
||||
:codeauthor: Jayesh Kariya <jayeshk@saltstack.com>
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
import pytest
|
||||
import salt.states.ssh_known_hosts as ssh_known_hosts
|
||||
from tests.support.mock import MagicMock, patch
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def configure_loader_modules():
|
||||
return {ssh_known_hosts: {}}
|
||||
|
||||
|
||||
def test_present():
|
||||
"""
|
||||
Test to verify that the specified host is known by the specified user.
|
||||
"""
|
||||
name = "github.com"
|
||||
user = "root"
|
||||
key = "16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48"
|
||||
fingerprint = [key]
|
||||
|
||||
ret = {"name": name, "changes": {}, "result": False, "comment": ""}
|
||||
|
||||
with patch.dict(ssh_known_hosts.__opts__, {"test": True}):
|
||||
with patch.object(os.path, "isabs", MagicMock(return_value=False)):
|
||||
comt = 'If not specifying a "user", ' 'specify an absolute "config".'
|
||||
ret.update({"comment": comt})
|
||||
assert ssh_known_hosts.present(name) == ret
|
||||
|
||||
comt = 'Specify either "key" or "fingerprint", not both.'
|
||||
ret.update({"comment": comt})
|
||||
assert ssh_known_hosts.present(name, user, key=key, fingerprint=[key]) == ret
|
||||
|
||||
comt = 'Required argument "enc" if using "key" argument.'
|
||||
ret.update({"comment": comt})
|
||||
assert ssh_known_hosts.present(name, user, key=key) == ret
|
||||
|
||||
mock = MagicMock(side_effect=["exists", "add", "update"])
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.check_known_host": mock}):
|
||||
comt = "Host github.com is already in .ssh/known_hosts"
|
||||
ret.update({"comment": comt, "result": True})
|
||||
assert ssh_known_hosts.present(name, user) == ret
|
||||
|
||||
comt = "Key for github.com is set to be" " added to .ssh/known_hosts"
|
||||
ret.update({"comment": comt, "result": None})
|
||||
assert ssh_known_hosts.present(name, user) == ret
|
||||
|
||||
comt = "Key for github.com is set to be " "updated in .ssh/known_hosts"
|
||||
ret.update({"comment": comt})
|
||||
assert ssh_known_hosts.present(name, user) == ret
|
||||
|
||||
with patch.dict(ssh_known_hosts.__opts__, {"test": False}):
|
||||
result = {"status": "exists", "error": ""}
|
||||
mock = MagicMock(return_value=result)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.set_known_host": mock}):
|
||||
comt = "github.com already exists in .ssh/known_hosts"
|
||||
ret.update({"comment": comt, "result": True})
|
||||
assert ssh_known_hosts.present(name, user) == ret
|
||||
|
||||
result = {"status": "error", "error": ""}
|
||||
mock = MagicMock(return_value=result)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.set_known_host": mock}):
|
||||
ret.update({"comment": "", "result": False})
|
||||
assert ssh_known_hosts.present(name, user) == ret
|
||||
|
||||
result = {
|
||||
"status": "updated",
|
||||
"error": "",
|
||||
"new": [{"fingerprint": fingerprint, "key": key}],
|
||||
"old": "",
|
||||
}
|
||||
mock = MagicMock(return_value=result)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.set_known_host": mock}):
|
||||
comt = "{}'s key saved to .ssh/known_hosts (key: {})".format(name, key)
|
||||
ret.update(
|
||||
{
|
||||
"comment": comt,
|
||||
"result": True,
|
||||
"changes": {
|
||||
"new": [{"fingerprint": fingerprint, "key": key}],
|
||||
"old": "",
|
||||
},
|
||||
}
|
||||
)
|
||||
assert ssh_known_hosts.present(name, user, key=key) == ret
|
||||
|
||||
comt = "{}'s key saved to .ssh/known_hosts (fingerprint: {})".format(
|
||||
name, fingerprint
|
||||
)
|
||||
ret.update({"comment": comt})
|
||||
assert ssh_known_hosts.present(name, user) == ret
|
||||
|
||||
|
||||
def test_absent():
|
||||
"""
|
||||
Test to verifies that the specified host is not known by the given user.
|
||||
"""
|
||||
name = "github.com"
|
||||
user = "root"
|
||||
|
||||
ret = {"name": name, "changes": {}, "result": False, "comment": ""}
|
||||
|
||||
with patch.object(os.path, "isabs", MagicMock(return_value=False)):
|
||||
comt = 'If not specifying a "user", ' 'specify an absolute "config".'
|
||||
ret.update({"comment": comt})
|
||||
assert ssh_known_hosts.absent(name) == ret
|
||||
|
||||
mock = MagicMock(return_value=False)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.get_known_host_entries": mock}):
|
||||
comt = "Host is already absent"
|
||||
ret.update({"comment": comt, "result": True})
|
||||
assert ssh_known_hosts.absent(name, user) == ret
|
||||
|
||||
mock = MagicMock(return_value=True)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.get_known_host_entries": mock}):
|
||||
with patch.dict(ssh_known_hosts.__opts__, {"test": True}):
|
||||
comt = "Key for github.com is set to be" " removed from .ssh/known_hosts"
|
||||
ret.update({"comment": comt, "result": None})
|
||||
assert ssh_known_hosts.absent(name, user) == ret
|
||||
|
||||
with patch.dict(ssh_known_hosts.__opts__, {"test": False}):
|
||||
result = {"status": "error", "error": ""}
|
||||
mock = MagicMock(return_value=result)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.rm_known_host": mock}):
|
||||
ret.update({"comment": "", "result": False})
|
||||
assert ssh_known_hosts.absent(name, user) == ret
|
||||
|
||||
result = {"status": "removed", "error": "", "comment": "removed"}
|
||||
mock = MagicMock(return_value=result)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.rm_known_host": mock}):
|
||||
ret.update(
|
||||
{
|
||||
"comment": "removed",
|
||||
"result": True,
|
||||
"changes": {"new": None, "old": True},
|
||||
}
|
||||
)
|
||||
assert ssh_known_hosts.absent(name, user) == ret
|
|
@ -1,189 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
:codeauthor: Jayesh Kariya <jayeshk@saltstack.com>
|
||||
"""
|
||||
# Import Python libs
|
||||
from __future__ import absolute_import, print_function, unicode_literals
|
||||
|
||||
# Import Salt Libs
|
||||
import salt.states.ssh_auth as ssh_auth
|
||||
|
||||
# Import Salt Testing Libs
|
||||
from tests.support.mixins import LoaderModuleMockMixin
|
||||
from tests.support.mock import MagicMock, patch
|
||||
from tests.support.unit import TestCase
|
||||
|
||||
|
||||
class SshAuthTestCase(TestCase, LoaderModuleMockMixin):
|
||||
"""
|
||||
Test cases for salt.states.ssh_auth
|
||||
"""
|
||||
|
||||
def setup_loader_modules(self):
|
||||
return {ssh_auth: {}}
|
||||
|
||||
# 'present' function tests: 1
|
||||
|
||||
def test_present(self):
|
||||
"""
|
||||
Test to verifies that the specified SSH key
|
||||
is present for the specified user.
|
||||
"""
|
||||
name = "sshkeys"
|
||||
user = "root"
|
||||
source = "salt://ssh_keys/id_rsa.pub"
|
||||
|
||||
ret = {"name": name, "changes": {}, "result": True, "comment": ""}
|
||||
|
||||
mock = MagicMock(return_value="exists")
|
||||
mock_data = MagicMock(side_effect=["replace", "new"])
|
||||
with patch.dict(
|
||||
ssh_auth.__salt__, {"ssh.check_key": mock, "ssh.set_auth_key": mock_data}
|
||||
):
|
||||
with patch.dict(ssh_auth.__opts__, {"test": True}):
|
||||
comt = (
|
||||
"The authorized host key sshkeys is already "
|
||||
"present for user root"
|
||||
)
|
||||
ret.update({"comment": comt})
|
||||
self.assertDictEqual(ssh_auth.present(name, user, source), ret)
|
||||
|
||||
with patch.dict(ssh_auth.__opts__, {"test": False}):
|
||||
comt = "The authorized host key sshkeys " "for user root was updated"
|
||||
ret.update({"comment": comt, "changes": {name: "Updated"}})
|
||||
self.assertDictEqual(ssh_auth.present(name, user, source), ret)
|
||||
|
||||
comt = "The authorized host key sshkeys " "for user root was added"
|
||||
ret.update({"comment": comt, "changes": {name: "New"}})
|
||||
self.assertDictEqual(ssh_auth.present(name, user, source), ret)
|
||||
|
||||
# 'absent' function tests: 1
|
||||
|
||||
def test_absent(self):
|
||||
"""
|
||||
Test to verifies that the specified SSH key is absent.
|
||||
"""
|
||||
name = "sshkeys"
|
||||
user = "root"
|
||||
source = "salt://ssh_keys/id_rsa.pub"
|
||||
|
||||
ret = {"name": name, "changes": {}, "result": None, "comment": ""}
|
||||
|
||||
mock = MagicMock(
|
||||
side_effect=["User authorized keys file not present", "Key removed"]
|
||||
)
|
||||
mock_up = MagicMock(side_effect=["update", "updated"])
|
||||
with patch.dict(
|
||||
ssh_auth.__salt__, {"ssh.rm_auth_key": mock, "ssh.check_key": mock_up}
|
||||
):
|
||||
with patch.dict(ssh_auth.__opts__, {"test": True}):
|
||||
comt = "Key sshkeys for user root is set for removal"
|
||||
ret.update({"comment": comt})
|
||||
self.assertDictEqual(ssh_auth.absent(name, user, source), ret)
|
||||
|
||||
comt = "Key is already absent"
|
||||
ret.update({"comment": comt, "result": True})
|
||||
self.assertDictEqual(ssh_auth.absent(name, user, source), ret)
|
||||
|
||||
with patch.dict(ssh_auth.__opts__, {"test": False}):
|
||||
comt = "User authorized keys file not present"
|
||||
ret.update({"comment": comt, "result": False})
|
||||
self.assertDictEqual(ssh_auth.absent(name, user, source), ret)
|
||||
|
||||
comt = "Key removed"
|
||||
ret.update(
|
||||
{"comment": comt, "result": True, "changes": {name: "Removed"}}
|
||||
)
|
||||
self.assertDictEqual(ssh_auth.absent(name, user, source), ret)
|
||||
|
||||
def test_manage(self):
|
||||
"""
|
||||
Test to verifies that the specified SSH key is absent.
|
||||
"""
|
||||
user = "root"
|
||||
ret = {"name": "", "changes": {}, "result": None, "comment": ""}
|
||||
|
||||
mock_rm = MagicMock(
|
||||
side_effect=["User authorized keys file not present", "Key removed"]
|
||||
)
|
||||
mock_up = MagicMock(side_effect=["update", "updated"])
|
||||
mock_set = MagicMock(side_effect=["replace", "new"])
|
||||
mock_keys = MagicMock(
|
||||
return_value={
|
||||
"somekey": {
|
||||
"enc": "ssh-rsa",
|
||||
"comment": "user@host",
|
||||
"options": [],
|
||||
"fingerprint": "b7",
|
||||
}
|
||||
}
|
||||
)
|
||||
with patch.dict(
|
||||
ssh_auth.__salt__,
|
||||
{
|
||||
"ssh.rm_auth_key": mock_rm,
|
||||
"ssh.set_auth_key": mock_set,
|
||||
"ssh.check_key": mock_up,
|
||||
"ssh.auth_keys": mock_keys,
|
||||
},
|
||||
):
|
||||
with patch("salt.states.ssh_auth.present") as call_mocked_present:
|
||||
mock_present = {"comment": "", "changes": {}, "result": None}
|
||||
call_mocked_present.return_value = mock_present
|
||||
with patch.dict(ssh_auth.__opts__, {"test": True}):
|
||||
# test: expected keys found. No chanages
|
||||
self.assertDictEqual(
|
||||
ssh_auth.manage("sshid", ["somekey"], user), ret
|
||||
)
|
||||
|
||||
comt = "somekey Key set for removal"
|
||||
ret.update({"comment": comt})
|
||||
# test: unexpected sshkey found. Should be removed.
|
||||
self.assertDictEqual(ssh_auth.manage("sshid", [], user), ret)
|
||||
|
||||
with patch("salt.states.ssh_auth.present") as call_mocked_present:
|
||||
mock_present = {"comment": "", "changes": {}, "result": True}
|
||||
call_mocked_present.return_value = mock_present
|
||||
with patch.dict(ssh_auth.__opts__, {"test": False}):
|
||||
# expected keys found. No changes
|
||||
ret = {"name": "", "changes": {}, "result": True, "comment": ""}
|
||||
self.assertDictEqual(
|
||||
ssh_auth.manage("sshid", ["somekey"], user), ret
|
||||
)
|
||||
|
||||
with patch("salt.states.ssh_auth.absent") as call_mocked_absent:
|
||||
mock_absent = {"comment": "Key removed"}
|
||||
call_mocked_absent.return_value = mock_absent
|
||||
ret.update(
|
||||
{
|
||||
"comment": "",
|
||||
"result": True,
|
||||
"changes": {"somekey": "Key removed"},
|
||||
}
|
||||
)
|
||||
# unexpected sshkey found. Was removed.
|
||||
self.assertDictEqual(
|
||||
ssh_auth.manage("sshid", ["addkey"], user), ret
|
||||
)
|
||||
|
||||
# add a key
|
||||
with patch("salt.states.ssh_auth.present") as call_mocked_present:
|
||||
mock_present = {
|
||||
"comment": "The authorized host key newkey for user {} was added".format(
|
||||
user
|
||||
),
|
||||
"changes": {"newkey": "New"},
|
||||
"result": True,
|
||||
}
|
||||
call_mocked_present.return_value = mock_present
|
||||
with patch.dict(ssh_auth.__opts__, {"test": False}):
|
||||
# added key newkey
|
||||
ret = {
|
||||
"name": "",
|
||||
"changes": {"newkey": "New"},
|
||||
"result": True,
|
||||
"comment": "",
|
||||
}
|
||||
self.assertDictEqual(
|
||||
ssh_auth.manage("sshid", ["newkey", "somekey"], user), ret
|
||||
)
|
|
@ -1,161 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
:codeauthor: Jayesh Kariya <jayeshk@saltstack.com>
|
||||
"""
|
||||
# Import Python libs
|
||||
from __future__ import absolute_import, print_function, unicode_literals
|
||||
|
||||
import os
|
||||
|
||||
# Import Salt Libs
|
||||
import salt.states.ssh_known_hosts as ssh_known_hosts
|
||||
|
||||
# Import Salt Testing Libs
|
||||
from tests.support.mixins import LoaderModuleMockMixin
|
||||
from tests.support.mock import MagicMock, patch
|
||||
from tests.support.unit import TestCase
|
||||
|
||||
|
||||
class SshKnownHostsTestCase(TestCase, LoaderModuleMockMixin):
|
||||
"""
|
||||
Test cases for salt.states.ssh_known_hosts
|
||||
"""
|
||||
|
||||
def setup_loader_modules(self):
|
||||
return {ssh_known_hosts: {}}
|
||||
|
||||
# 'present' function tests: 1
|
||||
|
||||
def test_present(self):
|
||||
"""
|
||||
Test to verifies that the specified host is known by the specified user.
|
||||
"""
|
||||
name = "github.com"
|
||||
user = "root"
|
||||
key = "16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48"
|
||||
fingerprint = [key]
|
||||
|
||||
ret = {"name": name, "changes": {}, "result": False, "comment": ""}
|
||||
|
||||
with patch.dict(ssh_known_hosts.__opts__, {"test": True}):
|
||||
with patch.object(os.path, "isabs", MagicMock(return_value=False)):
|
||||
comt = 'If not specifying a "user", ' 'specify an absolute "config".'
|
||||
ret.update({"comment": comt})
|
||||
self.assertDictEqual(ssh_known_hosts.present(name), ret)
|
||||
|
||||
comt = 'Specify either "key" or "fingerprint", not both.'
|
||||
ret.update({"comment": comt})
|
||||
self.assertDictEqual(
|
||||
ssh_known_hosts.present(name, user, key=key, fingerprint=[key]), ret
|
||||
)
|
||||
|
||||
comt = 'Required argument "enc" if using "key" argument.'
|
||||
ret.update({"comment": comt})
|
||||
self.assertDictEqual(ssh_known_hosts.present(name, user, key=key), ret)
|
||||
|
||||
mock = MagicMock(side_effect=["exists", "add", "update"])
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.check_known_host": mock}):
|
||||
comt = "Host github.com is already in .ssh/known_hosts"
|
||||
ret.update({"comment": comt, "result": True})
|
||||
self.assertDictEqual(ssh_known_hosts.present(name, user), ret)
|
||||
|
||||
comt = "Key for github.com is set to be" " added to .ssh/known_hosts"
|
||||
ret.update({"comment": comt, "result": None})
|
||||
self.assertDictEqual(ssh_known_hosts.present(name, user), ret)
|
||||
|
||||
comt = "Key for github.com is set to be " "updated in .ssh/known_hosts"
|
||||
ret.update({"comment": comt})
|
||||
self.assertDictEqual(ssh_known_hosts.present(name, user), ret)
|
||||
|
||||
with patch.dict(ssh_known_hosts.__opts__, {"test": False}):
|
||||
result = {"status": "exists", "error": ""}
|
||||
mock = MagicMock(return_value=result)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.set_known_host": mock}):
|
||||
comt = "github.com already exists in .ssh/known_hosts"
|
||||
ret.update({"comment": comt, "result": True})
|
||||
self.assertDictEqual(ssh_known_hosts.present(name, user), ret)
|
||||
|
||||
result = {"status": "error", "error": ""}
|
||||
mock = MagicMock(return_value=result)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.set_known_host": mock}):
|
||||
ret.update({"comment": "", "result": False})
|
||||
self.assertDictEqual(ssh_known_hosts.present(name, user), ret)
|
||||
|
||||
result = {
|
||||
"status": "updated",
|
||||
"error": "",
|
||||
"new": [{"fingerprint": fingerprint, "key": key}],
|
||||
"old": "",
|
||||
}
|
||||
mock = MagicMock(return_value=result)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.set_known_host": mock}):
|
||||
comt = "{0}'s key saved to .ssh/known_hosts (key: {1})".format(
|
||||
name, key
|
||||
)
|
||||
ret.update(
|
||||
{
|
||||
"comment": comt,
|
||||
"result": True,
|
||||
"changes": {
|
||||
"new": [{"fingerprint": fingerprint, "key": key}],
|
||||
"old": "",
|
||||
},
|
||||
}
|
||||
)
|
||||
self.assertDictEqual(ssh_known_hosts.present(name, user, key=key), ret)
|
||||
|
||||
comt = "{0}'s key saved to .ssh/known_hosts (fingerprint: {1})".format(
|
||||
name, fingerprint
|
||||
)
|
||||
ret.update({"comment": comt})
|
||||
self.assertDictEqual(ssh_known_hosts.present(name, user), ret)
|
||||
|
||||
# 'absent' function tests: 1
|
||||
|
||||
def test_absent(self):
|
||||
"""
|
||||
Test to verifies that the specified host is not known by the given user.
|
||||
"""
|
||||
name = "github.com"
|
||||
user = "root"
|
||||
|
||||
ret = {"name": name, "changes": {}, "result": False, "comment": ""}
|
||||
|
||||
with patch.object(os.path, "isabs", MagicMock(return_value=False)):
|
||||
comt = 'If not specifying a "user", ' 'specify an absolute "config".'
|
||||
ret.update({"comment": comt})
|
||||
self.assertDictEqual(ssh_known_hosts.absent(name), ret)
|
||||
|
||||
mock = MagicMock(return_value=False)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.get_known_host_entries": mock}):
|
||||
comt = "Host is already absent"
|
||||
ret.update({"comment": comt, "result": True})
|
||||
self.assertDictEqual(ssh_known_hosts.absent(name, user), ret)
|
||||
|
||||
mock = MagicMock(return_value=True)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.get_known_host_entries": mock}):
|
||||
with patch.dict(ssh_known_hosts.__opts__, {"test": True}):
|
||||
comt = (
|
||||
"Key for github.com is set to be" " removed from .ssh/known_hosts"
|
||||
)
|
||||
ret.update({"comment": comt, "result": None})
|
||||
self.assertDictEqual(ssh_known_hosts.absent(name, user), ret)
|
||||
|
||||
with patch.dict(ssh_known_hosts.__opts__, {"test": False}):
|
||||
result = {"status": "error", "error": ""}
|
||||
mock = MagicMock(return_value=result)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.rm_known_host": mock}):
|
||||
ret.update({"comment": "", "result": False})
|
||||
self.assertDictEqual(ssh_known_hosts.absent(name, user), ret)
|
||||
|
||||
result = {"status": "removed", "error": "", "comment": "removed"}
|
||||
mock = MagicMock(return_value=result)
|
||||
with patch.dict(ssh_known_hosts.__salt__, {"ssh.rm_known_host": mock}):
|
||||
ret.update(
|
||||
{
|
||||
"comment": "removed",
|
||||
"result": True,
|
||||
"changes": {"new": None, "old": True},
|
||||
}
|
||||
)
|
||||
self.assertDictEqual(ssh_known_hosts.absent(name, user), ret)
|
Loading…
Add table
Reference in a new issue