test_custom_module.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # -*- coding: utf-8 -*-
  2. """
  3. :codeauthor: Daniel Mizyrycki (mzdaniel@glidelink.net)
  4. tests.integration.cli.custom_module
  5. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  6. Test salt-ssh sls with a custom module work.
  7. $ cat srv/custom_module.sls
  8. custom-module:
  9. module.run:
  10. - name: test.recho
  11. - text: hello
  12. $ cat srv/_modules/override_test.py
  13. __virtualname__ = 'test'
  14. def __virtual__():
  15. return __virtualname__
  16. def recho(text):
  17. return text[::-1]
  18. $ salt-ssh localhost state.sls custom_module
  19. localhost:
  20. olleh
  21. """
  22. from __future__ import absolute_import, print_function, unicode_literals
  23. import pytest
  24. from tests.support.case import SSHCase
  25. from tests.support.helpers import slowTest
  26. @pytest.mark.windows_whitelisted
  27. class SSHCustomModuleTest(SSHCase):
  28. """
  29. Test sls with custom module functionality using ssh
  30. """
  31. @slowTest
  32. def test_ssh_regular_module(self):
  33. """
  34. Test regular module work using SSHCase environment
  35. """
  36. expected = "hello"
  37. cmd = self.run_function("test.echo", arg=["hello"])
  38. self.assertEqual(expected, cmd)
  39. @slowTest
  40. def test_ssh_custom_module(self):
  41. """
  42. Test custom module work using SSHCase environment
  43. """
  44. expected = "hello"[::-1]
  45. cmd = self.run_function("test.recho", arg=["hello"])
  46. self.assertEqual(expected, cmd)
  47. @slowTest
  48. def test_ssh_sls_with_custom_module(self):
  49. """
  50. Test sls with custom module work using SSHCase environment
  51. """
  52. expected = {
  53. "module_|-regular-module_|-test.echo_|-run": "hello",
  54. "module_|-custom-module_|-test.recho_|-run": "olleh",
  55. }
  56. cmd = self.run_function("state.sls", arg=["custom_module"])
  57. for key in cmd:
  58. if not isinstance(cmd, dict) or not isinstance(cmd[key], dict):
  59. raise AssertionError("{0} is not a proper state return".format(cmd))
  60. elif not cmd[key]["result"]:
  61. raise AssertionError(cmd[key]["comment"])
  62. cmd_ret = cmd[key]["changes"].get("ret", None)
  63. self.assertEqual(cmd_ret, expected[key])