from src.encoder import XMLParser from src.encoder.records import dump_records, print_records import unittest class TestXMLParserText(unittest.TestCase): def test_parse_simple(self): value = "" r = XMLParser.parse(value) s = print_records(r) self.assertEqual(s, value) def test_parse_basic_case(self): value = "" r = XMLParser.parse(value) s = print_records(r) self.assertEqual(s, value) def test_parse_attribute_basic(self): value = '' r = XMLParser.parse(value) s = print_records(r) self.assertEqual(s, value) def test_parse_complex(self): value = "(&(&(&(servicePrincipalName=*)(UserAccountControl:1.2.840.113556.1.4.803:=512))" r = XMLParser.parse(value) s = print_records(r) self.assertEqual(s, value) class TestXMLParserBinary(unittest.TestCase): def test_bin_dict_basic(self): value = "" expected_result = b"\x56\x08\x01" r = XMLParser.parse(value) result = dump_records(r) self.assertEqual(result, expected_result) def test_bin_dict_complex(self): value = 'action' expected_result = b"\x44\x0a\x1e\x00\x82\x99\x06\x61\x63\x74\x69\x6f\x6e" r = XMLParser.parse(value) result = dump_records(r) self.assertEqual(result, expected_result) def test_bin_dict_complex2(self): """ These are complex cases, see [MC-NBFX]: 2.2.3.31 """ value = "0" expected_result = b"\x40\x09\x49\x6e\x76\x65\x6e\x74\x6f\x72\x79\x81" r = XMLParser.parse(value) result = dump_records(r) self.assertEqual(result, expected_result) def test_bin_dict_complex3(self): """ These are complex cases, see [MC-NBFX]: 2.2.3.31 """ value = "0" expected_result = ( b"\x56\x0e\x40\x09\x49\x6e\x76\x65\x6e\x74\x6f\x72\x79\x81\x01" ) r = XMLParser.parse(value) result = dump_records(r) self.assertEqual(result, expected_result) def test_bin_complex(self): """ These are complex cases, see [MC-NBFX]: 2.2.3.31 """ self.maxDiff = None value = """ action 0 """ expected_result = b"V\x02\x0b\x01a\x06\x0b\x01s\x04V\x08D\n\x1e\x00\x82\x99\x06action\x01V\x0e@\tInventory\x81\x01\x01" r = XMLParser.parse(value) result = dump_records(r) self.assertEqual(result, expected_result)