salt/tests/integration/states/ssh.py

105 lines
3.8 KiB
Python
Raw Normal View History

2012-05-21 17:45:03 +00:00
'''
Test the ssh_known_hosts state
'''
import os
import shutil
import integration
KNOWN_HOSTS = os.path.join(integration.TMP, 'known_hosts')
GITHUB_FINGERPRINT = '16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48'
2012-05-23 17:45:16 +00:00
GITHUB_IP = '207.97.227.239'
2012-05-21 17:45:03 +00:00
class SSHKnownHostsStateTest(integration.ModuleCase):
'''
Validate the ssh state
'''
def tearDown(self):
if os.path.isfile(KNOWN_HOSTS):
os.remove(KNOWN_HOSTS)
super(SSHKnownHostsStateTest, self).tearDown()
def test_present(self):
'''
ssh_known_hosts.present
'''
2012-05-22 18:13:52 +00:00
kwargs = {'name': 'github.com',
'user': 'root',
'fingerprint': GITHUB_FINGERPRINT,
'config': KNOWN_HOSTS
}
# test first
_ret = self.run_state('ssh_known_hosts.present', test=True, **kwargs)
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
self.assertEqual(ret['result'], None, ret)
# save once, new key appears
2012-05-22 18:13:52 +00:00
_ret = self.run_state('ssh_known_hosts.present', **kwargs)
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
self.assertEqual(ret['changes']['new']['fingerprint'],
GITHUB_FINGERPRINT, ret)
# save twice, no changes
2012-05-22 18:13:52 +00:00
_ret = self.run_state('ssh_known_hosts.present', **kwargs)
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
self.assertEqual(ret['changes'], {}, ret)
2012-05-22 18:13:52 +00:00
# test again, nothing is about to be changed
_ret = self.run_state('ssh_known_hosts.present', test=True, **kwargs)
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
2012-05-21 17:45:03 +00:00
self.assertEqual(ret['result'], None, ret)
2012-05-23 17:45:16 +00:00
# then add a record for IP address
_ret = self.run_state('ssh_known_hosts.present',
2012-05-29 16:40:20 +00:00
**dict(kwargs, name=GITHUB_IP))
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
self.assertEqual(ret['changes']['new']['fingerprint'],
GITHUB_FINGERPRINT, ret)
2012-05-23 17:45:16 +00:00
# record for every host must be available
ret = self.run_function('ssh.get_known_host', ['root', 'github.com'],
config=KNOWN_HOSTS)
self.assertFalse(ret is None)
ret = self.run_function('ssh.get_known_host', ['root', GITHUB_IP],
config=KNOWN_HOSTS)
self.assertFalse(ret is None)
2012-05-21 17:45:03 +00:00
def test_present_fail(self):
# save something wrong
_ret = self.run_state('ssh_known_hosts.present',
name='github.com',
user='root',
fingerprint='aa:bb:cc:dd',
config=KNOWN_HOSTS)
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
2012-05-21 17:45:03 +00:00
self.assertFalse(ret['result'], ret)
def test_absent(self):
'''
ssh_known_hosts.absent
'''
shutil.copyfile(
os.path.join(integration.FILES, 'ssh', 'known_hosts'),
KNOWN_HOSTS)
2012-05-22 18:13:52 +00:00
kwargs = {'name': 'github.com',
'user': 'root',
'config': KNOWN_HOSTS}
# test first
_ret = self.run_state('ssh_known_hosts.absent', test=True, **kwargs)
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
self.assertEqual(ret['result'], None, ret)
# remove once, the key is gone
2012-05-22 18:13:52 +00:00
_ret = self.run_state('ssh_known_hosts.absent', **kwargs)
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
self.assertEqual(ret['changes']['old']['fingerprint'],
GITHUB_FINGERPRINT, ret)
# remove twice, nothing has changed
2012-05-22 18:13:52 +00:00
_ret = self.run_state('ssh_known_hosts.absent', **kwargs)
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
self.assertEqual(ret['changes'], {}, ret)
2012-05-22 18:13:52 +00:00
# test again
_ret = self.run_state('ssh_known_hosts.absent', test=True, **kwargs)
2012-06-04 22:40:34 +00:00
ret = list(_ret.values())[0]
2012-05-21 17:45:03 +00:00
self.assertEqual(ret['result'], None, ret)
2012-05-23 17:45:16 +00:00
if __name__ == '__main__':
from integration import run_tests
run_tests(SSHKnownHostsStateTest)