salt/tests/unit/states/alias_test.py
2015-04-17 12:00:01 -06:00

171 lines
5.7 KiB
Python

# -*- coding: utf-8 -*-
'''
unit tests for the alias state
'''
# Import Python Libs
from __future__ import absolute_import
# Import Salt Testing Libs
from salttesting import skipIf, TestCase
from salttesting.helpers import ensure_in_syspath
from salttesting.mock import (
NO_MOCK,
NO_MOCK_REASON,
MagicMock,
patch
)
ensure_in_syspath('../../')
# Import Salt Libs
from salt.states import alias
alias.__opts__ = {}
alias.__salt__ = {}
@skipIf(NO_MOCK, NO_MOCK_REASON)
class AliasTest(TestCase):
'''
Validate the alias state
'''
def test_present_has_target(self):
'''
test alias.present has target already
'''
name = 'saltdude'
target = 'dude@saltstack.com'
ret = {'comment': 'Alias {0} already present'.format(name),
'changes': {},
'name': name,
'result': True}
has_target = MagicMock(return_value=True)
with patch.dict(alias.__salt__, {'aliases.has_target': has_target}):
self.assertEqual(alias.present(name, target), ret)
def test_present_has_not_target_test(self):
'''
test alias.present has't got target yet test mode
'''
name = 'saltdude'
target = 'dude@saltstack.com'
ret = {'comment': 'Alias {0} -> {1} is set to be added'.format(name, target),
'changes': {},
'name': name,
'result': None}
has_target = MagicMock(return_value=False)
with patch.dict(alias.__salt__, {'aliases.has_target': has_target}):
with patch.dict(alias.__opts__, {'test': True}):
self.assertEqual(alias.present(name, target), ret)
def test_present_set_target(self):
'''
test alias.present set target
'''
name = 'saltdude'
target = 'dude@saltstack.com'
ret = {'comment': 'Set email alias {0} -> {1}'.format(name, target),
'changes': {'alias': name},
'name': name,
'result': True}
has_target = MagicMock(return_value=False)
set_target = MagicMock(return_value=True)
with patch.dict(alias.__salt__, {'aliases.has_target': has_target}):
with patch.dict(alias.__opts__, {'test': False}):
with patch.dict(alias.__salt__, {'aliases.set_target': set_target}):
self.assertEqual(alias.present(name, target), ret)
def test_present_set_target_failed(self):
'''
test alias.present set target failure
'''
name = 'saltdude'
target = 'dude@saltstack.com'
ret = {'comment': 'Failed to set alias {0} -> {1}'.format(name, target),
'changes': {},
'name': name,
'result': False}
has_target = MagicMock(return_value=False)
set_target = MagicMock(return_value=False)
with patch.dict(alias.__salt__, {'aliases.has_target': has_target}):
with patch.dict(alias.__opts__, {'test': False}):
with patch.dict(alias.__salt__, {'aliases.set_target': set_target}):
self.assertEqual(alias.present(name, target), ret)
def test_absent_already_gone(self):
'''
test alias.absent already gone
'''
name = 'saltdude'
target = 'dude@saltstack.com'
ret = {'comment': 'Alias {0} already absent'.format(name),
'changes': {},
'name': name,
'result': True}
get_target = MagicMock(return_value=False)
with patch.dict(alias.__salt__, {'aliases.get_target': get_target}):
self.assertEqual(alias.absent(name), ret)
def test_absent_not_gone_test(self):
'''
test alias.absent already gone test mode
'''
name = 'saltdude'
target = 'dude@saltstack.com'
ret = {'comment': 'Alias {0} is set to be removed'.format(name),
'changes': {},
'name': name,
'result': None}
get_target = MagicMock(return_value=True)
with patch.dict(alias.__salt__, {'aliases.get_target': get_target}):
with patch.dict(alias.__opts__, {'test': True}):
self.assertEqual(alias.absent(name), ret)
def test_absent_rm_alias(self):
'''
test alias.absent remove alias
'''
name = 'saltdude'
target = 'dude@saltstack.com'
ret = {'comment': 'Removed alias {0}'.format(name),
'changes': {'alias': name},
'name': name,
'result': True}
get_target = MagicMock(return_value=True)
rm_alias = MagicMock(return_value=True)
with patch.dict(alias.__salt__, {'aliases.get_target': get_target}):
with patch.dict(alias.__opts__, {'test': False}):
with patch.dict(alias.__salt__, {'aliases.rm_alias': rm_alias}):
self.assertEqual(alias.absent(name), ret)
def test_absent_rm_alias_failed(self):
'''
test alias.absent remove alias failure
'''
name = 'saltdude'
target = 'dude@saltstack.com'
ret = {'comment': 'Failed to remove alias {0}'.format(name),
'changes': {},
'name': name,
'result': False}
get_target = MagicMock(return_value=True)
rm_alias = MagicMock(return_value=False)
with patch.dict(alias.__salt__, {'aliases.get_target': get_target}):
with patch.dict(alias.__opts__, {'test': False}):
with patch.dict(alias.__salt__, {'aliases.rm_alias': rm_alias}):
self.assertEqual(alias.absent(name), ret)
if __name__ == '__main__':
from integration import run_tests
run_tests(AliasTest, needs_daemon=False)