mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 17:09:03 +00:00
121 lines
3.9 KiB
Python
121 lines
3.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
'''
|
|
:codeauthor: :email:`Rahul Handay <rahulha@saltstack.com>`
|
|
'''
|
|
|
|
# Import Python Libs
|
|
from __future__ import absolute_import
|
|
|
|
# Import Salt Testing Libs
|
|
from salttesting import TestCase, skipIf
|
|
from salttesting.helpers import ensure_in_syspath
|
|
from salttesting.mock import (
|
|
patch,
|
|
NO_MOCK,
|
|
NO_MOCK_REASON
|
|
)
|
|
|
|
ensure_in_syspath('../../')
|
|
|
|
# Import Salt Libs
|
|
from salt.states import test
|
|
|
|
# Globals
|
|
test.__salt__ = {}
|
|
test.__opts__ = {}
|
|
test.__low__ = {'__reqs__': {'watch': ''}}
|
|
|
|
|
|
@skipIf(NO_MOCK, NO_MOCK_REASON)
|
|
class TestTestCase(TestCase):
|
|
'''
|
|
Validate the test state
|
|
'''
|
|
def test_succeed_without_changes(self):
|
|
'''
|
|
Test to returns successful.
|
|
'''
|
|
ret = {'name': 'salt',
|
|
'changes': {},
|
|
'result': True,
|
|
'comment': ''}
|
|
with patch.dict(test.__opts__, {"test": False}):
|
|
ret.update({'comment': 'Success!'})
|
|
self.assertDictEqual(test.succeed_without_changes('salt'), ret)
|
|
|
|
def test_fail_without_changes(self):
|
|
'''
|
|
Test to returns failure.
|
|
'''
|
|
ret = {'name': 'salt',
|
|
'changes': {},
|
|
'result': False,
|
|
'comment': ''}
|
|
with patch.dict(test.__opts__, {"test": False}):
|
|
ret.update({'comment': 'Failure!'})
|
|
self.assertDictEqual(test.fail_without_changes('salt'), ret)
|
|
|
|
def test_succeed_with_changes(self):
|
|
'''
|
|
Test to returns successful and changes is not empty
|
|
'''
|
|
ret = {'name': 'salt',
|
|
'changes': {},
|
|
'result': False,
|
|
'comment': ''}
|
|
with patch.dict(test.__opts__, {"test": False}):
|
|
ret.update({'changes': {'testing': {'new': 'Something pretended'
|
|
' to change',
|
|
'old': 'Unchanged'}},
|
|
'comment': 'Success!', 'result': True})
|
|
self.assertDictEqual(test.succeed_with_changes('salt'), ret)
|
|
|
|
def test_fail_with_changes(self):
|
|
'''
|
|
Test to returns failure and changes is not empty.
|
|
'''
|
|
ret = {'name': 'salt',
|
|
'changes': {},
|
|
'result': False,
|
|
'comment': ''}
|
|
with patch.dict(test.__opts__, {"test": False}):
|
|
ret.update({'changes': {'testing': {'new': 'Something pretended'
|
|
' to change',
|
|
'old': 'Unchanged'}},
|
|
'comment': 'Success!',
|
|
'result': True})
|
|
self.assertDictEqual(test.succeed_with_changes('salt'), ret)
|
|
|
|
def test_configurable_test_state(self):
|
|
'''
|
|
Test of a configurable test state which
|
|
determines its output based on the inputs.
|
|
'''
|
|
ret = {'name': 'salt',
|
|
'changes': {},
|
|
'result': True,
|
|
'comment': ''}
|
|
with patch.dict(test.__opts__, {"test": False}):
|
|
ret.update({'changes': {'testing': {'new': 'Something pretended'
|
|
' to change',
|
|
'old': 'Unchanged'}},
|
|
'comment': 'Success!'})
|
|
self.assertDictEqual(test.succeed_with_changes('salt'), ret)
|
|
|
|
def test_mod_watch(self):
|
|
'''
|
|
Test to call this function via a watch statement
|
|
'''
|
|
ret = {'name': 'salt',
|
|
'changes': {},
|
|
'result': True,
|
|
'comment': ''}
|
|
ret.update({'changes': {'Requisites with changes': []},
|
|
'comment': 'Watch statement fired.'})
|
|
self.assertDictEqual(test.mod_watch('salt'), ret)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
from integration import run_tests
|
|
run_tests(TestTestCase, needs_daemon=False)
|