test_custom_module.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. # Import Python libs
  23. from __future__ import absolute_import, print_function, unicode_literals
  24. # Import test Libs
  25. from tests.support.case import SSHCase
  26. class SSHCustomModuleTest(SSHCase):
  27. '''
  28. Test sls with custom module functionality using ssh
  29. '''
  30. def test_ssh_regular_module(self):
  31. '''
  32. Test regular module work using SSHCase environment
  33. '''
  34. expected = 'hello'
  35. cmd = self.run_function('test.echo', arg=['hello'])
  36. self.assertEqual(expected, cmd)
  37. def test_ssh_custom_module(self):
  38. '''
  39. Test custom module work using SSHCase environment
  40. '''
  41. expected = 'hello'[::-1]
  42. cmd = self.run_function('test.recho', arg=['hello'])
  43. self.assertEqual(expected, cmd)
  44. def test_ssh_sls_with_custom_module(self):
  45. '''
  46. Test sls with custom module work using SSHCase environment
  47. '''
  48. expected = {
  49. "module_|-regular-module_|-test.echo_|-run": 'hello',
  50. "module_|-custom-module_|-test.recho_|-run": 'olleh'}
  51. cmd = self.run_function('state.sls', arg=['custom_module'])
  52. for key in cmd:
  53. if not isinstance(cmd, dict) or not isinstance(cmd[key], dict):
  54. raise AssertionError('{0} is not a proper state return'
  55. .format(cmd))
  56. elif not cmd[key]['result']:
  57. raise AssertionError(cmd[key]['comment'])
  58. cmd_ret = cmd[key]['changes'].get('ret', None)
  59. self.assertEqual(cmd_ret, expected[key])