Esempio n. 1
0
    def test_xml_resource_defuse(self):
        resource = XMLResource(self.vh_xml_file, defuse='never')
        self.assertEqual(resource.defuse, 'never')
        self.assertRaises(ValueError,
                          XMLResource,
                          self.vh_xml_file,
                          defuse='all')
        self.assertRaises(ValueError,
                          XMLResource,
                          self.vh_xml_file,
                          defuse=None)
        self.assertIsInstance(resource.root, etree_element)
        resource = XMLResource(self.vh_xml_file, defuse='always')
        self.assertIsInstance(resource.root, py_etree_element)

        xml_file = casepath('resources/with_entity.xml')
        self.assertIsInstance(XMLResource(xml_file), XMLResource)
        self.assertRaises(PyElementTree.ParseError,
                          XMLResource,
                          xml_file,
                          defuse='always')

        xml_file = casepath('resources/unused_external_entity.xml')
        self.assertIsInstance(XMLResource(xml_file), XMLResource)
        self.assertRaises(PyElementTree.ParseError,
                          XMLResource,
                          xml_file,
                          defuse='always')

        xml_file = casepath('resources/external_entity.xml')
        self.assertIsInstance(XMLResource(xml_file), XMLResource)
        self.assertRaises(PyElementTree.ParseError,
                          XMLResource,
                          xml_file,
                          defuse='always')
Esempio n. 2
0
    def test_xml_resource_from_file(self):
        with open(self.vh_schema_file) as schema_file:
            resource = XMLResource(schema_file)
            self.assertEqual(resource.source, schema_file)
            self.assertEqual(resource.root.tag,
                             '{http://www.w3.org/2001/XMLSchema}schema')
            self.assertEqual(resource.url.lower(),
                             FILE_SCHEME.format(self.vh_schema_file).lower())
            self.assertIsNone(resource.document)
            self.assertIsNone(resource.text)
            resource.load()
            self.assertTrue(resource.text.startswith('<xs:schema'))

        with open(self.vh_schema_file) as schema_file:
            resource = XMLResource(schema_file, lazy=False)
            self.assertEqual(resource.source, schema_file)
            self.assertEqual(resource.root.tag,
                             '{http://www.w3.org/2001/XMLSchema}schema')
            if not IS_WIN_PLATFORM:
                self.assertEqual(resource.url,
                                 FILE_SCHEME.format(self.vh_schema_file))
            self.assertIsInstance(resource.document, ElementTree.ElementTree)
            self.assertIsNone(resource.text)
            resource.load()
            self.assertTrue(resource.text.startswith('<xs:schema'))
Esempio n. 3
0
    def test_xml_resource_iter(self):
        resource = XMLResource(self.schema_class.meta_schema.source.url,
                               lazy=False)
        self.assertFalse(resource.is_lazy())
        lazy_resource = XMLResource(self.schema_class.meta_schema.source.url)
        self.assertTrue(lazy_resource.is_lazy())

        tags = [x.tag for x in resource.iter()]
        self.assertEqual(len(tags), 1390)
        self.assertEqual(tags[0], '{%s}schema' % XSD_NAMESPACE)

        lazy_tags = [x.tag for x in lazy_resource.iter()]
        self.assertEqual(len(lazy_tags), 1390)
        self.assertEqual(lazy_tags[-1], '{%s}schema' % XSD_NAMESPACE)
        self.assertNotEqual(tags, lazy_tags)

        tags = [
            x.tag for x in resource.iter('{%s}complexType' % XSD_NAMESPACE)
        ]
        self.assertEqual(len(tags), 56)
        self.assertEqual(tags[0], '{%s}complexType' % XSD_NAMESPACE)
        self.assertListEqual(tags, [
            x.tag
            for x in lazy_resource.iter('{%s}complexType' % XSD_NAMESPACE)
        ])
Esempio n. 4
0
 def test_xml_resource_open(self):
     resource = XMLResource(self.vh_xml_file)
     xml_file = resource.open()
     data = xml_file.read().decode('utf-8')
     self.assertTrue(data.startswith('<?xml '))
     xml_file.close()
     resource = XMLResource('<A/>')
     self.assertRaises(ValueError, resource.open)
