예제 #1
0
def test_dict_instantiation_for_aliased_types():
    schema = xs.schema(Namespace('http://boo', 'boo'))(
        xs.complexType('Point')(xs.attribute('x', xs.int),
                                xs.attribute('y', xs.int)),
        xs.complexType('Vector')(xs.sequence()(xs.element('a', 'Point'),
                                               xs.element('b', 'Point'))),
        xs.element('Request')(xs.cts(
            xs.element('vector', 'Vector', minOccurs=0,
                       maxOccurs=xs.unbounded))),
    )

    request = schema['Request'].instance(vector=[{
        'a': {
            'x': 1,
            'y': 2
        },
        'b': {
            'x': 3,
            'y': 4
        }
    }])
    assert validate(schema, request)
    obj = schema.fromstring(tostring(request))
    assert obj.vector[0].a.x == 1
    assert obj.vector[0].a.y == 2
    assert obj.vector[0].b.x == 3
    assert obj.vector[0].b.y == 4
예제 #2
0
def test_none_values_should_be_wrapped_into_empty_element():
    schema = xs.schema(Namespace('http://boo',
                                 'boo'))(xs.element('Request')(xs.cts(
                                     xs.element('foo', xs.string))))

    request = schema['Request'].instance(foo=None)
    assert validate(schema, request)
    assert '<boo:foo />' in tostring(request)
예제 #3
0
def test_soap_envelope_construction():
    schema = xs.schema(Namespace('http://boo'))(xs.element('Request', xs.int))

    envelope = soap.make_envelope(schema['Request'].instance(50))

    envelope = soap.schema.fromstring(tostring(envelope))
    request = schema.from_node(envelope.Body._any[0])

    assert request == 50
예제 #4
0
def test_none_values_should_be_wrapped_into_empty_element():
    schema = xs.schema(Namespace('http://boo', 'boo'))(
        xs.element('Request')(xs.cts(
            xs.element('foo', xs.string)
        ))
    )

    request = schema['Request'].instance(foo=None)
    assert validate(schema, request)
    assert '<boo:foo />' in tostring(request)
예제 #5
0
def test_customize_array():
    Request = xs.element('Request')(xs.cts(xs.element('x', xs.array(xs.int))))

    schema = xs.schema(Namespace('http://boo', 'boo'))(Request, )

    request = Request.instance(x=[15, 22, 30])
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.x == [15, 22, 30]
예제 #6
0
def test_max_occurs_grater_then_one():
    Request = xs.element('Request')(xs.cts(
        xs.element('x', xs.int, maxOccurs=xs.unbounded)))

    schema = xs.schema(Namespace('http://boo', 'boo'))(Request, )

    request = Request.instance(x=[15, 22, 30])
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.x == [15, 22, 30]
예제 #7
0
def test_soap_envelope_construction():
    schema = xs.schema(Namespace('http://boo'))(
        xs.element('Request', xs.int)
    )

    envelope = soap.make_envelope(schema['Request'].instance(50))

    envelope = soap.schema.fromstring(tostring(envelope))
    request = schema.from_node(envelope.Body._any[0])

    assert request == 50
예제 #8
0
def test_customize_optional():
    Request = xs.element('Request')(xs.cts(
        xs.element('x', xs.optional(xs.string)), xs.element('y', xs.int)))

    schema = xs.schema(Namespace('http://boo', 'boo'))(Request, )

    request = Request.instance(y=15)
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.x == None
    assert obj.y == 15
예제 #9
0
def test_simple_content():
    Request = xs.element('Request')(xs.complexType()(xs.simpleContent()(
        xs.extension(xs.string)(xs.attribute('lang', xs.string)))))

    schema = xs.schema(Namespace('http://boo', 'boo'))(Request, )

    request = Request.instance(value='message', lang='en')
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.value == 'message'
    assert obj.lang == 'en'
