From b7931c40fee8ec76c2ef0398f228e034d7ff64e4 Mon Sep 17 00:00:00 2001 From: nahi Date: Sat, 8 Nov 2003 09:52:42 +0000 Subject: * test/wsdl/raa/*: add new testcase for WSDL loading, parsing and reading. * test/soap/marshal/*: backport from soap4r/1.5.1. all differences are for ruby/1.6. * lib/soap/*: backport from soap4r/1.5.1. all differences are for ruby/1.6. * lib/wsdl/data.rb, lib/wsdl/xmlSchema/data.rb: move definition of ArrayTypeAttrName from ::WSDL::XMLSchema::* to ::WSDL::*. [ruby-talk:84813] * lib/wsdl/soap/definitions.rb: element name typo in custom exception struct definition which is needed for wsdlDriver; camelCase -> underscore_name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/wsdl/raa/RAA.rb | 254 ++++++++++++++++++++++++++++++++++++++++++++ test/wsdl/raa/README.txt | 5 + test/wsdl/raa/raa.wsdl | 264 ++++++++++++++++++++++++++++++++++++++++++++++ test/wsdl/raa/server.rb | 104 ++++++++++++++++++ test/wsdl/raa/test_raa.rb | 78 ++++++++++++++ 5 files changed, 705 insertions(+) create mode 100644 test/wsdl/raa/RAA.rb create mode 100644 test/wsdl/raa/README.txt create mode 100644 test/wsdl/raa/raa.wsdl create mode 100644 test/wsdl/raa/server.rb create mode 100644 test/wsdl/raa/test_raa.rb (limited to 'test/wsdl/raa') diff --git a/test/wsdl/raa/RAA.rb b/test/wsdl/raa/RAA.rb new file mode 100644 index 0000000000..32b88bd26a --- /dev/null +++ b/test/wsdl/raa/RAA.rb @@ -0,0 +1,254 @@ +# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/ +class Category + @@schema_type = "Category" + @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/" + + def major + @major + end + + def major=(value) + @major = value + end + + def minor + @minor + end + + def minor=(value) + @minor = value + end + + def initialize(major = nil, + minor = nil) + @major = major + @minor = minor + end +end + +# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/ +class Product + @@schema_type = "Product" + @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/" + + def id + @id + end + + def id=(value) + @id = value + end + + def name + @name + end + + def name=(value) + @name = value + end + + def short_description + @short_description + end + + def short_description=(value) + @short_description = value + end + + def version + @version + end + + def version=(value) + @version = value + end + + def status + @status + end + + def status=(value) + @status = value + end + + def homepage + @homepage + end + + def homepage=(value) + @homepage = value + end + + def download + @download + end + + def download=(value) + @download = value + end + + def license + @license + end + + def license=(value) + @license = value + end + + def description + @description + end + + def description=(value) + @description = value + end + + def initialize(id = nil, + name = nil, + short_description = nil, + version = nil, + status = nil, + homepage = nil, + download = nil, + license = nil, + description = nil) + @id = id + @name = name + @short_description = short_description + @version = version + @status = status + @homepage = homepage + @download = download + @license = license + @description = description + end +end + +# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/ +class Owner + @@schema_type = "Owner" + @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/" + + def id + @id + end + + def id=(value) + @id = value + end + + def email + @email + end + + def email=(value) + @email = value + end + + def name + @name + end + + def name=(value) + @name = value + end + + def initialize(id = nil, + email = nil, + name = nil) + @id = id + @email = email + @name = name + end +end + +# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/ +class Info + @@schema_type = "Info" + @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/" + + def category + @category + end + + def category=(value) + @category = value + end + + def product + @product + end + + def product=(value) + @product = value + end + + def owner + @owner + end + + def owner=(value) + @owner = value + end + + def created + @created + end + + def created=(value) + @created = value + end + + def updated + @updated + end + + def updated=(value) + @updated = value + end + + def initialize(category = nil, + product = nil, + owner = nil, + created = nil, + updated = nil) + @category = category + @product = product + @owner = owner + @created = created + @updated = updated + end +end + +# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/ +class InfoArray < Array + # Contents type should be dumped here... + @@schema_type = "InfoArray" + @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/" +end + +# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/ +class StringArray < Array + # Contents type should be dumped here... + @@schema_type = "StringArray" + @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/" +end + +# http://xml.apache.org/xml-soap +class Map + @@schema_type = "Map" + @@schema_ns = "http://xml.apache.org/xml-soap" + + def item + @item + end + + def item=(value) + @item = value + end + + def initialize(item = nil) + @item = item + end +end + diff --git a/test/wsdl/raa/README.txt b/test/wsdl/raa/README.txt new file mode 100644 index 0000000000..e884db9bb4 --- /dev/null +++ b/test/wsdl/raa/README.txt @@ -0,0 +1,5 @@ +server.rb: based on RAAService.rb which is generated with the following command; + bin/wsdl2ruby.rb --wsdl raa.wsdl --standalone_server_stub --force + +RAA.rb: generated with the following command; + bin/wsdl2ruby.rb --wsdl raa.wsdl --classdef --force diff --git a/test/wsdl/raa/raa.wsdl b/test/wsdl/raa/raa.wsdl new file mode 100644 index 0000000000..78376893dd --- /dev/null +++ b/test/wsdl/raa/raa.wsdl @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/wsdl/raa/server.rb b/test/wsdl/raa/server.rb new file mode 100644 index 0000000000..95e63dcd31 --- /dev/null +++ b/test/wsdl/raa/server.rb @@ -0,0 +1,104 @@ +#!/usr/bin/env ruby +require 'soap/rpc/standaloneServer' +require 'RAA.rb' + +class RAABaseServicePortType + MappingRegistry = SOAP::Mapping::Registry.new + + MappingRegistry.set( + StringArray, + ::SOAP::SOAPArray, + ::SOAP::Mapping::Registry::TypedArrayFactory, + { :type => XSD::QName.new("http://www.w3.org/2001/XMLSchema", "string") } + ) + MappingRegistry.set( + Map, + ::SOAP::SOAPStruct, + ::SOAP::Mapping::Registry::TypedStructFactory, + { :type => XSD::QName.new("http://xml.apache.org/xml-soap", "Map") } + ) + MappingRegistry.set( + Category, + ::SOAP::SOAPStruct, + ::SOAP::Mapping::Registry::TypedStructFactory, + { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Category") } + ) + MappingRegistry.set( + InfoArray, + ::SOAP::SOAPArray, + ::SOAP::Mapping::Registry::TypedArrayFactory, + { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info") } + ) + MappingRegistry.set( + Info, + ::SOAP::SOAPStruct, + ::SOAP::Mapping::Registry::TypedStructFactory, + { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info") } + ) + MappingRegistry.set( + Product, + ::SOAP::SOAPStruct, + ::SOAP::Mapping::Registry::TypedStructFactory, + { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Product") } + ) + MappingRegistry.set( + Owner, + ::SOAP::SOAPStruct, + ::SOAP::Mapping::Registry::TypedStructFactory, + { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Owner") } + ) + + Methods = [ + ["getAllListings", "getAllListings", [ + ["retval", "return", + [::SOAP::SOAPArray, "http://www.w3.org/2001/XMLSchema", "string"]]], + "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"], + ["getProductTree", "getProductTree", [ + ["retval", "return", + [::SOAP::SOAPStruct, "http://xml.apache.org/xml-soap", "Map"]]], + "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"], + ["getInfoFromCategory", "getInfoFromCategory", [ + ["in", "category", + [::SOAP::SOAPStruct, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Category"]], + ["retval", "return", + [::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], + "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"], + ["getModifiedInfoSince", "getModifiedInfoSince", [ + ["in", "timeInstant", + [SOAP::SOAPDateTime]], + ["retval", "return", + [::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], + "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"], + ["getInfoFromName", "getInfoFromName", [ + ["in", "productName", + [SOAP::SOAPString]], + ["retval", "return", + [::SOAP::SOAPStruct, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], + "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"], + ["getInfoFromOwnerId", "getInfoFromOwnerId", [ + ["in", "ownerId", + [SOAP::SOAPInt]], + ["retval", "return", + [::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], + "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"] + ] + + def getAllListings + ["ruby", "soap4r"] + end +end + +class RAABaseServiceServer < SOAP::RPC::StandaloneServer + def initialize(*arg) + super + + servant = RAABaseServicePortType.new + RAABaseServicePortType::Methods.each do |name_as, name, params, soapaction, namespace| + qname = XSD::QName.new(namespace, name_as) + @soaplet.app_scope_router.add_method(servant, qname, soapaction, + name, params) + end + + self.mapping_registry = RAABaseServicePortType::MappingRegistry + end +end diff --git a/test/wsdl/raa/test_raa.rb b/test/wsdl/raa/test_raa.rb new file mode 100644 index 0000000000..f90c6222f4 --- /dev/null +++ b/test/wsdl/raa/test_raa.rb @@ -0,0 +1,78 @@ +require 'test/unit' +require 'soap/wsdlDriver' + + +module WSDL +module RAA + + +class TestRAA < Test::Unit::TestCase + DIR = File.dirname(File.expand_path(__FILE__)) + + Port = 17171 + + def setup + setup_server + setup_client + end + + def setup_server + $:.push(DIR) + require File.join(DIR, 'server.rb') + $:.delete(DIR) + @server = RAABaseServiceServer.new('RAA server', nil, '0.0.0.0', Port) + @server.level = Logger::Severity::ERROR + @t = Thread.new { + Thread.current.abort_on_exception = true + @server.start + } + while @server.server.nil? or @server.server.status != :Running + sleep 0.1 + unless @t.alive? + @t.join + raise + end + end + end + + def setup_client + wsdl = File.join(DIR, 'raa.wsdl') + @raa = ::SOAP::WSDLDriverFactory.new(wsdl).create_driver + @raa.endpoint_url = "http://localhost:#{Port}/" + end + + def teardown + teardown_server + teardown_client + end + + def teardown_server + @server.server.shutdown + @t.kill + @t.join + end + + def teardown_client + @raa.reset_stream + end + + def test_raa + assert_equal(["ruby", "soap4r"], @raa.getAllListings) + end + + def foo + p @raa.getProductTree() + p @raa.getInfoFromCategory(Category.new("Library", "XML")) + t = Time.at(Time.now.to_i - 24 * 3600) + p @raa.getModifiedInfoSince(t) + p @raa.getModifiedInfoSince(DateTime.new(t.year, t.mon, t.mday, t.hour, t.min, t.sec)) + o = @raa.getInfoFromName("SOAP4R") + p o.type + p o.owner.name + p o + end +end + + +end +end -- cgit v1.2.3