diff options
author | Christian Heimes <christian@cheimes.de> | 2013-02-15 11:16:17 +0100 |
---|---|---|
committer | Christian Heimes <christian@cheimes.de> | 2013-02-15 11:16:17 +0100 |
commit | ccd9fd997cc566b076f7baf6c507a906d3932e9e (patch) | |
tree | 6a128aca8819f3b79e544be2e3d2ba733f590c4a | |
parent | a0be4dc3f7a3b836263f4d5b49c3f9add735afac (diff) | |
download | defusedxml-ccd9fd997cc566b076f7baf6c507a906d3932e9e.tar.gz |
tests for iterparse
-rw-r--r-- | tests.py | 37 |
1 files changed, 26 insertions, 11 deletions
@@ -15,7 +15,7 @@ from defusedxml import (DefusedXmlException, DTDForbidden, EntitiesForbidden, from defusedxml.common import PY3, PY26, PY31 if PY3: - from xmlrpclib.client import ExpatParser as XmlRpcParser + from xmlrpc.client import ExpatParser as XmlRpcParser else: from xmlrpclib import ExpatParser as XmlRpcParser @@ -116,7 +116,7 @@ class BaseTests(DefusedTestCase): external_ref_exception = ExternalReferenceForbidden cyclic_error = None - + iterparse = None def test_simple_parse(self): self.parse(self.xml_simple) @@ -142,6 +142,14 @@ class BaseTests(DefusedTestCase): self.assertRaises(EntitiesForbidden, self.parseString, self.get_content(self.xml_external)) + if self.iterparse: + self.assertRaises(EntitiesForbidden, self.iterparse, + self.xml_bomb) + self.assertRaises(EntitiesForbidden, self.iterparse, + self.xml_quadratic) + self.assertRaises(EntitiesForbidden, self.iterparse, + self.xml_external) + def test_entity_cycle(self): self.assertRaises(self.cyclic_error, self.parse, self.xml_cyclic, forbid_entities=False) @@ -169,6 +177,17 @@ class BaseTests(DefusedTestCase): self.get_content(self.xml_dtd), forbid_dtd=True) + if self.iterparse: + self.assertRaises(DTDForbidden, self.iterparse, + self.xml_bomb, forbid_dtd=True) + self.assertRaises(DTDForbidden, self.iterparse, + self.xml_quadratic, forbid_dtd=True) + self.assertRaises(DTDForbidden, self.iterparse, + self.xml_external, forbid_dtd=True) + self.assertRaises(DTDForbidden, self.iterparse, + self.xml_dtd, forbid_dtd=True) + + def test_dtd_with_external_ref(self): if self.dtd_external_ref: self.assertRaises(self.external_ref_exception, self.parse, @@ -213,8 +232,8 @@ class TestDefusedElementTree(BaseTests): tree = self.module.fromstring(xmlstring, **kwargs) return self.module.tostring(tree) - def iterparse(self, source, events=None): - return self.module.iterparse(source, events) + def iterparse(self, source, **kwargs): + return list(self.module.iterparse(source, **kwargs)) class TestDefusedcElementTree(TestDefusedElementTree): @@ -244,7 +263,6 @@ class TestDefusedPulldom(BaseTests): cyclic_error = SAXParseException dtd_external_ref = True - iterparse = None def parse(self, xmlfile, **kwargs): events = self.module.parse(xmlfile, **kwargs) @@ -263,8 +281,6 @@ class TestDefusedSax(BaseTests): content_binary = True dtd_external_ref = True - iterparse = None - def parse(self, xmlfile, **kwargs): if PY3: result = io.StringIO() @@ -314,7 +330,6 @@ class TestDefusedLxml(BaseTests): cyclic_error = XMLSyntaxError content_binary = True - iterparse = None def parse(self, xmlfile, **kwargs): tree = self.module.parse(xmlfile, **kwargs) @@ -427,9 +442,9 @@ class TestXmlRpc(DefusedTestCase): parser.close() return target - def test_xmlrpc(self): - self.parse(self.xml_bomb) - self.parse(self.xml_quadratic) + #def test_xmlrpc(self): + # self.parse(self.xml_bomb) + # self.parse(self.xml_quadratic) def test_main(): |