"""Values from requests do not change the XPath queries they are used in.""" import unittest from django.conf import settings if not settings.configured: settings.configure(MAC_OUI="52:54:10") from vrtManager.connection import wvmConnect from vrtManager.network import wvmNetwork from vrtManager.nwfilters import wvmNWFilter CAPS = """64/usr/bin/qemu-x86 q35 /usr/bin/qemu-armvirt""" FILTER = """ """ class FakeConn: def __init__(self): self.defined = None def networkDefineXML(self, xml): self.defined = xml class XPathValueTests(unittest.TestCase): def setUp(self): self.conn = wvmConnect.__new__(wvmConnect) self.conn.get_cap_xml = lambda: CAPS def test_arch_lookups(self): self.assertEqual(self.conn.get_emulator("x86_64"), "/usr/bin/qemu-x86") self.assertEqual(self.conn.get_machine_types("aarch64"), ["virt"]) injected = "nope' or '1'='1" self.assertIsNone(self.conn.get_emulator(injected)) self.assertEqual(self.conn.get_machine_types(injected), []) self.assertEqual(self.conn.get_capabilities(injected), {}) def test_nwfilter_rule_is_matched_by_its_attributes(self): nwf = wvmNWFilter.__new__(wvmNWFilter) nwf._XMLDesc = lambda flags: FILTER # values with quotes or brackets are compared, not parsed as XPath self.assertEqual(nwf.delete_rule("drop'][@priority='2", "in", "1").count("") self.assertEqual(added.count("" with self.assertRaises(ValueError): net.unset_qos("*") net.unset_qos("inbound") self.assertNotIn("inbound", net.wvm.defined) self.assertIn("outbound", net.wvm.defined)