# -*- coding: utf-8 -*- # Import python libs from __future__ import absolute_import, print_function, unicode_literals import os # Import Salt Testing libs from tests.support.mixins import LoaderModuleMockMixin from tests.support.unit import TestCase, skipIf from tests.support.mock import NO_MOCK, NO_MOCK_REASON # Import Salt Libs import salt.pillar.saltclass as saltclass base_path = os.path.dirname(os.path.realpath(__file__)) fake_minion_id = 'fake_id' fake_pillar = {} fake_args = ({'path': os.path.abspath( os.path.join(base_path, '..', '..', 'integration', 'files', 'saltclass', 'examples'))}) fake_opts = {} fake_salt = {} fake_grains = {} @skipIf(NO_MOCK, NO_MOCK_REASON) class SaltclassPillarTestCase(TestCase, LoaderModuleMockMixin): ''' Tests for salt.pillar.saltclass ''' def setup_loader_modules(self): return {saltclass: {'__opts__': fake_opts, '__salt__': fake_salt, '__grains__': fake_grains}} def _runner(self, expected_ret): try: full_ret = saltclass.ext_pillar(fake_minion_id, fake_pillar, fake_args) parsed_ret = full_ret['__saltclass__']['classes'] # Fail the test if we hit our NoneType error except TypeError as err: self.fail(err) # Else give the parsed content result self.assertListEqual(parsed_ret, expected_ret) def test_succeeds(self): ret = ['default.users', 'default.motd', 'default.empty', 'default', 'roles.app'] self._runner(ret) @skipIf(NO_MOCK, NO_MOCK_REASON) class SaltclassPillarTestCaseListExpansion(TestCase, LoaderModuleMockMixin): ''' Tests for salt.pillar.saltclass variable expansion in list ''' def setup_loader_modules(self): return {saltclass: {'__opts__': fake_opts, '__salt__': fake_salt, '__grains__': fake_grains }} def _runner(self, expected_ret): full_ret = {} parsed_ret = [] try: full_ret = saltclass.ext_pillar(fake_minion_id, fake_pillar, fake_args) parsed_ret = full_ret['test_list'] # Fail the test if we hit our NoneType error except TypeError as err: self.fail(err) # Else give the parsed content result self.assertListEqual(parsed_ret, expected_ret) def test_succeeds(self): ret = [{'a': '192.168.10.10'}, '192.168.10.20'] self._runner(ret)