12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- # coding: utf-8
- # Python libs
- from __future__ import absolute_import
- from collections import namedtuple
- # Salt testing libs
- from tests.support.unit import skipIf, TestCase
- from tests.support.mock import NO_MOCK, NO_MOCK_REASON, patch, MagicMock
- from tests.support.mixins import LoaderModuleMockMixin
- # Salt libs
- import salt.beacons.salt_proxy as salt_proxy
- PATCH_OPTS = dict(autospec=True, spec_set=True)
- FakeProcess = namedtuple('Process', 'cmdline pid')
- @skipIf(NO_MOCK, NO_MOCK_REASON)
- class SaltProxyBeaconTestCase(TestCase, LoaderModuleMockMixin):
- '''
- Test case for salt.beacons.[s]
- '''
- def setup_loader_modules(self):
- return {
- salt_proxy: {
- '__context__': {},
- '__salt__': {},
- }
- }
- def test_non_list_config(self):
- config = {}
- ret = salt_proxy.validate(config)
- self.assertEqual(ret, (False, 'Configuration for salt_proxy beacon'
- ' must be a list.'))
- def test_empty_config(self):
- config = [{}]
- ret = salt_proxy.validate(config)
- self.assertEqual(ret, (False, 'Configuration for salt_proxy '
- 'beacon requires proxies.'))
- def test_salt_proxy_running(self):
- mock = MagicMock(return_value={'result': True})
- with patch.dict(salt_proxy.__salt__, {'salt_proxy.is_running': mock}):
- config = [{'proxies': {'p8000': ''}}]
- ret = salt_proxy.validate(config)
- self.assertEqual(ret, (True, 'Valid beacon configuration'))
- ret = salt_proxy.beacon(config)
- self.assertEqual(ret, [{'p8000': 'Proxy p8000 is already running'}])
- def test_salt_proxy_not_running(self):
- is_running_mock = MagicMock(return_value={'result': False})
- configure_mock = MagicMock(return_value={'result': True,
- 'changes': {'new': 'Salt Proxy: Started proxy process for p8000',
- 'old': []}})
- cmd_run_mock = MagicMock(return_value={'pid': 1000,
- 'retcode': 0,
- 'stderr': '',
- 'stdout': ''})
- with patch.dict(salt_proxy.__salt__,
- {'salt_proxy.is_running': is_running_mock}), \
- patch.dict(salt_proxy.__salt__,
- {'salt_proxy.configure_proxy': configure_mock}), \
- patch.dict(salt_proxy.__salt__,
- {'cmd.run_all': cmd_run_mock}):
- config = [{'proxies': {'p8000': ''}}]
- ret = salt_proxy.validate(config)
- self.assertEqual(ret, (True, 'Valid beacon configuration'))
- ret = salt_proxy.beacon(config)
- self.assertEqual(ret, [{'p8000': 'Proxy p8000 was started'}])
|