test_custom_module.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. @pytest.mark.windows_whitelisted
  26. class SSHCustomModuleTest(SSHCase):
  27. """
  28. Test sls with custom module functionality using ssh
  29. """
  30. @pytest.mark.slow_test(seconds=30) # Test takes >10 and <=30 seconds
  31. def test_ssh_regular_module(self):
  32. """
  33. Test regular module work using SSHCase environment
  34. """
  35. expected = "hello"
  36. cmd = self.run_function("test.echo", arg=["hello"])
  37. self.assertEqual(expected, cmd)
  38. @pytest.mark.slow_test(seconds=30) # Test takes >10 and <=30 seconds
  39. def test_ssh_custom_module(self):
  40. """
  41. Test custom module work using SSHCase environment
  42. """
  43. expected = "hello"[::-1]
  44. cmd = self.run_function("test.recho", arg=["hello"])
  45. self.assertEqual(expected, cmd)
  46. @pytest.mark.slow_test(seconds=30) # Test takes >10 and <=30 seconds
  47. def test_ssh_sls_with_custom_module(self):
  48. """
  49. Test sls with custom module work using SSHCase environment
  50. """
  51. expected = {
  52. "module_|-regular-module_|-test.echo_|-run": "hello",
  53. "module_|-custom-module_|-test.recho_|-run": "olleh",
  54. }
  55. cmd = self.run_function("state.sls", arg=["custom_module"])
  56. for key in cmd:
  57. if not isinstance(cmd, dict) or not isinstance(cmd[key], dict):
  58. raise AssertionError("{0} is not a proper state return".format(cmd))
  59. elif not cmd[key]["result"]:
  60. raise AssertionError(cmd[key]["comment"])
  61. cmd_ret = cmd[key]["changes"].get("ret", None)
  62. self.assertEqual(cmd_ret, expected[key])