# -*- coding: utf-8 -*- # Import Python libs from __future__ import absolute_import import os import os.path import tempfile # Import Salt Testing libs from salttesting import TestCase from salttesting.helpers import ensure_in_syspath ensure_in_syspath('../') # Import Salt libs import integration import salt.config from salt.state import HighState class HighStateTestCase(TestCase): def setUp(self): self.root_dir = tempfile.mkdtemp(dir=integration.TMP) self.state_tree_dir = os.path.join(self.root_dir, 'state_tree') self.cache_dir = os.path.join(self.root_dir, 'cachedir') if not os.path.isdir(self.root_dir): os.makedirs(self.root_dir) if not os.path.isdir(self.state_tree_dir): os.makedirs(self.state_tree_dir) if not os.path.isdir(self.cache_dir): os.makedirs(self.cache_dir) self.config = salt.config.minion_config(None) self.config['root_dir'] = self.root_dir self.config['state_events'] = False self.config['id'] = 'match' self.config['file_client'] = 'local' self.config['file_roots'] = dict(base=[self.state_tree_dir]) self.config['cachedir'] = self.cache_dir self.config['test'] = False self.highstate = HighState(self.config) self.highstate.push_active() def tearDown(self): self.highstate.pop_active() def test_top_matches_with_list(self): top = {'env': {'match': ['state1', 'state2'], 'nomatch': ['state3']}} matches = self.highstate.top_matches(top) self.assertEqual(matches, {'env': ['state1', 'state2']}) def test_top_matches_with_string(self): top = {'env': {'match': 'state1', 'nomatch': 'state2'}} matches = self.highstate.top_matches(top) self.assertEqual(matches, {'env': ['state1']}) def test_matches_whitelist(self): matches = {'env': ['state1', 'state2', 'state3']} matches = self.highstate.matches_whitelist(matches, ['state2']) self.assertEqual(matches, {'env': ['state2']}) def test_matches_whitelist_with_string(self): matches = {'env': ['state1', 'state2', 'state3']} matches = self.highstate.matches_whitelist(matches, 'state2,state3') self.assertEqual(matches, {'env': ['state2', 'state3']}) if __name__ == '__main__': from integration import run_tests run_tests(HighStateTestCase, needs_daemon=False)