# -*- coding: utf-8 -*- """ :codeauthor: Daniel Mizyrycki (mzdaniel@glidelink.net) tests.integration.cli.custom_module ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Test salt-ssh sls with a custom module work. $ cat srv/custom_module.sls custom-module: module.run: - name: test.recho - text: hello $ cat srv/_modules/override_test.py __virtualname__ = 'test' def __virtual__(): return __virtualname__ def recho(text): return text[::-1] $ salt-ssh localhost state.sls custom_module localhost: olleh This test can be run in a small test suite with: $ python tests/runtests.py -C --ssh """ from __future__ import absolute_import, print_function, unicode_literals import pytest from tests.support.case import SSHCase from tests.support.helpers import slowTest @pytest.mark.windows_whitelisted class SSHCustomModuleTest(SSHCase): """ Test sls with custom module functionality using ssh """ @slowTest def test_ssh_regular_module(self): """ Test regular module work using SSHCase environment """ expected = "hello" cmd = self.run_function("test.echo", arg=["hello"]) self.assertEqual(expected, cmd) @slowTest def test_ssh_custom_module(self): """ Test custom module work using SSHCase environment """ expected = "hello"[::-1] cmd = self.run_function("test.recho", arg=["hello"]) self.assertEqual(expected, cmd) @slowTest def test_ssh_sls_with_custom_module(self): """ Test sls with custom module work using SSHCase environment """ expected = { "module_|-regular-module_|-test.echo_|-run": "hello", "module_|-custom-module_|-test.recho_|-run": "olleh", } cmd = self.run_function("state.sls", arg=["custom_module"]) for key in cmd: if not isinstance(cmd, dict) or not isinstance(cmd[key], dict): raise AssertionError("{0} is not a proper state return".format(cmd)) elif not cmd[key]["result"]: raise AssertionError(cmd[key]["comment"]) cmd_ret = cmd[key]["changes"].get("ret", None) self.assertEqual(cmd_ret, expected[key])