Esempio n. 1
0
    def test_can_generate_schema_xml_containing_types_with_pattern_restriction(
            self):
        ns = 'http://soap.example/pattern.xsd'

        class Container(xsd.ComplexType):
            code = xsd.Element(xsd.String(pattern='[0-9]{0,5}'))

        schema = xsd.Schema(
            ns,
            location=ns,
            elementFormDefault=xsd.ElementFormDefault.QUALIFIED,
            complexTypes=(Container, ),
            elements={
                'foo': xsd.Element(Container),
            },
        )
        # previously this would fail
        xsd_element = generate_xsd(schema)
        xmlschema = etree.XMLSchema(xsd_element)
        valid_xml = '<foo xmlns="%s"><code>1234</code></foo>' % ns

        def is_valid(s):
            return xmlschema.validate(etree.fromstring(s))

        self.assertIs(is_valid(valid_xml), True)

        bad_xml = '<foo xmlns="%s"><code>abc</code></foo>' % ns
        self.assertIs(is_valid(bad_xml), False)
Esempio n. 2
0
 def assert_is_invalid(self, xml_string, soapfish_schema):
     xml = etree.fromstring(xml_string)
     xmlschema = etree.XMLSchema(generate_xsd(soapfish_schema))
     assert_false(
         xmlschema.validate(xml),
         message="XML should fail to validate: %r" % xml_string
     )
Esempio n. 3
0
 def assert_is_valid(self, xml_string, soapfish_schema):
     xml = etree.fromstring(xml_string)
     xmlschema = etree.XMLSchema(generate_xsd(soapfish_schema))
     assert_true(
         xmlschema.validate(xml),
         message="XML did not validate: %r" % xml_string
     )
Esempio n. 4
0
    def test_can_generate_schema_xml_containing_types_with_pattern_restriction(self):
        ns = 'http://soap.example/pattern.xsd'

        class Container(xsd.ComplexType):
            code = xsd.Element(xsd.String(pattern='[0-9]{0,5}'))
        schema = xsd.Schema(ns,
                            location=ns,
                            elementFormDefault=xsd.ElementFormDefault.QUALIFIED,
                            complexTypes=(
                                Container,
                            ),
                            elements={
                                'foo': xsd.Element(Container),
                            },
                            )
        # previously this would fail
        xsd_element = generate_xsd(schema)
        xmlschema = etree.XMLSchema(xsd_element)
        valid_xml = '<foo xmlns="%s"><code>1234</code></foo>' % ns

        def is_valid(s):
            return xmlschema.validate(etree.fromstring(s))
        assert_true(is_valid(valid_xml))

        bad_xml = '<foo xmlns="%s"><code>abc</code></foo>' % ns
        assert_false(is_valid(bad_xml))
Esempio n. 5
0
 def test_required_only(self):
     XMLSchema = etree.XMLSchema(py2xsd.generate_xsd(Schema))
     ops = Ops.parsexml(XML_REQUIRED_ONLY, XMLSchema)
     self.assertEqual("N608WB", ops.aircraft)
     self.assertEqual("123123", ops.flight_number)
     self.assertEqual("COMMERCIAL", ops.type)
     self.assertEqual("ICAO", ops.takeoff_airport.code_type)
     self.assertEqual("EGLL", ops.takeoff_airport.code)
     self.assertEqual(None, ops.takeoff_pilot)
     self.assertEqual(iso8601.parse_date("2009-12-30T23:35:59Z"), ops.landing_gate_datetime)
Esempio n. 6
0
 def test_required_only(self):
     XMLSchema = etree.XMLSchema(py2xsd.generate_xsd(Schema))
     ops = Ops.parsexml(XML_REQUIRED_ONLY, XMLSchema)
     self.assertEqual('N608WB', ops.aircraft)
     self.assertEqual('123123', ops.flight_number)
     self.assertEqual('COMMERCIAL', ops.type)
     self.assertEqual('ICAO', ops.takeoff_airport.code_type)
     self.assertEqual('EGLL', ops.takeoff_airport.code)
     self.assertIsNone(ops.takeoff_pilot)
     self.assertEqual(iso8601.parse_date('2009-12-30T23:35:59Z'), ops.landing_gate_datetime)