Esempio n. 5
0
 def test_xml_resource_seek(self):
     resource = XMLResource(self.vh_xml_file)
     self.assertIsNone(resource.seek(0))
     self.assertIsNone(resource.seek(1))
     xml_file = open(self.vh_xml_file)
     resource = XMLResource(source=xml_file)
     self.assertEqual(resource.seek(0), 0)
     self.assertEqual(resource.seek(1), 1)
     xml_file.close()
Esempio n. 6
0
 def test_xml_resource_namespace(self):
     resource = XMLResource(self.vh_xml_file)
     self.assertEqual(resource.namespace, 'http://example.com/vehicles')
     resource = XMLResource(self.vh_xsd_file)
     self.assertEqual(resource.namespace,
                      'http://www.w3.org/2001/XMLSchema')
     resource = XMLResource(self.col_xml_file)
     self.assertEqual(resource.namespace,
                      'http://example.com/ns/collection')
     self.assertEqual(XMLResource('<A/>').namespace, '')
Esempio n. 7
0
    def test_xml_resource_access(self):
        resource = XMLResource(self.vh_xml_file)
        base_url = resource.base_url

        XMLResource(self.vh_xml_file, allow='local')
        XMLResource(self.vh_xml_file,
                    base_url=os.path.dirname(self.vh_xml_file),
                    allow='sandbox')

        with self.assertRaises(XMLSchemaResourceError) as ctx:
            XMLResource(self.vh_xml_file, allow='remote')
        self.assertTrue(
            str(ctx.exception).startswith("block access to local resource"))

        with self.assertRaises(XMLSchemaResourceError) as ctx:
            XMLResource("https://xmlschema.test/vehicles.xsd", allow='local')
        self.assertEqual(
            str(ctx.exception),
            "block access to remote resource https://xmlschema.test/vehicles.xsd"
        )

        with self.assertRaises(XMLSchemaResourceError) as ctx:
            XMLResource("https://xmlschema.test/vehicles.xsd", allow='sandbox')
        self.assertEqual(
            str(ctx.exception),
            "block access to files out of sandbox requires 'base_url' to be set"
        )

        with self.assertRaises(XMLSchemaResourceError) as ctx:
            XMLResource("/tmp/vehicles.xsd", allow='sandbox')
        self.assertEqual(
            str(ctx.exception),
            "block access to files out of sandbox requires 'base_url' to be set",
        )

        source = "/tmp/vehicles.xsd"
        with self.assertRaises(XMLSchemaResourceError) as ctx:
            XMLResource(source, base_url=base_url, allow='sandbox')
        self.assertEqual(
            str(ctx.exception),
            "block access to out of sandbox file {}".format(
                normalize_url(source)),
        )

        with self.assertRaises(TypeError) as ctx:
            XMLResource("https://xmlschema.test/vehicles.xsd", allow=None)
        self.assertEqual(
            str(ctx.exception),
            "invalid type <class 'NoneType'> for the attribute 'allow'")

        with self.assertRaises(ValueError) as ctx:
            XMLResource("https://xmlschema.test/vehicles.xsd", allow='any')
        self.assertEqual(str(ctx.exception),
                         "'allow' attribute: 'any' is not a security mode")
Esempio n. 8
0
    def test_xml_resource_close(self):
        resource = XMLResource(self.vh_xml_file)
        resource.close()
        xml_file = resource.open()
        self.assertTrue(callable(xml_file.read))

        with open(self.vh_xml_file) as xml_file:
            resource = XMLResource(source=xml_file)
            resource.close()
            with self.assertRaises(ValueError):
                resource.open()
