require 'test/unit' require 'soap/processor' require 'soap/mapping' require 'soap/rpc/element' require 'wsdl/importer' require 'wsdl/soap/wsdl2ruby' require File.join(File.dirname(File.expand_path(__FILE__)), '..', '..', 'testutil.rb') module WSDL module AxisArray class TestAxisArray < Test::Unit::TestCase DIR = File.dirname(File.expand_path(__FILE__)) def setup @xml =<<__EOX__ name3 name1 name2 __EOX__ setup_classdef end def teardown unless $DEBUG File.unlink(pathname('itemList.rb')) File.unlink(pathname('itemListMappingRegistry.rb')) File.unlink(pathname('itemListDriver.rb')) end end def setup_classdef gen = WSDL::SOAP::WSDL2Ruby.new gen.location = pathname("axisArray.wsdl") gen.basedir = DIR gen.logger.level = Logger::FATAL gen.opt['classdef'] = nil gen.opt['mapping_registry'] = nil gen.opt['module_path'] = self.class.to_s.sub(/::[^:]+$/, '') gen.opt['driver'] = nil gen.opt['force'] = true gen.run TestUtil.require(DIR, 'itemListDriver.rb', 'itemList.rb', 'itemListMappingRegistry.rb') end def test_by_stub driver = ItemListPortType.new driver.test_loopback_response << @xml ary = driver.listItem 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 XML_LONG = <<__XML__ 105759347 __XML__ def test_multiref_long driver = ItemListPortType.new driver.test_loopback_response << XML_LONG ret = driver.getMeetingInfo assert_equal(105759347, ret.meetingId) end def pathname(filename) File.join(DIR, filename) end end end end