예제 #10
0
def test_zero_min_occurs():
    Request = xs.element('Request')(xs.cts(
        xs.element('x', xs.string, minOccurs=0), xs.element('y', xs.int)))

    schema = xs.schema(Namespace('http://boo', 'boo'))(Request, )

    request = Request.instance(y=15)
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.x == None
    assert obj.y == 15
예제 #11
0
def test_attributes():
    Request = xs.element('Request')(xs.complexType()(xs.sequence()(xs.element(
        'x', xs.int)), xs.attribute('y', xs.int)))

    schema = xs.schema(Namespace('http://boo', 'boo'))(Request, )

    request = Request.instance(x=15, y=20)
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.x == 15
    assert obj.y == 20
예제 #12
0
def test_customize_array():
    Request = xs.element('Request')(xs.cts(
        xs.element('x', xs.array(xs.int))))

    schema = xs.schema(Namespace('http://boo', 'boo'))(
        Request,
    )

    request = Request.instance(x=[15, 22, 30])
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.x == [15, 22, 30]
예제 #13
0
def test_max_occurs_grater_then_one():
    Request = xs.element('Request')(xs.cts(
        xs.element('x', xs.int, maxOccurs=xs.unbounded)))

    schema = xs.schema(Namespace('http://boo', 'boo'))(
        Request,
    )

    request = Request.instance(x=[15, 22, 30])
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.x == [15, 22, 30]
예제 #14
0
def test_type_aliases():
    schema = xs.schema(Namespace('http://boo',
                                 'boo'))(xs.complexType(name='fooType')(
                                     xs.sequence()(xs.element('x', xs.string),
                                                   xs.element('y', xs.int))),
                                         xs.element('Request')(xs.cts(
                                             xs.element('foo', 'fooType'))))

    request = schema['Request'].instance(foo={'x': 'boo', 'y': 100})
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.foo.x == 'boo'
    assert obj.foo.y == 100
예제 #15
0
def test_boolean():
    schema = xs.schema(Namespace('http://boo',
                                 'boo'))(xs.element('Request')(xs.cts(
                                     xs.element('foo', xs.boolean))))

    request = schema['Request'].instance(foo=True)
    assert validate(schema, request)
    obj = schema.fromstring(tostring(request))
    assert obj.foo == True

    request = schema['Request'].instance(foo=False)
    assert validate(schema, request)
    obj = schema.fromstring(tostring(request))
    assert obj.foo == False
예제 #16
0
def test_dict_intances():
    schema = xs.schema(Namespace('http://boo',
                                 'boo'))(xs.element('Request')(xs.cts(
                                     xs.element('foo')(xs.cts(
                                         xs.element('x', xs.string),
                                         xs.element('y', xs.int),
                                     )))))

    request = schema['Request'].instance(foo={'x': 'boo', 'y': 100})
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.foo.x == 'boo'
    assert obj.foo.y == 100
예제 #17
0
def test_zero_min_occurs():
    Request = xs.element('Request')(xs.cts(
        xs.element('x', xs.string, minOccurs=0),
        xs.element('y', xs.int)))

    schema = xs.schema(Namespace('http://boo', 'boo'))(
        Request,
    )

    request = Request.instance(y=15)
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.x == None
    assert obj.y == 15
예제 #18
0
def test_customize_optional():
    Request = xs.element('Request')(xs.cts(
        xs.element('x', xs.optional(xs.string)),
        xs.element('y', xs.int)))

    schema = xs.schema(Namespace('http://boo', 'boo'))(
        Request,
    )

    request = Request.instance(y=15)
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.x == None
    assert obj.y == 15
예제 #19
0
def test_boolean():
    schema = xs.schema(Namespace('http://boo', 'boo'))(
        xs.element('Request')(xs.cts(
            xs.element('foo', xs.boolean)))
    )

    request = schema['Request'].instance(foo=True)
    assert validate(schema, request)
    obj = schema.fromstring(tostring(request))
    assert obj.foo == True

    request = schema['Request'].instance(foo=False)
    assert validate(schema, request)
    obj = schema.fromstring(tostring(request))
    assert obj.foo == False