Esempio n. 9
0
    def test_xml_resource_open(self):
        resource = XMLResource(self.vh_xml_file)
        xml_file = resource.open()
        self.assertIsNot(xml_file, resource.source)
        data = xml_file.read().decode('utf-8')
        self.assertTrue(data.startswith('<?xml '))
        xml_file.close()
        resource = XMLResource('<A/>')
        self.assertRaises(XMLSchemaResourceError, resource.open)

        resource = XMLResource(source=open(self.vh_xml_file))
        xml_file = resource.open()
        self.assertIs(xml_file, resource.source)
        xml_file.close()
Esempio n. 10
0
 def test_xml_resource_get_locations(self):
     resource = XMLResource(self.col_xml_file)
     self.check_url(resource.url, normalize_url(self.col_xml_file))
     locations = resource.get_locations([('ns', 'other.xsd')])
     self.assertEqual(len(locations), 2)
     self.check_url(locations[0][1], os.path.join(self.col_dir,
                                                  'other.xsd'))
Esempio n. 11
0
    def test_xml_resource_defuse(self):
        resource = XMLResource(self.vh_xml_file, defuse='never')
        self.assertEqual(resource.defuse, 'never')
        self.assertEqual(resource.parse, etree_parse)
        self.assertEqual(resource.iterparse, etree_iterparse)
        self.assertEqual(resource.fromstring, etree_fromstring)

        resource.defuse = 'always'
        self.assertEqual(resource.parse, defused_etree.parse)
        self.assertEqual(resource.iterparse, defused_etree.iterparse)
        self.assertEqual(resource.fromstring, defused_etree.fromstring)

        resource.defuse = 'remote'
        self.assertEqual(resource.parse, etree_parse)
        self.assertEqual(resource.iterparse, etree_iterparse)
        self.assertEqual(resource.fromstring, etree_fromstring)

        resource._url = 'http://localhost'
        self.assertEqual(resource.parse, defused_etree.parse)
        self.assertEqual(resource.iterparse, defused_etree.iterparse)
        self.assertEqual(resource.fromstring, defused_etree.fromstring)

        self.assertRaises(ValueError,
                          XMLResource,
                          self.vh_xml_file,
                          defuse='all')
        self.assertRaises(ValueError,
                          XMLResource,
                          self.vh_xml_file,
                          defuse=None)
Esempio n. 12
0
    def test_fid_with_name_attr(self):
        """XMLResource gets correct data when passed a file like object
        with a name attribute that isn't on disk.

        These file descriptors appear when working with the contents from a
        zip using the zipfile module and with Django files in some
        instances.
        """
        class FileProxy(object):
            def __init__(self, fid, fake_name):
                self._fid = fid
                self.name = fake_name

            def __getattr__(self, attr):
                try:
                    return self.__dict__[attr]
                except (KeyError, AttributeError):
                    return getattr(self.__dict__["_fid"], attr)

        fake_name = "not__on____disk.xml"
        with open(self.vh_xml_file) as schema_file:
            resource = XMLResource(FileProxy(schema_file, fake_name))
            self.assertIsNone(resource.url)
            self.assertEqual(set(resource.get_namespaces().keys()),
                             {'vh', 'xsi'})
            self.assertFalse(schema_file.closed)
Esempio n. 13
0
 def test_xml_resource_timeout(self):
     resource = XMLResource(self.vh_xml_file, timeout=30)
     self.assertEqual(resource.timeout, 30)
     self.assertRaises(ValueError,
                       XMLResource,
                       self.vh_xml_file,
                       timeout='100')
     self.assertRaises(ValueError, XMLResource, self.vh_xml_file, timeout=0)
Esempio n. 14
0
    def test_xml_resource_fromstring(self):
        resource = XMLResource(self.vh_xml_file)

        self.assertEqual(resource.defuse, 'remote')
        self.assertEqual(resource.fromstring('<root/>').tag, 'root')

        resource.defuse = 'always'
        self.assertEqual(resource.fromstring('<root/>').tag, 'root')
