2015-02-04 13:03:35 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
'''
|
|
|
|
:codeauthor: :email:`Rupesh Tare <rupesht@saltstack.com>`
|
|
|
|
'''
|
|
|
|
|
2015-02-04 15:52:33 +00:00
|
|
|
# Import Python Libs
|
|
|
|
from __future__ import absolute_import
|
|
|
|
|
2015-02-04 13:03:35 +00:00
|
|
|
# Import Salt Testing Libs
|
|
|
|
from salttesting import TestCase, skipIf
|
|
|
|
from salttesting.mock import (
|
|
|
|
MagicMock,
|
|
|
|
patch,
|
|
|
|
NO_MOCK,
|
|
|
|
NO_MOCK_REASON
|
|
|
|
)
|
2015-02-04 15:52:33 +00:00
|
|
|
from salttesting.helpers import ensure_in_syspath
|
|
|
|
|
|
|
|
ensure_in_syspath('../../')
|
2015-02-04 13:03:35 +00:00
|
|
|
|
|
|
|
# Import Salt Libs
|
|
|
|
from salt.modules import match
|
2015-02-05 15:06:18 +00:00
|
|
|
import salt.ext.six.moves.builtins as __builtin__ # pylint: disable=import-error,no-name-in-module
|
2015-02-04 13:03:35 +00:00
|
|
|
|
|
|
|
# Globals
|
|
|
|
match.__grains__ = {}
|
|
|
|
match.__salt__ = {}
|
|
|
|
match.__opts__ = {}
|
|
|
|
match.__pillar__ = {}
|
|
|
|
|
|
|
|
|
|
|
|
@skipIf(NO_MOCK, NO_MOCK_REASON)
|
|
|
|
class MatchTestCase(TestCase):
|
|
|
|
'''
|
|
|
|
Test cases for salt.modules.match
|
|
|
|
'''
|
|
|
|
@patch('salt.minion.Matcher')
|
|
|
|
def test_compound(self, mock_matcher):
|
|
|
|
'''
|
|
|
|
Test for Return True if the minion ID matches the given compound target
|
|
|
|
'''
|
|
|
|
with patch.dict(match.__grains__, {'id': 101}):
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock()
|
|
|
|
with patch.object(mock_matcher, 'compound_match', MagicMock()):
|
|
|
|
self.assertTrue(match.compound('tgt'))
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock(return_value='B')
|
|
|
|
self.assertFalse(match.compound('tgt'))
|
|
|
|
|
|
|
|
@patch('salt.minion.Matcher')
|
|
|
|
def test_ipcidr(self, mock_matcher):
|
|
|
|
'''
|
|
|
|
Test for Return True if the minion matches the given ipcidr target
|
|
|
|
'''
|
|
|
|
with patch.dict(match.__grains__, {'id': 101}):
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock()
|
|
|
|
with patch.object(mock_matcher, 'ipcidr_match', MagicMock()):
|
|
|
|
self.assertTrue(match.ipcidr('tgt'))
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock(return_value='B')
|
|
|
|
self.assertFalse(match.ipcidr('tgt'))
|
|
|
|
|
|
|
|
@patch('salt.minion.Matcher')
|
|
|
|
def test_pillar(self, mock_matcher):
|
|
|
|
'''
|
|
|
|
Test for Return True if the minion matches the given pillar target.
|
|
|
|
'''
|
|
|
|
with patch.dict(match.__grains__, {'id': 101}):
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock()
|
|
|
|
with patch.object(mock_matcher, 'pillar_match', MagicMock()):
|
|
|
|
self.assertTrue(match.pillar('tgt'))
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock(return_value='B')
|
|
|
|
self.assertFalse(match.pillar('tgt'))
|
|
|
|
|
|
|
|
@patch('salt.minion.Matcher')
|
|
|
|
def test_data(self, mock_matcher):
|
|
|
|
'''
|
|
|
|
Test for Return True if the minion matches the given data target
|
|
|
|
'''
|
|
|
|
with patch.dict(match.__grains__, {'id': 101}):
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock()
|
|
|
|
with patch.object(mock_matcher, 'data_match', MagicMock()):
|
|
|
|
self.assertTrue(match.data('tgt'))
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock(return_value='B')
|
|
|
|
self.assertFalse(match.data('tgt'))
|
|
|
|
|
|
|
|
@patch('salt.minion.Matcher')
|
|
|
|
def test_grain_pcre(self, mock_matcher):
|
|
|
|
'''
|
|
|
|
Test for Return True if the minion matches the given grain_pcre target
|
|
|
|
'''
|
|
|
|
with patch.dict(match.__grains__, {'id': 101}):
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock()
|
|
|
|
with patch.object(mock_matcher, 'grain_pcre_match', MagicMock()):
|
|
|
|
self.assertTrue(match.grain_pcre('tgt'))
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock(return_value='B')
|
|
|
|
self.assertFalse(match.grain_pcre('tgt'))
|
|
|
|
|
|
|
|
@patch('salt.minion.Matcher')
|
|
|
|
def test_grain(self, mock_matcher):
|
|
|
|
'''
|
|
|
|
Test for Return True if the minion matches the given grain target
|
|
|
|
'''
|
|
|
|
with patch.dict(match.__grains__, {'id': 101}):
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock()
|
|
|
|
with patch.object(mock_matcher, 'grain_match', MagicMock()):
|
|
|
|
self.assertTrue(match.grain('tgt'))
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock(return_value='B')
|
|
|
|
self.assertFalse(match.grain('tgt'))
|
|
|
|
|
|
|
|
@patch('salt.minion.Matcher')
|
|
|
|
def test_list_(self, mock_matcher):
|
|
|
|
'''
|
|
|
|
Test for Return True if the minion ID matches the given list target
|
|
|
|
'''
|
|
|
|
with patch.dict(match.__grains__, {'id': 101}):
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock()
|
|
|
|
with patch.object(mock_matcher, 'list_match', MagicMock()):
|
|
|
|
self.assertTrue(match.list_('tgt'))
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock(return_value='B')
|
|
|
|
self.assertFalse(match.list_('tgt'))
|
|
|
|
|
|
|
|
@patch('salt.minion.Matcher')
|
|
|
|
def test_pcre(self, mock_matcher):
|
|
|
|
'''
|
|
|
|
Test for Return True if the minion ID matches the given pcre target
|
|
|
|
'''
|
|
|
|
mock_matcher.side_effect = MagicMock()
|
|
|
|
with patch.dict(match.__grains__, {'id': 101}):
|
|
|
|
with patch.object(mock_matcher, 'pcre_match', MagicMock()):
|
|
|
|
self.assertTrue(match.pcre('tgt'))
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock(return_value='B')
|
|
|
|
with patch.dict(match.__grains__, {'id': 101}):
|
|
|
|
self.assertFalse(match.pcre('tgt'))
|
|
|
|
|
|
|
|
@patch('salt.minion.Matcher')
|
|
|
|
def test_glob(self, mock_matcher):
|
|
|
|
'''
|
|
|
|
Test for Return True if the minion ID matches the given glob target
|
|
|
|
'''
|
|
|
|
with patch.dict(match.__grains__, {'id': 101}):
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock()
|
|
|
|
with patch.object(mock_matcher, 'glob_match', MagicMock()):
|
|
|
|
self.assertTrue(match.glob('tgt'))
|
|
|
|
|
|
|
|
mock_matcher.side_effect = MagicMock(return_value='B')
|
|
|
|
self.assertFalse(match.glob('tgt'))
|
|
|
|
|
|
|
|
def test_filter_by(self):
|
|
|
|
'''
|
|
|
|
Test for Return the first match in a dictionary of target patterns
|
|
|
|
'''
|
|
|
|
with patch.object(__builtin__, 'dict', MagicMock()):
|
|
|
|
|
|
|
|
self.assertEqual(match.filter_by({'key': 'value'},
|
|
|
|
minion_id=101), 'value')
|
|
|
|
|
|
|
|
self.assertEqual(match.filter_by({'key': 'value'}), 'value')
|
|
|
|
|
|
|
|
self.assertEqual(match.filter_by({}), None)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
from integration import run_tests
|
2015-02-04 15:52:33 +00:00
|
|
|
run_tests(MatchTestCase, needs_daemon=False)
|