예제 #20
0
def test_dict_intances():
    schema = xs.schema(Namespace('http://boo', 'boo'))(
        xs.element('Request')(xs.cts(
            xs.element('foo')(xs.cts(
                xs.element('x', xs.string),
                xs.element('y', xs.int),
            ))
        ))
    )

    request = schema['Request'].instance(foo={'x':'boo', 'y':100})
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.foo.x == 'boo'
    assert obj.foo.y == 100
예제 #21
0
def test_enumeration():
    Request = xs.element('Request')(xs.simpleType()(
        xs.restriction(base=xs.string)(xs.enumeration('en'),
                                       xs.enumeration('ru'))))

    schema = xs.schema(Namespace('http://boo', 'boo'))(Request, )

    request = Request.instance('en')
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj == 'en'
    assert Request.type.en == 'en'

    request = Request.instance('fr')
    assert not validate(schema, request)
예제 #22
0
def test_simple_content():
    Request = xs.element('Request')(
        xs.complexType()(
            xs.simpleContent()(
                xs.extension(xs.string)(
                    xs.attribute('lang', xs.string)))))

    schema = xs.schema(Namespace('http://boo', 'boo'))(
        Request,
    )

    request = Request.instance(value='message', lang='en')
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.value == 'message'
    assert obj.lang == 'en'
예제 #23
0
def test_simple_schema():
    AddRequest = xs.element('AddRequest')(xs.cts(xs.element('x', xs.string),
                                                 xs.element('y', xs.int)))

    AddResponse = xs.element('AddResponse', xs.int)

    schema = xs.schema(Namespace('http://boo', 'boo'))(AddRequest, AddResponse)

    assert validate(schema, AddRequest.instance(x='10', y='15'))
    assert validate(schema, AddResponse.instance(15))

    obj = schema.fromstring(tostring(AddRequest.instance(x='11', y='12')))
    assert obj.x == '11'
    assert obj.y == 12

    obj = schema.fromstring(tostring(AddResponse.instance(30)))
    assert obj == 30
예제 #24
0
def test_attributes():
    Request = xs.element('Request')(
        xs.complexType()(
            xs.sequence()(
                xs.element('x', xs.int)),
            xs.attribute('y', xs.int)))

    schema = xs.schema(Namespace('http://boo', 'boo'))(
        Request,
    )

    request = Request.instance(x=15, y=20)
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.x == 15
    assert obj.y == 20
예제 #25
0
def test_binary_data():
    schema = xs.schema(Namespace('http://boo',
                                 'boo'))(xs.element('Request')(xs.cts(
                                     xs.element('foo', xs.hexBinary),
                                     xs.element('boo', xs.base64Binary))))

    data = '\x01\x02\x03'
    request = schema['Request'].instance(foo=data, boo=data)
    assert validate(schema, request)

    string_request = tostring(request)
    assert '010203' in string_request
    assert 'AQID' in string_request

    obj = schema.fromstring(string_request)
    assert obj.foo == data
    assert obj.boo == data
예제 #26
0
def test_type_aliases():
    schema = xs.schema(Namespace('http://boo', 'boo'))(
        xs.complexType(name='fooType')(
            xs.sequence()(
                xs.element('x', xs.string),
                xs.element('y', xs.int))),

        xs.element('Request')(xs.cts(
            xs.element('foo', 'fooType')))
    )

    request = schema['Request'].instance(foo={'x':'boo', 'y':100})
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj.foo.x == 'boo'
    assert obj.foo.y == 100