Esempio n. 15
0
    def test_xml_resource_iterfind(self):
        namespaces = {'xs': XSD_NAMESPACE}
        resource = XMLResource(self.schema_class.meta_schema.source.url,
                               lazy=False)
        self.assertFalse(resource.is_lazy())
        lazy_resource = XMLResource(self.schema_class.meta_schema.source.url)
        self.assertTrue(lazy_resource.is_lazy())

        # Note: Element change with lazy resource so compare only tags

        tags = [x.tag for x in resource.iterfind()]
        self.assertEqual(len(tags), 1)
        self.assertEqual(tags[0], '{%s}schema' % XSD_NAMESPACE)
        self.assertListEqual(tags, [x.tag for x in lazy_resource.iterfind()])

        tags = [x.tag for x in resource.iterfind(path='.')]
        self.assertEqual(len(tags), 1)
        self.assertEqual(tags[0], '{%s}schema' % XSD_NAMESPACE)
        self.assertListEqual(tags,
                             [x.tag for x in lazy_resource.iterfind(path='.')])

        tags = [x.tag for x in resource.iterfind(path='*')]
        self.assertEqual(len(tags), 156)
        self.assertEqual(tags[0], '{%s}annotation' % XSD_NAMESPACE)
        self.assertListEqual(tags,
                             [x.tag for x in lazy_resource.iterfind(path='*')])

        tags = [x.tag for x in resource.iterfind('xs:complexType', namespaces)]
        self.assertEqual(len(tags), 35)
        self.assertTrue(
            all(t == '{%s}complexType' % XSD_NAMESPACE for t in tags))
        self.assertListEqual(tags, [
            x.tag for x in lazy_resource.iterfind('xs:complexType', namespaces)
        ])

        tags = [
            x.tag
            for x in resource.iterfind('. /. / xs:complexType', namespaces)
        ]
        self.assertEqual(len(tags), 35)
        self.assertTrue(
            all(t == '{%s}complexType' % XSD_NAMESPACE for t in tags))
        self.assertListEqual(tags, [
            x.tag for x in lazy_resource.iterfind('. /. / xs:complexType',
                                                  namespaces)
        ])
Esempio n. 16
0
 def test_xml_resource_get_locations(self):
     resource = XMLResource(self.col_xml_file)
     self.assertEqual(resource.url, normalize_url(self.col_xml_file))
     locations = resource.get_locations([('ns', 'other.xsd')])
     self.assertEqual(len(locations), 2)
     if not IS_WIN_PLATFORM:
         self.assertEqual(
             locations[0][1].lower(),
             FILE_SCHEME.format(self.col_dir).lower() + '/other.xsd')
Esempio n. 17
0
    def test_xml_resource_from_string(self):
        with open(self.vh_xsd_file) as schema_file:
            schema_text = schema_file.read()

        resource = XMLResource(schema_text)
        self.assertEqual(resource.source, schema_text)
        self.assertEqual(resource.root.tag,
                         '{http://www.w3.org/2001/XMLSchema}schema')
        self.assertIsNone(resource.url)
        self.assertIsNone(resource.document)
        self.assertTrue(resource.text.startswith('<xs:schema'))

        invalid_xml = '<tns0:root>missing namespace declaration</tns0:root>'
        with self.assertRaises(ElementTree.ParseError) as ctx:
            XMLResource(invalid_xml)

        self.assertEqual(str(ctx.exception),
                         'unbound prefix: line 1, column 0')
Esempio n. 18
0
 def test_init_from_xml_resource(self):
     xml_file = os.path.join(self.test_dir,
                             'resources/pw/CO_bgfs_relax.xml')
     document = PwDocument(source=XMLResource(xml_file))
     if platform.system() == 'Linux':
         self.assertEqual(document.filename, xml_file)
     else:
         self.assertTrue(document.filename.endswith('CO_bgfs_relax.xml'))
     self.assertTrue(
         document.schema.url.endswith("qeschema/schemas/qes.xsd"))
Esempio n. 19
0
    def test_xml_resource_parse(self):
        resource = XMLResource(self.vh_xml_file)

        self.assertEqual(resource.defuse, 'remote')
        xml_document = resource.parse(self.col_xml_file)
        self.assertTrue(is_etree_element(xml_document.getroot()))

        resource.defuse = 'always'
        xml_document = resource.parse(self.col_xml_file)
        self.assertTrue(is_etree_element(xml_document.getroot()))
