test_custom_module.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. This test can be run in a small test suite with:
  22. $ python tests/runtests.py -C --ssh
  23. '''
  24. # Import Python libs
  25. from __future__ import absolute_import, print_function, unicode_literals
  26. # Import test Libs
  27. from tests.support.case import SSHCase
  28. class SSHCustomModuleTest(SSHCase):
  29. '''
  30. Test sls with custom module functionality using ssh
  31. '''
  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. 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. def test_ssh_sls_with_custom_module(self):
  47. '''
  48. Test sls with custom module work using SSHCase environment
  49. '''
  50. expected = {
  51. "module_|-regular-module_|-test.echo_|-run": 'hello',
  52. "module_|-custom-module_|-test.recho_|-run": 'olleh'}
  53. cmd = self.run_function('state.sls', arg=['custom_module'])
  54. for key in cmd:
  55. if not isinstance(cmd, dict) or not isinstance(cmd[key], dict):
  56. raise AssertionError('{0} is not a proper state return'
  57. .format(cmd))
  58. elif not cmd[key]['result']:
  59. raise AssertionError(cmd[key]['comment'])
  60. cmd_ret = cmd[key]['changes'].get('ret', None)
  61. self.assertEqual(cmd_ret, expected[key])