예제 #27
0
def test_binary_data():
    schema = xs.schema(Namespace('http://boo', 'boo'))(
        xs.element('Request')(xs.cts(
            xs.element('foo', xs.hexBinary),
            xs.element('boo', xs.base64Binary)))
    )

    data = '\x01\x02\x03'
    request = schema['Request'].instance(foo=data, boo=data)
    assert validate(schema, request)

    string_request = tostring(request)
    assert '010203' in string_request
    assert 'AQID' in string_request

    obj = schema.fromstring(string_request)
    assert obj.foo == data
    assert obj.boo == data
예제 #28
0
def test_type_instances():
    Request = xs.element('Request')(xs.cts(xs.element('x', xs.string)))

    schema = xs.schema(Namespace('http://boo', 'boo'))(Request, )

    request = Request.type.instance(x='message')
    real_request = request.create(Request)
    assert validate(schema, real_request)

    obj = schema.fromstring(tostring(real_request))
    assert obj.x == 'message'

    request = Request.type.instance()
    request.x = 'message'
    real_request = request.create(Request)
    assert validate(schema, real_request)

    obj = schema.fromstring(tostring(real_request))
    assert obj.x == 'message'
예제 #29
0
def test_enumeration():
    Request = xs.element('Request')(
        xs.simpleType()(
            xs.restriction(base=xs.string)(
                xs.enumeration('en'),
                xs.enumeration('ru'))))

    schema = xs.schema(Namespace('http://boo', 'boo'))(
        Request,
    )

    request = Request.instance('en')
    assert validate(schema, request)

    obj = schema.fromstring(tostring(request))
    assert obj == 'en'
    assert Request.type.en == 'en'

    request = Request.instance('fr')
    assert not validate(schema, request)
예제 #30
0
def test_simple_schema():
    AddRequest = xs.element('AddRequest')(xs.cts(
        xs.element('x', xs.string),
        xs.element('y', xs.int)))

    AddResponse = xs.element('AddResponse', xs.int)

    schema = xs.schema(Namespace('http://boo', 'boo'))(
        AddRequest,
        AddResponse
    )

    assert validate(schema, AddRequest.instance(x='10', y='15'))
    assert validate(schema, AddResponse.instance(15))

    obj = schema.fromstring(tostring(AddRequest.instance(x='11', y='12')))
    assert obj.x == '11'
    assert obj.y == 12

    obj = schema.fromstring(tostring(AddResponse.instance(30)))
    assert obj == 30
예제 #31
0
def test_dict_instantiation_for_aliased_types():
    schema = xs.schema(Namespace('http://boo', 'boo'))(
        xs.complexType('Point')(
            xs.attribute('x', xs.int),
            xs.attribute('y', xs.int)),

        xs.complexType('Vector')(
            xs.sequence()(
                xs.element('a', 'Point'),
                xs.element('b', 'Point'))),

        xs.element('Request')(xs.cts(
            xs.element('vector', 'Vector', minOccurs=0, maxOccurs=xs.unbounded))),
    )

    request = schema['Request'].instance(vector=[{'a':{'x':1, 'y':2}, 'b':{'x':3, 'y':4}}])
    assert validate(schema, request)
    obj = schema.fromstring(tostring(request))
    assert obj.vector[0].a.x == 1
    assert obj.vector[0].a.y == 2
    assert obj.vector[0].b.x == 3
    assert obj.vector[0].b.y == 4
예제 #32
0
def test_type_instances():
    Request = xs.element('Request')(xs.cts(
        xs.element('x', xs.string)))

    schema = xs.schema(Namespace('http://boo', 'boo'))(
        Request,
    )

    request = Request.type.instance(x='message')
    real_request = request.create(Request)
    assert validate(schema, real_request)

    obj = schema.fromstring(tostring(real_request))
    assert obj.x == 'message'


    request = Request.type.instance()
    request.x = 'message'
    real_request = request.create(Request)
    assert validate(schema, real_request)

    obj = schema.fromstring(tostring(real_request))
    assert obj.x == 'message'