Esempio n. 20
0
    def test_xml_resource_iterparse(self):
        resource = XMLResource(self.vh_xml_file)

        self.assertEqual(resource.defuse, 'remote')
        for _, elem in resource.iterparse(self.col_xml_file, events=('end', )):
            self.assertTrue(is_etree_element(elem))

        resource.defuse = 'always'
        for _, elem in resource.iterparse(self.col_xml_file, events=('end', )):
            self.assertTrue(is_etree_element(elem))
Esempio n. 21
0
    def test_xml_resource_get_namespaces(self):
        with open(self.vh_xml_file) as schema_file:
            resource = XMLResource(schema_file)
            self.assertEqual(resource.url, normalize_url(self.vh_xml_file))
            self.assertEqual(set(resource.get_namespaces().keys()),
                             {'vh', 'xsi'})

        with open(self.vh_xsd_file) as schema_file:
            resource = XMLResource(schema_file)
            self.assertEqual(resource.url, normalize_url(self.vh_xsd_file))
            self.assertEqual(set(resource.get_namespaces().keys()),
                             {'xs', 'vh'})

        resource = XMLResource(self.col_xml_file)
        self.assertEqual(resource.url, normalize_url(self.col_xml_file))
        self.assertEqual(set(resource.get_namespaces().keys()), {'col', 'xsi'})

        resource = XMLResource(self.col_xsd_file)
        self.assertEqual(resource.url, normalize_url(self.col_xsd_file))
        self.assertEqual(set(resource.get_namespaces().keys()), {'', 'xs'})
Esempio n. 22
0
    def test_xml_resource_from_string(self):
        with open(self.vh_xsd_file) as schema_file:
            schema_text = schema_file.read()

        resource = XMLResource(schema_text)
        self.assertEqual(resource.source, schema_text)
        self.assertEqual(resource.root.tag,
                         '{http://www.w3.org/2001/XMLSchema}schema')
        self.assertIsNone(resource.url)
        self.assertIsNone(resource.document)
        self.assertTrue(resource.text.startswith('<xs:schema'))
Esempio n. 23
0
    def test_xml_resource_from_url(self):
        resource = XMLResource(self.vh_xml_file)
        self.assertEqual(resource.source, self.vh_xml_file)
        self.assertEqual(resource.root.tag,
                         '{http://example.com/vehicles}vehicles')
        self.check_url(resource.url, self.vh_xml_file)
        self.assertIsNone(resource.document)
        self.assertIsNone(resource.text)
        resource.load()
        self.assertTrue(resource.text.startswith('<?xml'))

        resource = XMLResource(self.vh_xml_file, lazy=False)
        self.assertEqual(resource.source, self.vh_xml_file)
        self.assertEqual(resource.root.tag,
                         '{http://example.com/vehicles}vehicles')
        self.check_url(resource.url, self.vh_xml_file)
        self.assertIsInstance(resource.document, ElementTree.ElementTree)
        self.assertIsNone(resource.text)
        resource.load()
        self.assertTrue(resource.text.startswith('<?xml'))
Esempio n. 24
0
    def test_xml_resource_from_string_io(self):
        with open(self.vh_xsd_file) as schema_file:
            schema_text = schema_file.read()

        schema_file = StringIO(schema_text)
        resource = XMLResource(schema_file)
        self.assertEqual(resource.source, schema_file)
        self.assertEqual(resource.root.tag,
                         '{http://www.w3.org/2001/XMLSchema}schema')
        self.assertIsNone(resource.url)
        self.assertIsNone(resource.document)
        self.assertTrue(resource.text.startswith('<xs:schema'))

        schema_file = StringIO(schema_text)
        resource = XMLResource(schema_file, lazy=False)
        self.assertEqual(resource.source, schema_file)
        self.assertEqual(resource.root.tag,
                         '{http://www.w3.org/2001/XMLSchema}schema')
        self.assertIsNone(resource.url)
        self.assertIsInstance(resource.document, ElementTree.ElementTree)
        self.assertTrue(resource.text.startswith('<xs:schema'))
