summaryrefslogtreecommitdiff
path: root/tests/units/TestUtils.py
blob: 4bddb4748bad3195e922567b73bbd71a00ccdaaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# -*- coding: utf-8 -*-

import unittest
import os
import os.path
import tempfile

from nose.plugins.skip import SkipTest

import ansible.utils
import ansible.utils.template as template2

import sys
reload(sys)
sys.setdefaultencoding("utf8") 

class TestUtils(unittest.TestCase):

    #####################################
    ### check_conditional tests

    def test_check_conditional_jinja2_literals(self):
        # see http://jinja.pocoo.org/docs/templates/#literals

        # boolean
        assert(ansible.utils.check_conditional(
            'true', '/', {}) == True)
        assert(ansible.utils.check_conditional(
            'false', '/', {}) == False)
        assert(ansible.utils.check_conditional(
            'True', '/', {}) == True)
        assert(ansible.utils.check_conditional(
            'False', '/', {}) == False)

        # integer
        assert(ansible.utils.check_conditional(
            '1', '/', {}) == True)
        assert(ansible.utils.check_conditional(
            '0', '/', {}) == False)

        # string, beware, a string is truthy unless empty
        assert(ansible.utils.check_conditional(
            '"yes"', '/', {}) == True)
        assert(ansible.utils.check_conditional(
            '"no"', '/', {}) == True)
        assert(ansible.utils.check_conditional(
            '""', '/', {}) == False)


    def test_check_conditional_jinja2_variable_literals(self):
        # see http://jinja.pocoo.org/docs/templates/#literals

        # boolean
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': 'True'}) == True)
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': 'true'}) == True)
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': 'False'}) == False)
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': 'false'}) == False)

        # integer
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': '1'}) == True)
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': 1}) == True)
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': '0'}) == False)
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': 0}) == False)

        # string, beware, a string is truthy unless empty
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': '"yes"'}) == True)
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': '"no"'}) == True)
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': '""'}) == False)

        # Python boolean in Jinja2 expression
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': True}) == True)
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': False}) == False)


    def test_check_conditional_jinja2_expression(self):
        assert(ansible.utils.check_conditional(
            '1 == 1', '/', {}) == True)
        assert(ansible.utils.check_conditional(
            'bar == 42', '/', {'bar': 42}) == True)
        assert(ansible.utils.check_conditional(
            'bar != 42', '/', {'bar': 42}) == False)


    def test_check_conditional_jinja2_expression_in_variable(self):
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': '1 == 1'}) == True)
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': 'bar == 42', 'bar': 42}) == True)
        assert(ansible.utils.check_conditional(
            'var', '/', {'var': 'bar != 42', 'bar': 42}) == False)

    def test_check_conditional_jinja2_unicode(self):
        assert(ansible.utils.check_conditional(
            u'"\u00df"', '/', {}) == True)
        assert(ansible.utils.check_conditional(
            u'var == "\u00df"', '/', {'var': u'\u00df'}) == True)


    #####################################
    ### key-value parsing

    def test_parse_kv_basic(self):
        assert (ansible.utils.parse_kv('a=simple b="with space" c="this=that"') ==
                {'a': 'simple', 'b': 'with space', 'c': 'this=that'})