def test_get_context_with_schema(self): source, schema = get_context(self.col_xml_file) self.assertIsInstance(source, XMLResource) self.assertIsInstance(schema, XMLSchema10) source, schema = get_context(self.col_xml_file, self.col_xsd_file) self.assertIsInstance(source, XMLResource) self.assertIsInstance(schema, XMLSchema10) col_schema = XMLSchema10(self.col_xsd_file) source, schema = get_context(self.col_xml_file, col_schema) self.assertIsInstance(source, XMLResource) self.assertIs(schema, col_schema) 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, XMLSchema10) xml_document = XmlDocument(self.vh_xml_file) source, schema = get_context(xml_document) self.assertIsInstance(source, XMLResource) self.assertIsInstance(schema, XMLSchema10) self.assertIs(xml_document.schema, schema) # 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, XMLSchema10) 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, XMLSchema10) 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, XMLSchema10)
def test_get_context_without_schema(self): xml_data = '<text xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n' \ ' xmlns:xs="http://www.w3.org/2001/XMLSchema"\n' \ ' xsi:type="xs:string">foo</text>' source, schema = get_context(xml_data) self.assertIsInstance(source, XMLResource) self.assertIs(schema, XMLSchema10.meta_schema) self.assertEqual(source.root.tag, 'text') self.assertTrue(schema.is_valid(source)) with self.assertRaises(ValueError) as ctx: get_context('<empty/>') self.assertEqual( str(ctx.exception), "no schema can be retrieved for the provided XML data") source, schema = get_context('<empty/>', dummy_schema=True) self.assertEqual(source.root.tag, 'empty') self.assertIsInstance(schema, XMLSchema10) col_xml_resource = XMLResource(self.col_xml_file) col_xml_resource.root.attrib.clear() self.assertEqual(col_xml_resource.get_locations(), []) source, schema = get_context(col_xml_resource, self.col_xsd_file) self.assertIs(source, col_xml_resource) self.assertIsInstance(schema, XMLSchema10) self.assertEqual(schema.target_namespace, 'http://example.com/ns/collection') # Schema target namespace doesn't match source namespace vh_schema = XMLSchema10(self.vh_xsd_file) source, schema = get_context(col_xml_resource, vh_schema) self.assertIs(source, col_xml_resource) self.assertIs(schema, vh_schema) self.assertFalse(schema.is_valid(source)) vh_schema.import_schema('http://example.com/ns/collection', self.col_xsd_file) vh_schema.build() source, schema = get_context(col_xml_resource, vh_schema) self.assertIs(source, col_xml_resource) self.assertIs(schema, vh_schema) self.assertTrue(schema.is_valid(source))
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)