File: test_xmlutil.py

package info (click to toggle)
salt 2018.3.4%2Bdfsg1-6%2Bdeb10u3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 79,320 kB
  • sloc: python: 729,265; javascript: 8,732; sh: 8,075; xml: 680; makefile: 232; sql: 97; ansic: 13
file content (148 lines) | stat: -rw-r--r-- 6,047 bytes parent folder | download
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# -*- coding: utf-8 -*-
'''
    tests.unit.xmlutil_test
    ~~~~~~~~~~~~~~~~~~~~
'''
from __future__ import absolute_import, print_function, unicode_literals
# Import Salt Testing libs
from tests.support.unit import TestCase

# Import Salt libs
from salt._compat import ElementTree as ET
import salt.utils.xmlutil as xml


class XMLUtilTestCase(TestCase):
    '''
    Tests that salt.utils.xmlutil properly parses XML data and returns as a properly formatted
    dictionary. The default method of parsing will ignore attributes and return only the child
    items. The full method will include parsing attributes.
    '''

    def setUp(self):

        # Populate our use cases for specific XML formats.
        self.cases = {
            'a': {
                'xml': '<parent>data</parent>',
                'legacy': {'parent': 'data'},
                'full': 'data'
            },
            'b': {
                'xml': '<parent value="data">data</parent>',
                'legacy': {'parent': 'data'},
                'full': {'parent': 'data', 'value': 'data'}
            },
            'c': {
                'xml': '<parent><child>data</child><child value="data">data</child>'
                       '<child value="data"/><child/></parent>',
                'legacy': {'child': ['data', {'child': 'data'}, {'child': None}, {'child': None}]},
                'full': {'child': ['data', {'child': 'data', 'value': 'data'}, {'value': 'data'}, None]}
            },
            'd': {
                'xml': '<parent value="data" another="data"><child>data</child></parent>',
                'legacy': {'child': 'data'},
                'full': {'child': 'data', 'another': 'data', 'value': 'data'}
            },
            'e': {
                'xml': '<parent value="data" another="data"><child value="data">data</child></parent>',
                'legacy': {'child': 'data'},
                'full': {'child': {'child': 'data', 'value': 'data'}, 'another': 'data', 'value': 'data'}
            },
            'f': {
                'xml': '<parent><child><sub-child value="data">data</sub-child></child>'
                       '<child>data</child></parent>',
                'legacy': {'child': [{'sub-child': 'data'}, {'child': 'data'}]},
                'full': {'child': [{'sub-child': {'value': 'data', 'sub-child': 'data'}}, 'data']}
            },
        }

    def test_xml_case_a(self):
        xmldata = ET.fromstring(self.cases['a']['xml'])
        defaultdict = xml.to_dict(xmldata)
        self.assertEqual(defaultdict, self.cases['a']['legacy'])

    def test_xml_case_a_legacy(self):
        xmldata = ET.fromstring(self.cases['a']['xml'])
        defaultdict = xml.to_dict(xmldata, False)
        self.assertEqual(defaultdict, self.cases['a']['legacy'])

    def test_xml_case_a_full(self):
        xmldata = ET.fromstring(self.cases['a']['xml'])
        defaultdict = xml.to_dict(xmldata, True)
        self.assertEqual(defaultdict, self.cases['a']['full'])

    def test_xml_case_b(self):
        xmldata = ET.fromstring(self.cases['b']['xml'])
        defaultdict = xml.to_dict(xmldata)
        self.assertEqual(defaultdict, self.cases['b']['legacy'])

    def test_xml_case_b_legacy(self):
        xmldata = ET.fromstring(self.cases['b']['xml'])
        defaultdict = xml.to_dict(xmldata, False)
        self.assertEqual(defaultdict, self.cases['b']['legacy'])

    def test_xml_case_b_full(self):
        xmldata = ET.fromstring(self.cases['b']['xml'])
        defaultdict = xml.to_dict(xmldata, True)
        self.assertEqual(defaultdict, self.cases['b']['full'])

    def test_xml_case_c(self):
        xmldata = ET.fromstring(self.cases['c']['xml'])
        defaultdict = xml.to_dict(xmldata)
        self.assertEqual(defaultdict, self.cases['c']['legacy'])

    def test_xml_case_c_legacy(self):
        xmldata = ET.fromstring(self.cases['c']['xml'])
        defaultdict = xml.to_dict(xmldata, False)
        self.assertEqual(defaultdict, self.cases['c']['legacy'])

    def test_xml_case_c_full(self):
        xmldata = ET.fromstring(self.cases['c']['xml'])
        defaultdict = xml.to_dict(xmldata, True)
        self.assertEqual(defaultdict, self.cases['c']['full'])

    def test_xml_case_d(self):
        xmldata = ET.fromstring(self.cases['d']['xml'])
        defaultdict = xml.to_dict(xmldata)
        self.assertEqual(defaultdict, self.cases['d']['legacy'])

    def test_xml_case_d_legacy(self):
        xmldata = ET.fromstring(self.cases['d']['xml'])
        defaultdict = xml.to_dict(xmldata, False)
        self.assertEqual(defaultdict, self.cases['d']['legacy'])

    def test_xml_case_d_full(self):
        xmldata = ET.fromstring(self.cases['d']['xml'])
        defaultdict = xml.to_dict(xmldata, True)
        self.assertEqual(defaultdict, self.cases['d']['full'])

    def test_xml_case_e(self):
        xmldata = ET.fromstring(self.cases['e']['xml'])
        defaultdict = xml.to_dict(xmldata)
        self.assertEqual(defaultdict, self.cases['e']['legacy'])

    def test_xml_case_e_legacy(self):
        xmldata = ET.fromstring(self.cases['e']['xml'])
        defaultdict = xml.to_dict(xmldata, False)
        self.assertEqual(defaultdict, self.cases['e']['legacy'])

    def test_xml_case_e_full(self):
        xmldata = ET.fromstring(self.cases['e']['xml'])
        defaultdict = xml.to_dict(xmldata, True)
        self.assertEqual(defaultdict, self.cases['e']['full'])

    def test_xml_case_f(self):
        xmldata = ET.fromstring(self.cases['f']['xml'])
        defaultdict = xml.to_dict(xmldata)
        self.assertEqual(defaultdict, self.cases['f']['legacy'])

    def test_xml_case_f_legacy(self):
        xmldata = ET.fromstring(self.cases['f']['xml'])
        defaultdict = xml.to_dict(xmldata, False)
        self.assertEqual(defaultdict, self.cases['f']['legacy'])

    def test_xml_case_f_full(self):
        xmldata = ET.fromstring(self.cases['f']['xml'])
        defaultdict = xml.to_dict(xmldata, True)
        self.assertEqual(defaultdict, self.cases['f']['full'])