Example #1
0
    def test_simple(self):
        from lxml.etree import tostring
        from spyne.util.etreeconv import root_dict_to_etree

        assert tostring(root_dict_to_etree({'a': {
            'b': 'c'
        }})) == '<a><b>c</b></a>'
Example #2
0
    def _fault_to_parent_impl(self, ctx, cls, inst, parent, ns, subelts, **_):
        tag_name = "{%s}Fault" % self.ns_soap_env

        # Accepting raw lxml objects as detail is DEPRECATED. It's also not
        # documented. It's kept for backwards-compatibility purposes.
        if isinstance(inst.detail, string_types + (etree._Element, )):
            _append(subelts, E('detail', inst.detail))

        elif isinstance(inst.detail, dict):
            if len(inst.detail) > 0:
                _append(subelts, root_dict_to_etree({'detail': inst.detail}))

        elif inst.detail is None:
            pass

        else:
            raise TypeError('Fault detail Must be dict, got',
                            type(inst.detail))

        # add other nonstandard fault subelements with get_members_etree
        return self.gen_members_parent(ctx,
                                       cls,
                                       inst,
                                       parent,
                                       tag_name,
                                       subelts,
                                       add_type=False)
Example #3
0
    def _fault_to_parent_impl(self, ctx, cls, inst, parent, ns, subelts, **_):
        tag_name = "{%s}Fault" % self.ns_soap_env

        if isinstance(inst.faultcode, string_types):
            value, faultcodes = self.gen_fault_codes(inst.faultcode)

            code = E("{%s}Code" % self.ns_soap_env)
            code.append(E("{%s}Value" % self.ns_soap_env, value))

            child_subcode = 0
            for value in faultcodes:
                if child_subcode:
                    child_subcode = self.generate_subcode(value, child_subcode)
                else:
                    child_subcode = self.generate_subcode(value)

            if child_subcode == 0:
                child_subcode = self.generate_subcode(value)

            code.append(child_subcode)

            _append(subelts, code)

        if isinstance(inst.detail, dict):
            _append(subelts, E('{%s}Detail' % self.ns_soap_env, root_dict_to_etree(inst.detail)))

        elif inst.detail is None:
            pass

        else:
            raise TypeError('Fault detail Must be dict, got', type(inst.detail))

        return self.gen_members_parent(ctx, cls, inst, parent, tag_name,
                                                        subelts, add_type=False)
Example #4
0
    def _fault_to_parent_impl(self, ctx, cls, inst, parent, ns, subelts, **_):
        tag_name = "{%s}Fault" % self.ns_soap_env

        if isinstance(inst.faultcode, string_types):
            value, faultcodes = self.gen_fault_codes(inst.faultcode)

            code = E("{%s}Code" % self.ns_soap_env)
            code.append(E("{%s}Value" % self.ns_soap_env, value))

            child_subcode = False
            for value in faultcodes[::-1]:
                if child_subcode:
                    child_subcode = self.generate_subcode(value, child_subcode)
                else:
                    child_subcode = self.generate_subcode(value)
            if child_subcode != 0:
                code.append(child_subcode)

            _append(subelts, code)

        if isinstance(inst.detail, dict):
            _append(subelts, E('{%s}Detail' % self.ns_soap_env, root_dict_to_etree(inst.detail)))

        elif inst.detail is None:
            pass

        else:
            raise TypeError('Fault detail Must be dict, got', type(inst.detail))

        return self.gen_members_parent(ctx, cls, inst, parent, tag_name,
                                                        subelts, add_type=False)