Esempio n. 25
0
    def test_xml_resource_from_lxml(self):
        vh_etree = lxml_etree_parse(self.vh_xml_file)
        vh_root = vh_etree.getroot()

        resource = XMLResource(vh_etree)
        self.assertEqual(resource.source, vh_etree)
        self.assertEqual(resource.document, vh_etree)
        self.assertEqual(resource.root.tag,
                         '{http://example.com/vehicles}vehicles')
        self.assertIsNone(resource.url)
        self.assertIsNone(resource.text)
        resource.load()
        self.assertIsNone(resource.text)

        resource = XMLResource(vh_root)
        self.assertEqual(resource.source, vh_root)
        self.assertEqual(resource.root.tag,
                         '{http://example.com/vehicles}vehicles')
        self.assertIsNone(resource.url)
        self.assertIsNone(resource.text)
        resource.load()
        self.assertIsNone(resource.text)
Esempio n. 26
0
    def test_xml_resource_from_file(self):
        with open(self.vh_schema_file) as schema_file:
            resource = XMLResource(schema_file)
            self.assertEqual(resource.source, schema_file)
            self.assertEqual(resource.root.tag,
                             '{http://www.w3.org/2001/XMLSchema}schema')
            self.check_url(resource.url, self.vh_schema_file)
            self.assertIsNone(resource.document)
            self.assertIsNone(resource.text)
            resource.load()
            self.assertTrue(resource.text.startswith('<xs:schema'))

        with open(self.vh_schema_file) as schema_file:
            resource = XMLResource(schema_file, lazy=False)
            self.assertEqual(resource.source, schema_file)
            self.assertEqual(resource.root.tag,
                             '{http://www.w3.org/2001/XMLSchema}schema')
            self.check_url(resource.url, self.vh_schema_file)
            self.assertIsInstance(resource.document, ElementTree.ElementTree)
            self.assertIsNone(resource.text)
            resource.load()
            self.assertTrue(resource.text.startswith('<xs:schema'))
Esempio n. 27
0
    def test_xml_resource_get_namespaces(self):
        with open(self.vh_xml_file) as schema_file:
            resource = XMLResource(schema_file)
            self.assertIsNone(resource.url)
            self.assertEqual(set(resource.get_namespaces().keys()),
                             {'vh', 'xsi'})
            self.assertFalse(schema_file.closed)

        with open(self.vh_xsd_file) as schema_file:
            resource = XMLResource(schema_file)
            self.assertIsNone(resource.url)
            self.assertEqual(set(resource.get_namespaces().keys()),
                             {'xs', 'vh'})
            self.assertFalse(schema_file.closed)

        resource = XMLResource(self.col_xml_file)
        self.assertEqual(resource.url, normalize_url(self.col_xml_file))
        self.assertEqual(set(resource.get_namespaces().keys()), {'col', 'xsi'})

        resource = XMLResource(self.col_xsd_file)
        self.assertEqual(resource.url, normalize_url(self.col_xsd_file))
        self.assertEqual(set(resource.get_namespaces().keys()), {'', 'xs'})

        resource = XMLResource("""<?xml version="1.0" ?>
            <root xmlns="tns1">
                <tns:elem1 xmlns:tns="tns1" xmlns="unknown"/>
            </root>""",
                               lazy=False)
        self.assertEqual(set(resource.get_namespaces().keys()),
                         {'', 'tns', 'default'})
        resource._lazy = True
        self.assertEqual(resource.get_namespaces().keys(), {''})

        resource = XMLResource("""<?xml version="1.0" ?>
            <root xmlns:tns="tns1">
                <tns:elem1 xmlns:tns="tns1" xmlns="unknown"/>
            </root>""",
                               lazy=False)
        self.assertEqual(set(resource.get_namespaces().keys()),
                         {'default', 'tns'})
        self.assertEqual(
            resource.get_namespaces(root_only=True).keys(), {'tns'})
        resource._lazy = True
        self.assertEqual(resource.get_namespaces().keys(), {'tns'})

        resource = XMLResource("""<?xml version="1.0" ?>
            <root xmlns:tns="tns1">
                <tns:elem1 xmlns:tns="tns3" xmlns="unknown"/>
            </root>""",
                               lazy=False)
        self.assertEqual(set(resource.get_namespaces().keys()),
                         {'default', 'tns', 'tns0'})
        resource._lazy = True
        self.assertEqual(resource.get_namespaces().keys(), {'tns'})
