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