Esempio n. 7
0
 def assert_is_invalid(self, xml_string, soapfish_schema):
     xml = etree.fromstring(xml_string)
     xmlschema = etree.XMLSchema(generate_xsd(soapfish_schema))
     assert_false(xmlschema.validate(xml),
                  message="XML should fail to validate: %r" % xml_string)
Esempio n. 8
0
 def assert_is_valid(self, xml_string, soapfish_schema):
     xml = etree.fromstring(xml_string)
     xmlschema = etree.XMLSchema(generate_xsd(soapfish_schema))
     assert_true(xmlschema.validate(xml),
                 message="XML did not validate: %r" % xml_string)
Esempio n. 9
0
class AppHeader(xsd.ComplexType):
    Version = xsd.Element(xsd.String)
    Message = xsd.Element(GetWeatherByPlaceName)

Schema_qualified = xsd.Schema(
    targetNamespace='http://www.example.org',
    elementFormDefault=xsd.ElementFormDefault.QUALIFIED,
    complexTypes=[GetWeatherByPlaceName, AppHeader, Place],
    elements={
        'GetWeatherByPlaceName': xsd.Element(GetWeatherByPlaceName),
        'AppHeader': xsd.Element(AppHeader),
        'Identity': xsd.Element(xsd.String),
    },
)
XMLSchema_qualified = etree.XMLSchema(generate_xsd(Schema_qualified))


class WsaAppHeader(wsa.Header):
    SCHEMA = Schema_qualified
    Identity = SCHEMA.get_element_by_name('Identity')


class PlaceU(xsd.ComplexType):
    Name = xsd.Element(xsd.String)


class GetWeatherByPlaceNameU(xsd.ComplexType):
    Place = xsd.Element(PlaceU)

Esempio n. 10
0
class AppHeader(xsd.ComplexType):
    Version = xsd.Element(xsd.String)
    Message = xsd.Element(GetWeatherByPlaceName)


Schema_qualified = xsd.Schema(
    targetNamespace='http://www.example.org',
    elementFormDefault=xsd.ElementFormDefault.QUALIFIED,
    complexTypes=[GetWeatherByPlaceName, AppHeader, Place],
    elements={
        'GetWeatherByPlaceName': xsd.Element(GetWeatherByPlaceName),
        'AppHeader': xsd.Element(AppHeader),
        'Identity': xsd.Element(xsd.String),
    },
)
XMLSchema_qualified = etree.XMLSchema(generate_xsd(Schema_qualified))


class WsaAppHeader(wsa.Header):
    SCHEMA = Schema_qualified
    Identity = SCHEMA.get_element_by_name('Identity')


class PlaceU(xsd.ComplexType):
    Name = xsd.Element(xsd.String)


class GetWeatherByPlaceNameU(xsd.ComplexType):
    Place = xsd.Element(PlaceU)

Esempio n. 11
0
 def assert_is_invalid(self, xml_string, soapfish_schema):
     xml = etree.fromstring(xml_string)
     xmlschema = etree.XMLSchema(generate_xsd(soapfish_schema))
     self.assertIs(xmlschema.validate(xml),
                   False,
                   msg='XML should fail to validate: %r' % xml_string)
Esempio n. 12
0
 def assert_is_valid(self, xml_string, soapfish_schema):
     xml = etree.fromstring(xml_string)
     xmlschema = etree.XMLSchema(generate_xsd(soapfish_schema))
     self.assertIs(xmlschema.validate(xml),
                   True,
                   msg='XML did not validate: %r' % xml_string)