# -*- 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': 'data', 'legacy': {'parent': 'data'}, 'full': 'data' }, 'b': { 'xml': 'data', 'legacy': {'parent': 'data'}, 'full': {'parent': 'data', 'value': 'data'} }, 'c': { 'xml': 'datadata' '', 'legacy': {'child': ['data', {'child': 'data'}, {'child': None}, {'child': None}]}, 'full': {'child': ['data', {'child': 'data', 'value': 'data'}, {'value': 'data'}, None]} }, 'd': { 'xml': 'data', 'legacy': {'child': 'data'}, 'full': {'child': 'data', 'another': 'data', 'value': 'data'} }, 'e': { 'xml': 'data', 'legacy': {'child': 'data'}, 'full': {'child': {'child': 'data', 'value': 'data'}, 'another': 'data', 'value': 'data'} }, 'f': { 'xml': 'data' 'data', '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'])