Example #5
0
    def fault_to_parent(self, ctx, cls, inst, parent, ns, *args, **kwargs):
        tag_name = "{%s}Fault" % self.ns_soap_env

        subelts = [
            E("{%s}Reason" % self.soap_env, inst.faultstring),
            E("{%s}Role" % self.soap_env, inst.faultactor),
        ]

        if isinstance(inst.faultcode, string_types):
            value, faultcodes  = self.gen_fault_codes(inst.faultcode)

            code = E("{%s}Code" % self.soap_env)
            code.append(E("{%s}Value" % self.soap_env, value))

            child_subcode = 0
            for value in faultcodes:
                if child_subcode:
                    child_subcode = self.generate_subcode(value, child_subcode)
                else:
                    child_subcode = self.generate_subcode(value)
            code.append(child_subcode)

            _append(subelts, code)

        if isinstance(inst.detail, dict):
            _append(subelts, E('{%s}Detail' % self.soap_env, root_dict_to_etree(inst.detail)))

        elif inst.detail is None:
            raise TypeError('Fault detail Must be dict, got', type(inst.detail))
        else:
            raise TypeError('Fault detail Must be dict, got', type(inst.detail))

        return self.gen_members_parent(ctx, cls, inst, parent, tag_name, subelts)
Example #6
0
    def test_not_sized(self):
        from lxml.etree import tostring
        from spyne.util.etreeconv import root_dict_to_etree

        complex_value = root_dict_to_etree({'a':{'b':1}})
        self.assertEqual(tostring(complex_value), '<a><b>1</b></a>',
            "The integer should be properly rendered in the etree")

        complex_none = root_dict_to_etree({'a':{'b':None}})
        self.assertEqual(tostring(complex_none), '<a><b/></a>',
            "None should not be rendered in the etree")
        
        simple_value = root_dict_to_etree({'a': 1})
        self.assertEqual(tostring(simple_value), '<a>1</a>',
            "The integer should be properly rendered in the etree")
        
        none_value = root_dict_to_etree({'a': None})
        self.assertEqual(tostring(none_value), '<a/>',
            "None should not be rendered in the etree")
        
        string_value = root_dict_to_etree({'a': 'lol'})
        self.assertEqual(tostring(string_value), '<a>lol</a>',
            "A string should be rendered as a string")
        
        complex_string_value = root_dict_to_etree({'a': {'b': 'lol'}})
        self.assertEqual(tostring(complex_string_value), '<a><b>lol</b></a>',
            "A string should be rendered as a string")
Example #7
0
    def test_not_sized(self):
        from lxml.etree import tostring
        from spyne.util.etreeconv import root_dict_to_etree

        complex_value = root_dict_to_etree({'a':{'b':1}})
        self.assertEqual(tostring(complex_value), '<a><b>1</b></a>',
            "The integer should be properly rendered in the etree")

        complex_none = root_dict_to_etree({'a':{'b':None}})
        self.assertEqual(tostring(complex_none), '<a><b/></a>',
            "None should not be rendered in the etree")
        
        simple_value = root_dict_to_etree({'a': 1})
        self.assertEqual(tostring(simple_value), '<a>1</a>',
            "The integer should be properly rendered in the etree")
        
        none_value = root_dict_to_etree({'a': None})
        self.assertEqual(tostring(none_value), '<a/>',
            "None should not be rendered in the etree")
        
        string_value = root_dict_to_etree({'a': 'lol'})
        self.assertEqual(tostring(string_value), '<a>lol</a>',
            "A string should be rendered as a string")
        
        complex_string_value = root_dict_to_etree({'a': {'b': 'lol'}})
        self.assertEqual(tostring(complex_string_value), '<a><b>lol</b></a>',
            "A string should be rendered as a string")
Example #8
0
    def _fault_to_parent_impl(self, ctx, cls, inst, parent, ns, subelts, **_):
        tag_name = "{%s}Fault" % self.ns_soap_env

        # Accepting raw lxml objects as detail is deprecated. It's also not
        # documented. It's kept for backwards-compatibility purposes.
        if isinstance(inst.detail, string_types + (etree._Element,)):
            _append(subelts, E('detail', inst.detail))

        elif isinstance(inst.detail, dict):
            if len(inst.detail) > 0:
                _append(subelts, root_dict_to_etree({'detail':inst.detail}))

        elif inst.detail is None:
            pass

        else:
            raise TypeError('Fault detail Must be dict, got', type(inst.detail))

        # add other nonstandard fault subelements with get_members_etree
        return self.gen_members_parent(ctx, cls, inst, parent, tag_name,
                                                        subelts, add_type=False)
