From 970e15b2e235695b09d5e067d8ec74f493244d07 Mon Sep 17 00:00:00 2001 From: nahi Date: Tue, 25 Nov 2003 07:31:33 +0000 Subject: * lib/soap/**/*.rb, lib/wsdl/**/*.rb, lib/xsd/**/*.rb: changed license; GPL2 -> Ruby's. * lib/soap/rpc/driver.rb, lib/soap/wsdlDriver.rb, lib/soap/streamHandler.rb: add interface to streamhandler. * lib/soap/marshal.rb: raise error if parse fails. * lib/soap/netHttpClient.rb: add https support. Patched by Oliver M. Bolzer. * lib/soap/netHttpClient.rb: dump HTTP response message body by itself. * lib/soap/rpc/driver.rb, lib/soap/rpc/proxy.rb, lib/soap/wsdlDriver.rb: add driver#mandatorycharset interface to foce using charset for parsing response from buggy server. * lib/soap/encodingstyle/soapHandler.rb: support Apache Axis's half typed multi-ref array. * lib/soap/mapping/factory.rb, lib/soap/mapping/registry.rb: map SOAPStruct which has multi-accessors which name are the same, to an array. * lib/soap/rpc/element.rb: fixed illegal parameter order. * lib/soap/rpc/element.rb: element name of response message could have the name other than 'return'. * lib/wsdl/operation.rb, lib/wsdl/operationBinding.rb, lib/wsdl/soap/classDefCreator.rb, lib/wsdl/soap/methodDefCreator.rb, lib/wsdl/soap/methodDefCreatorSupport.rb: WSDL/1.1 allows plural fault definition in a operation. [ruby-talk:84948] * test/wsdl/multiplefault.wsdl, test/wsdl/test_multiplefault.rb: add test for above fix. * lib/wsdl/soap/complexType.rb: support WSDL array definition with maxOccures="unbound". * lib/xsd/charset.rb: use cp932 under emx. Patched by Siena. / SHINAGAWA, Norihide in [ruby-dev:21972] * lib/xsd/xmlparser/parser.rb: set @charset nil by default. Nil means 'follow encoding declaration in XML'. * sample/soap/digraph.rb, sample/wsdl/amazon/wsdlDriver.rb, sample/wsdl/googleSearch/sampleClient.rb, sample/wsdl/googleSearch/wsdlDriver.rb, test/wsdl/test_emptycomplextype.rb, test/wsdl/marshal/test_wsdlmarshal.rb, test/xsd/test_xmlschemaparser.rb: use File.open(...) { |f| f.read } instead of File.open(...).read. [ruby-dev:21964] * test/wsdl/emptycomplextype.wsdl, test/wsdl/test_emptycomplextype.rb: simplify the test case. * test/wsdl/axisArray/*: add tests for axis's array encoding. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@5022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/wsdl/axisArray/axisArray.wsdl | 60 ++++++++++++++++++++++ test/wsdl/axisArray/itemList.rb | 27 ++++++++++ test/wsdl/axisArray/test_axisarray.rb | 72 +++++++++++++++++++++++++++ test/wsdl/emptycomplextype.wsdl | 94 +++++++++-------------------------- test/wsdl/multiplefault.wsdl | 68 +++++++++++++++++++++++++ test/wsdl/test_emptycomplextype.rb | 8 +-- test/wsdl/test_multiplefault.rb | 39 +++++++++++++++ test/xsd/test_xmlschemaparser.rb | 9 ++-- test/xsd/xmlschema.xml | 5 +- 9 files changed, 300 insertions(+), 82 deletions(-) create mode 100644 test/wsdl/axisArray/axisArray.wsdl create mode 100644 test/wsdl/axisArray/itemList.rb create mode 100644 test/wsdl/axisArray/test_axisarray.rb create mode 100644 test/wsdl/multiplefault.wsdl create mode 100644 test/wsdl/test_multiplefault.rb (limited to 'test') diff --git a/test/wsdl/axisArray/axisArray.wsdl b/test/wsdl/axisArray/axisArray.wsdl new file mode 100644 index 000000000..3602edb74 --- /dev/null +++ b/test/wsdl/axisArray/axisArray.wsdl @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/wsdl/axisArray/itemList.rb b/test/wsdl/axisArray/itemList.rb new file mode 100644 index 000000000..b81297ed3 --- /dev/null +++ b/test/wsdl/axisArray/itemList.rb @@ -0,0 +1,27 @@ +# Generated by wsdl2ruby.rb with axisArray.wsdl. + +# urn:jp.gr.jin.rrr.example.itemListType +class Item + @@schema_type = "Item" + @@schema_ns = "urn:jp.gr.jin.rrr.example.itemListType" + + def name + @name + end + + def name=(value) + @name = value + end + + def initialize(name = nil) + @name = name + end +end + +# urn:jp.gr.jin.rrr.example.itemListType +class ItemList < Array + # Contents type should be dumped here... + @@schema_type = "ItemList" + @@schema_ns = "urn:jp.gr.jin.rrr.example.itemListType" +end + diff --git a/test/wsdl/axisArray/test_axisarray.rb b/test/wsdl/axisArray/test_axisarray.rb new file mode 100644 index 000000000..9c7b42564 --- /dev/null +++ b/test/wsdl/axisArray/test_axisarray.rb @@ -0,0 +1,72 @@ +require 'test/unit' +require 'soap/processor' +require 'soap/mapping' +require 'soap/rpc/element' +require 'wsdl/importer' + + +module WSDL + + +class TestAxisArray < Test::Unit::TestCase + def setup + dir = File.dirname(File.expand_path(__FILE__)) + $:.push(dir) + require 'itemList.rb' + $:.delete(dir) + @xml =<<__EOX__ + + + + + + + + + + + + + name3 + + + name1 + + + name2 + + + +__EOX__ + end + + def test_by_stub + header, body = ::SOAP::Processor.unmarshal(@xml) + ary = ::SOAP::Mapping.soap2obj(body.response) + assert_equal(3, ary.size) + assert_equal("name1", ary[0].name) + assert_equal("name2", ary[1].name) + assert_equal("name3", ary[2].name) + end + + def test_by_wsdl + wsdlfile = File.join(File.dirname(File.expand_path(__FILE__)), 'axisArray.wsdl') + wsdl = WSDL::Importer.import(wsdlfile) + service = wsdl.services[0] + port = service.ports[0] + wsdl_types = wsdl.collect_complextypes + rpc_decode_typemap = wsdl_types + wsdl.soap_rpc_complextypes(port.find_binding) + opt = {} + opt[:default_encodingstyle] = ::SOAP::EncodingNamespace + opt[:decode_typemap] = rpc_decode_typemap + header, body = ::SOAP::Processor.unmarshal(@xml, opt) + ary = ::SOAP::Mapping.soap2obj(body.response) + assert_equal(3, ary.size) + assert_equal("name1", ary[0].name) + assert_equal("name2", ary[1].name) + assert_equal("name3", ary[2].name) + end +end + + +end diff --git a/test/wsdl/emptycomplextype.wsdl b/test/wsdl/emptycomplextype.wsdl index afd8dc239..4f8dc4849 100644 --- a/test/wsdl/emptycomplextype.wsdl +++ b/test/wsdl/emptycomplextype.wsdl @@ -1,77 +1,31 @@ - - - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - doc doc doc. - - - - - diff --git a/test/wsdl/multiplefault.wsdl b/test/wsdl/multiplefault.wsdl new file mode 100644 index 000000000..2d928b60b --- /dev/null +++ b/test/wsdl/multiplefault.wsdl @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/wsdl/test_emptycomplextype.rb b/test/wsdl/test_emptycomplextype.rb index fffc8c85e..45136b417 100644 --- a/test/wsdl/test_emptycomplextype.rb +++ b/test/wsdl/test_emptycomplextype.rb @@ -6,16 +6,16 @@ module WSDL class TestWSDL < Test::Unit::TestCase - def self.setup(filename) - @@filename = filename + def setup + @file = File.join(File.dirname(__FILE__), 'emptycomplextype.wsdl') end def test_wsdl - @wsdl = WSDL::Parser.new.parse(File.open(@@filename).read) + @wsdl = WSDL::Parser.new.parse(File.open(@file) { |f| f.read }) + assert_equal("#", @wsdl.inspect) end end -TestWSDL.setup(File.join(File.dirname(__FILE__), 'emptycomplextype.wsdl')) end diff --git a/test/wsdl/test_multiplefault.rb b/test/wsdl/test_multiplefault.rb new file mode 100644 index 000000000..7004297dc --- /dev/null +++ b/test/wsdl/test_multiplefault.rb @@ -0,0 +1,39 @@ +require 'test/unit' +require 'wsdl/parser' +require 'wsdl/soap/classDefCreator' + + +module WSDL + + +class TestMultipleFault < Test::Unit::TestCase + def self.setup(filename) + @@filename = filename + end + + def test_multiplefault + @wsdl = WSDL::Parser.new.parse(File.open(@@filename) { |f| f.read }) + classdefstr = WSDL::SOAP::ClassDefCreator.new(@wsdl).dump + yield_eval_binding(classdefstr) do |b| + assert_equal( + WSDL::TestMultipleFault::AuthenticationError, + eval("AuthenticationError", b) + ) + assert_equal( + WSDL::TestMultipleFault::AuthorizationError, + eval("AuthorizationError", b) + ) + end + end + + def yield_eval_binding(evaled) + b = binding + eval(evaled, b) + yield(b) + end +end + +TestMultipleFault.setup(File.join(File.dirname(__FILE__), 'multiplefault.wsdl')) + + +end diff --git a/test/xsd/test_xmlschemaparser.rb b/test/xsd/test_xmlschemaparser.rb index b36212054..ab9421c95 100644 --- a/test/xsd/test_xmlschemaparser.rb +++ b/test/xsd/test_xmlschemaparser.rb @@ -6,16 +6,17 @@ module XSD class TestXMLSchemaParser < Test::Unit::TestCase - def self.setup(filename) - @@filename = filename + def setup + @file = File.join(File.dirname(__FILE__), 'xmlschema.xml') end def test_wsdl - @wsdl = WSDL::XMLSchema::Parser.new.parse(File.open(@@filename).read) + @wsdl = WSDL::XMLSchema::Parser.new.parse(File.open(@file) { |f| f.read }) + assert_equal(WSDL::XMLSchema::Schema, @wsdl.class) + assert_equal(1, @wsdl.collect_elements.size) end end -TestXMLSchemaParser.setup(File.join(File.dirname(__FILE__), 'xmlschema.xml')) end diff --git a/test/xsd/xmlschema.xml b/test/xsd/xmlschema.xml index 0e9914e64..018bd0cc6 100644 --- a/test/xsd/xmlschema.xml +++ b/test/xsd/xmlschema.xml @@ -1,11 +1,8 @@ -- cgit