1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # -*- coding: utf-8 -*-
- # Import Python libs
- from __future__ import absolute_import, print_function, unicode_literals
- # Import Salt Testing libs
- from tests.support.mixins import LoaderModuleMockMixin
- from tests.support.unit import skipIf, TestCase
- # Import Salt libs
- import salt.state
- from salt.config import minion_config
- from salt.template import compile_template_str
- import salt.serializers.yamlex as yamlex
- basic_template = '''#!yamlex
- foo: bar
- '''
- complex_template = '''#!yamlex
- placeholder: {foo: !aggregate {foo: 42}}
- placeholder: {foo: !aggregate {bar: null}}
- placeholder: {foo: !aggregate {baz: inga}}
- '''
- SKIP_MESSAGE = '%s is unavailable, do prerequisites have been met?'
- class RendererMixin(object):
- def render(self, template, opts=None):
- _config = minion_config(None)
- _config['file_client'] = 'local'
- if opts:
- _config.update(opts)
- _state = salt.state.State(_config)
- return compile_template_str(template,
- _state.rend,
- _state.opts['renderer'],
- _state.opts['renderer_blacklist'],
- _state.opts['renderer_whitelist'])
- class RendererTests(TestCase, RendererMixin, LoaderModuleMockMixin):
- def setup_loader_modules(self):
- return {yamlex: {}}
- @skipIf(not yamlex.available, SKIP_MESSAGE % 'yamlex')
- def test_basic(self):
- sls_obj = self.render(basic_template)
- assert sls_obj == {'foo': 'bar'}, sls_obj
- @skipIf(not yamlex.available, SKIP_MESSAGE % 'yamlex')
- def test_complex(self):
- sls_obj = self.render(complex_template)
- assert sls_obj == {
- 'placeholder': {
- 'foo': {
- 'foo': 42,
- 'bar': None,
- 'baz': 'inga'
- }
- }
- }, sls_obj
|