Example #9
0
File: xml.py Project: mahdi-b/spyne
    def fault_to_parent(self, ctx, cls, inst, parent, ns, *args, **kwargs):
        tag_name = "{%s}Fault" % self.ns_soap_env

        subelts = [
            E("faultcode", '%s:%s' % (self.soap_env, inst.faultcode)),
            E("faultstring", inst.faultstring),
            E("faultactor", inst.faultactor),
        ]

        # Accepting raw lxml objects as detail is deprecated. It's also not
        # documented. It's kept for backwards-compatibility purposes.
        if isinstance(inst.detail, string_types + (etree._Element,)):
            _append(subelts, E('detail', inst.detail))
        elif isinstance(inst.detail, dict):
            _append(subelts, E('detail', root_dict_to_etree(inst.detail)))
        elif inst.detail is None:
            pass
        else:
            raise TypeError('Fault detail Must be dict, got', type(inst.detail))

        # add other nonstandard fault subelements with get_members_etree
        return self.gen_members_parent(ctx, cls, inst, parent, tag_name, subelts)
Example #10
0
    def fault_to_parent(self, ctx, cls, inst, parent, ns, *args, **kwargs):
        tag_name = "{%s}Fault" % self.ns_soap_env

        subelts = [
            E("faultcode", '%s:%s' % (self.soap_env, inst.faultcode)),
            E("faultstring", inst.faultstring),
            E("faultactor", inst.faultactor),
        ]

        # Accepting raw lxml objects as detail is deprecated. It's also not
        # documented. It's kept for backwards-compatibility purposes.
        if isinstance(inst.detail, string_types + (etree._Element,)):
            _append(subelts, E('detail', inst.detail))
        elif isinstance(inst.detail, dict):
            _append(subelts, E('detail', root_dict_to_etree(inst.detail)))
        elif inst.detail is None:
            pass
        else:
            raise TypeError('Fault detail Must be dict, got', type(inst.detail))

        # add other nonstandard fault subelements with get_members_etree
        return self.gen_members_parent(ctx, cls, inst, parent, tag_name, subelts)
Example #11
0
File: soap12.py Project: hozn/spyne
    def fault_to_parent(self, ctx, cls, inst, parent, ns, *args, **kwargs):
        tag_name = "{%s}Fault" % self.ns_soap_env

        reason = E("{%s}Reason" % self.ns_soap_env)
        reason.append(E("{%s}Text" % self.ns_soap_env, inst.faultstring,
                        **{'{%s}lang' % NS_XML: inst.lang}))

        subelts = [
            reason,
            E("{%s}Role" % self.ns_soap_env, inst.faultactor),
        ]

        if isinstance(inst.faultcode, string_types):
            value, faultcodes  = self.gen_fault_codes(inst.faultcode)

            code = E("{%s}Code" % self.ns_soap_env)
            code.append(E("{%s}Value" % self.ns_soap_env, value))

            child_subcode = 0
            for value in faultcodes:
                if child_subcode:
                    child_subcode = self.generate_subcode(value, child_subcode)
                else:
                    child_subcode = self.generate_subcode(value)
            code.append(child_subcode)

            _append(subelts, code)

        if isinstance(inst.detail, dict):
            _append(subelts, E('{%s}Detail' % self.ns_soap_env, root_dict_to_etree(inst.detail)))

        elif inst.detail is None:
            pass
        else:
            raise TypeError('Fault detail Must be dict, got', type(inst.detail))

        return self.gen_members_parent(ctx, cls, inst, parent, tag_name,
                                                        subelts, add_type=False)
Example #12
0
 def test_simple(self):
     from lxml.etree import tostring
     from spyne.util.etreeconv import root_dict_to_etree
     assert tostring(root_dict_to_etree({'a':{'b':'c'}})) == '<a><b>c</b></a>'
Example #13
0
    def test_any(self):
        val = root_dict_to_etree(self._get_xml_test_val())
        ret = self.client.service.echo_any(val)

        self.assertEquals(ret, val)
Example #14
0
    def test_simple(self):
        from lxml.etree import tostring
        from spyne.util.etreeconv import root_dict_to_etree

        assert tostring(root_dict_to_etree({"a": {"b": "c"}})) == "<a><b>c</b></a>"