salt/tests/unit/roster/test_terraform.py

105 lines
3.6 KiB
Python

# -*- coding: utf-8 -*-
'''
unittests for terraform roster
'''
# Import Python libs
from __future__ import absolute_import
import os.path
# Import Salt Testing Libs
from tests.support.mixins import LoaderModuleMockMixin
from tests.support.unit import TestCase, skipIf
from tests.support.runtests import RUNTIME_VARS
from tests.support.mock import (
patch,
NO_MOCK,
NO_MOCK_REASON
)
# Import Salt Libs
import salt.config
import salt.loader
from salt.roster import terraform
@skipIf(NO_MOCK, NO_MOCK_REASON)
class TerraformTestCase(TestCase, LoaderModuleMockMixin):
'''
Test cases for salt.roster.terraform
'''
def setup_loader_modules(self):
opts = salt.config.master_config(os.path.join(RUNTIME_VARS.TMP_CONF_DIR, 'master'))
utils = salt.loader.utils(opts, whitelist=['roster_matcher'])
return {
terraform: {
'__utils__': utils,
'__opts__': {},
}
}
def test_default_output(self):
'''
Test the output of a fixture tfstate file wich contains libvirt
resources.
'''
tfstate = os.path.join(os.path.dirname(__file__), 'terraform.data', 'terraform.tfstate')
pki_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'terraform.data'))
with patch.dict(terraform.__opts__, {'roster_file': tfstate, 'pki_dir': pki_dir}):
expected_result = {
'db0': {
'host': '192.168.122.174',
'user': 'root',
'passwd': 'dbpw',
'tty': True,
'priv': os.path.join(pki_dir, 'ssh/salt-ssh.rsa')},
'db1': {
'host': '192.168.122.190',
'user': 'root',
'passwd': 'dbpw',
'tty': True,
'priv': os.path.join(pki_dir, 'ssh/salt-ssh.rsa')},
'web0': {
'host': '192.168.122.106',
'user': 'root',
'passwd': 'linux',
'timeout': 22,
'priv': os.path.join(pki_dir, 'ssh/salt-ssh.rsa')},
'web1': {
'host': '192.168.122.235',
'user': 'root',
'passwd': 'linux',
'timeout': 22,
'priv': os.path.join(pki_dir, 'ssh/salt-ssh.rsa')}
}
ret = terraform.targets('*')
self.assertDictEqual(expected_result, ret)
def test_default_matching(self):
'''
Test the output of a fixture tfstate file wich contains libvirt
resources using matching
'''
tfstate = os.path.join(os.path.dirname(__file__), 'terraform.data', 'terraform.tfstate')
pki_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'terraform.data'))
with patch.dict(terraform.__opts__, {'roster_file': tfstate, 'pki_dir': pki_dir}):
expected_result = {
'web0': {
'host': '192.168.122.106',
'user': 'root',
'passwd': 'linux',
'timeout': 22,
'priv': os.path.join(pki_dir, 'ssh/salt-ssh.rsa')},
'web1': {
'host': '192.168.122.235',
'user': 'root',
'passwd': 'linux',
'timeout': 22,
'priv': os.path.join(pki_dir, 'ssh/salt-ssh.rsa')}
}
ret = terraform.targets('*web*')
self.assertDictEqual(expected_result, ret)