Esempio n. 28
0
    def test_xml_resource_from_url(self):
        resource = XMLResource(self.vh_xml_file)
        self.assertEqual(resource.source, self.vh_xml_file)
        self.assertEqual(resource.root.tag,
                         '{http://example.com/vehicles}vehicles')
        self.assertEqual(resource.url.lower(),
                         FILE_SCHEME.format(self.vh_xml_file).lower())
        self.assertIsNone(resource.document)
        self.assertIsNone(resource.text)
        resource.load()
        self.assertTrue(resource.text.startswith('<?xml'))

        resource = XMLResource(self.vh_xml_file, lazy=False)
        self.assertEqual(resource.source, self.vh_xml_file)
        self.assertEqual(resource.root.tag,
                         '{http://example.com/vehicles}vehicles')
        if not IS_WIN_PLATFORM:
            self.assertEqual(resource.url,
                             FILE_SCHEME.format(self.vh_xml_file))
        self.assertIsInstance(resource.document, ElementTree.ElementTree)
        self.assertIsNone(resource.text)
        resource.load()
        self.assertTrue(resource.text.startswith('<?xml'))
Esempio n. 29
0
    def test_get_context(self):
        source, schema = get_context(self.col_xml_file)
        self.assertIsInstance(source, XMLResource)
        self.assertIsInstance(schema, XMLSchema)

        source, schema = get_context(self.col_xml_file, self.col_xsd_file)
        self.assertIsInstance(source, XMLResource)
        self.assertIsInstance(schema, XMLSchema)

        source, schema = get_context(self.vh_xml_file, cls=XMLSchema10)
        self.assertIsInstance(source, XMLResource)
        self.assertIsInstance(schema, XMLSchema10)

        source, schema = get_context(self.col_xml_file, cls=XMLSchema11)
        self.assertIsInstance(source, XMLResource)
        self.assertIsInstance(schema, XMLSchema11)

        source, schema = get_context(XMLResource(self.vh_xml_file))
        self.assertIsInstance(source, XMLResource)
        self.assertIsInstance(schema, XMLSchema)

        # Issue #145
        with open(self.vh_xml_file) as f:
            source, schema = get_context(f, schema=self.vh_xsd_file)
            self.assertIsInstance(source, XMLResource)
            self.assertIsInstance(schema, XMLSchema)

        with open(self.vh_xml_file) as f:
            source, schema = get_context(XMLResource(f),
                                         schema=self.vh_xsd_file)
            self.assertIsInstance(source, XMLResource)
            self.assertIsInstance(schema, XMLSchema)

        with open(self.vh_xml_file) as f:
            source, schema = get_context(f, base_url=self.vh_dir)
            self.assertIsInstance(source, XMLResource)
            self.assertIsInstance(schema, XMLSchema)
Esempio n. 30
0
    def test_xml_resource_copy(self):
        resource = XMLResource(self.vh_xml_file)
        resource2 = resource.copy(defuse='never')
        self.assertEqual(resource2.defuse, 'never')
        resource2 = resource.copy(timeout=30)
        self.assertEqual(resource2.timeout, 30)
        resource2 = resource.copy(lazy=False)
        self.assertFalse(resource2.is_lazy())

        self.assertIsNone(resource2.text)
        self.assertIsNone(resource.text)
        resource.load()
        self.assertIsNotNone(resource.text)
        resource2 = resource.copy()
        self.assertEqual(resource.text, resource2.text)