Update tests to reflect changes to the SaltCacheLoader

This commit is contained in:
Erik Johnson 2018-02-21 23:20:02 -06:00
parent f9301fcc34
commit e2c4702e0c
No known key found for this signature in database
GPG key ID: 5E5583C437808F3F
2 changed files with 37 additions and 22 deletions

View file

@ -11,7 +11,7 @@ import textwrap
from tests.support.mixins import LoaderModuleMockMixin
from tests.support.paths import TMP
from tests.support.unit import TestCase, skipIf
from tests.support.mock import MagicMock, patch
from tests.support.mock import Mock, MagicMock, patch
# Import Salt libs
import salt.utils
@ -19,6 +19,7 @@ import salt.modules.file as filemod
import salt.modules.config as configmod
import salt.modules.cmdmod as cmdmod
from salt.exceptions import CommandExecutionError
from salt.utils.jinja import SaltCacheLoader
SED_CONTENT = '''test
some
@ -704,12 +705,13 @@ class FileModuleTestCase(TestCase, LoaderModuleMockMixin):
'''
contents = 'This is a {{ template }}.'
defaults = {'template': 'templated file'}
ret = filemod.apply_template_on_contents(
contents,
template='jinja',
context={'opts': filemod.__opts__},
defaults=defaults,
saltenv='base')
with patch.object(SaltCacheLoader, 'file_client', Mock()):
ret = filemod.apply_template_on_contents(
contents,
template='jinja',
context={'opts': filemod.__opts__},
defaults=defaults,
saltenv='base')
self.assertEqual(ret, 'This is a templated file.')
def test_replace_line_in_empty_file(self):

View file

@ -14,7 +14,7 @@ import re
# Import Salt Testing libs
from tests.support.unit import skipIf, TestCase
from tests.support.case import ModuleCase
from tests.support.mock import NO_MOCK, NO_MOCK_REASON, patch, MagicMock
from tests.support.mock import NO_MOCK, NO_MOCK_REASON, patch, MagicMock, Mock
from tests.support.paths import TMP_CONF_DIR
# Import salt libs
@ -65,7 +65,7 @@ class MockFileClient(object):
class TestSaltCacheLoader(TestCase):
def __init__(self, *args, **kws):
TestCase.__init__(self, *args, **kws)
super(TestSaltCacheLoader, self).__init__(*args, **kws)
self.opts = {
'cachedir': TEMPLATES_DIR,
'file_roots': {
@ -83,7 +83,7 @@ class TestSaltCacheLoader(TestCase):
tmp = tempfile.gettempdir()
opts = copy.deepcopy(self.opts)
opts.update({'cachedir': tmp})
loader = SaltCacheLoader(opts, saltenv='test')
loader = self.get_loader(opts=opts, saltenv='test')
assert loader.searchpath == [os.path.join(tmp, 'files', 'test')]
def test_mockclient(self):
@ -91,8 +91,7 @@ class TestSaltCacheLoader(TestCase):
A MockFileClient is used that records all file requests normally sent
to the master.
'''
loader = SaltCacheLoader(self.opts, 'test')
fc = MockFileClient(loader)
loader = self.get_loader(opts=self.opts, saltenv='test')
res = loader.get_source(None, 'hello_simple')
assert len(res) == 3
# res[0] on Windows is unicode and use os.linesep so it works cross OS
@ -100,17 +99,28 @@ class TestSaltCacheLoader(TestCase):
tmpl_dir = os.path.join(TEMPLATES_DIR, 'files', 'test', 'hello_simple')
self.assertEqual(res[1], tmpl_dir)
assert res[2](), 'Template up to date?'
assert len(fc.requests)
self.assertEqual(fc.requests[0]['path'], 'salt://hello_simple')
assert len(loader._file_client.requests)
self.assertEqual(loader._file_client.requests[0]['path'], 'salt://hello_simple')
def get_loader(self, opts=None, saltenv='base'):
'''
Now that we instantiate the client in the __init__, we need to mock it
'''
if opts is None:
opts = self.opts
with patch.object(SaltCacheLoader, 'file_client', Mock()):
loader = SaltCacheLoader(opts, saltenv)
# Create a mock file client and attach it to the loader
MockFileClient(loader)
return loader
def get_test_saltenv(self):
'''
Setup a simple jinja test environment
'''
loader = SaltCacheLoader(self.opts, 'test')
fc = MockFileClient(loader)
loader = self.get_loader(saltenv='test')
jinja = Environment(loader=loader)
return fc, jinja
return loader._file_client, jinja
def test_import(self):
'''
@ -146,7 +156,7 @@ class TestSaltCacheLoader(TestCase):
class TestGetTemplate(TestCase):
def __init__(self, *args, **kws):
TestCase.__init__(self, *args, **kws)
super(TestGetTemplate, self).__init__(*args, **kws)
self.local_opts = {
'cachedir': TEMPLATES_DIR,
'file_client': 'local',
@ -446,7 +456,7 @@ class TestGetTemplate(TestCase):
class TestCustomExtensions(TestCase):
def __init__(self, *args, **kws):
TestCase.__init__(self, *args, **kws)
super(TestCustomExtensions, self).__init__(*args, **kws)
self.local_opts = {
'cachedir': TEMPLATES_DIR,
'file_client': 'local',
@ -1066,7 +1076,8 @@ class TestDotNotationLookup(ModuleCase):
'''
tmpl_str = '''Hello, {{ salt['mocktest.ping']() }}.'''
ret = self.render(tmpl_str)
with patch.object(SaltCacheLoader, 'file_client', Mock()):
ret = self.render(tmpl_str)
self.assertEqual(ret, 'Hello, True.')
def test_dotlookup(self):
@ -1075,7 +1086,8 @@ class TestDotNotationLookup(ModuleCase):
'''
tmpl_str = '''Hello, {{ salt.mocktest.ping() }}.'''
ret = self.render(tmpl_str)
with patch.object(SaltCacheLoader, 'file_client', Mock()):
ret = self.render(tmpl_str)
self.assertEqual(ret, 'Hello, True.')
def test_shadowed_dict_method(self):
@ -1085,5 +1097,6 @@ class TestDotNotationLookup(ModuleCase):
'''
tmpl_str = '''Hello, {{ salt.mockgrains.get('id') }}.'''
ret = self.render(tmpl_str)
with patch.object(SaltCacheLoader, 'file_client', Mock()):
ret = self.render(tmpl_str)
self.assertEqual(ret, 'Hello, jerry.')