salt/tests/unit/roster/test_sshconfig.py
rallytime 6177d6e3c1
Merge branch '2018.3' into 'develop'
Conflicts:
  - doc/ref/configuration/minion.rst
  - salt/client/__init__.py
  - salt/grains/core.py
  - salt/modules/timezone.py
  - tests/support/case.py
  - tests/unit/modules/test_file.py
  - tests/unit/roster/test_sshconfig.py
2018-06-25 11:26:25 -04:00

90 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
# Import Python libs
from __future__ import absolute_import, print_function, unicode_literals
import collections
# Import Salt Testing Libs
from tests.support.mock import (
mock_open,
NO_MOCK,
NO_MOCK_REASON,
patch
)
from tests.support import mixins
from tests.support.unit import skipIf, TestCase
# Import Salt Libs
import salt.roster.sshconfig as sshconfig
_SAMPLE_SSH_CONFIG = """
Host *
User user.mcuserface
Host abc*
IdentityFile ~/.ssh/id_rsa_abc
Host def*
IdentityFile ~/.ssh/id_rsa_def
Host abc.asdfgfdhgjkl.com
HostName 123.123.123.123
Host abc123.asdfgfdhgjkl.com
HostName 123.123.123.124
Host def.asdfgfdhgjkl.com
HostName 234.234.234.234
"""
_TARGET_ABC = collections.OrderedDict([
('user', 'user.mcuserface'),
('priv', '~/.ssh/id_rsa_abc'),
('host', 'abc.asdfgfdhgjkl.com')
])
_TARGET_ABC123 = collections.OrderedDict([
('user', 'user.mcuserface'),
('priv', '~/.ssh/id_rsa_abc'),
('host', 'abc123.asdfgfdhgjkl.com')
])
_TARGET_DEF = collections.OrderedDict([
('user', 'user.mcuserface'),
('priv', '~/.ssh/id_rsa_def'),
('host', 'def.asdfgfdhgjkl.com')
])
_ALL = {
'abc.asdfgfdhgjkl.com': _TARGET_ABC,
'abc123.asdfgfdhgjkl.com': _TARGET_ABC123,
'def.asdfgfdhgjkl.com': _TARGET_DEF
}
_ABC_GLOB = {
'abc.asdfgfdhgjkl.com': _TARGET_ABC,
'abc123.asdfgfdhgjkl.com': _TARGET_ABC123
}
@skipIf(NO_MOCK, NO_MOCK_REASON)
class SSHConfigRosterTestCase(TestCase, mixins.LoaderModuleMockMixin):
def setUp(self):
self.mock_fp = mock_open(read_data=_SAMPLE_SSH_CONFIG)
def setup_loader_modules(self):
return {sshconfig: {}}
def test_all(self):
with patch('salt.utils.files.fopen', self.mock_fp):
with patch('salt.roster.sshconfig._get_ssh_config_file'):
targets = sshconfig.targets('*')
self.assertEqual(targets, _ALL)
def test_abc_glob(self):
with patch('salt.utils.files.fopen', self.mock_fp):
with patch('salt.roster.sshconfig._get_ssh_config_file'):
targets = sshconfig.targets('abc*')
self.assertEqual(targets, _ABC_GLOB)