diff options
author | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-09-15 14:33:53 +0000 |
---|---|---|
committer | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-09-15 14:33:53 +0000 |
commit | 758b5ec9ce1150c8636de861cb447b840e8953a2 (patch) | |
tree | 6ac40e3bffcf1735c8b7efc0f412bccc15befa6a /test/wsdl/qualified | |
parent | 02fdcf93c3b55918f92fd34cf57688a2485aeb13 (diff) | |
download | ruby-758b5ec9ce1150c8636de861cb447b840e8953a2.tar.gz ruby-758b5ec9ce1150c8636de861cb447b840e8953a2.tar.xz ruby-758b5ec9ce1150c8636de861cb447b840e8953a2.zip |
* lib/{soap,wsdl,xsd}, test/{soap,wsdl,xsd}: imported soap4r/1.5.5.
#nnn is a ticket number at http://dev.ctor.org/soap4r
* SOAP
* allow to configure an envelope namespace of SOAP request. (#124)
TemporaryNamespace = 'http://www.w3.org/2003/05/soap-envelope'
@client.options["soap.envelope.requestnamespace"] =
TemporaryNamespace
@client.options["soap.envelope.responsenamespace"] =
TemporaryNamespace
@client.do_proc(...)
* let SOAP request XML indent space configuable. see
"soap.envelope.no_indent" option. (#130)
* let external CES configuable.
ex. client["soap.mapping.external_ces"] = 'SJIS'. $KCODE is used
by default. (#133)
external CES ::= CES used in Ruby object of client and server
internal CES ::= CES used in SOAP/OM
* add iso-8859-1 external CES support. (#106)
* fixed illegal 'qualified' handling of elements. it caused
ASP.NET inteoperability problem. (#144)
* added 'soap.envelope.use_numeric_character_reference' (boolean)
option to let query XML use numeric character reference in XML,
not plain UTF-8 character. !GoogleSearch server seems to not
allow plain UTF-8 character since 2005-08-15 update. (#147)
* SOAP::Header::SimpleHeader (de)serialization throws an exception
on !SimpleHeader.on_(in|out)bound when header is a String. so we
could not use a simple single element headerItem. fixed. thanks
to emil. (#129)
* out parameter of rpc operation did not work. (#132)
* follow HTTP redirect only if using http-access2. (#125) (#145)
* add a workaround for importing an WSDL whose path begins with
drive letter. (#115)
* WSDL
* SOAP Data which is defined as a simpletype was not mapped
correctly to Ruby obj when using wsdl2ruby.rb generated classdef
file. (#123)
* rpc/literal support. (#118)
* re-implemented local element qualify/unqualify control. handles
elementFormDefault and form in WSDL. (#119)
* Array of an element which has simpleType causes a crash. (#128)
* prarmeterOrder may not contain return part so it can be shorter
than parts size. Thanks to Hugh. (#139)
* Samples
* added !BasicAuth client sample. (#117)
* added Base64 client/server sample.
* added Flickr SOAP interface client sample. (#122)
* added !SalesForce client sample. (#135)
* updated Thawte CA certificate for !GoogleAdWords sample.
* updated a client script with the newer version made by Johan.
thanks!
* shortened long file names. (#120)
* fixed typo in authheader sample. (#129)
* updated deprecated method usage. (#138)
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@9169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/wsdl/qualified')
-rw-r--r-- | test/wsdl/qualified/lp.wsdl | 47 | ||||
-rw-r--r-- | test/wsdl/qualified/lp.xsd | 26 | ||||
-rw-r--r-- | test/wsdl/qualified/np.wsdl | 50 | ||||
-rw-r--r-- | test/wsdl/qualified/test_qualified.rb | 154 | ||||
-rw-r--r-- | test/wsdl/qualified/test_unqualified.rb | 143 |
5 files changed, 420 insertions, 0 deletions
diff --git a/test/wsdl/qualified/lp.wsdl b/test/wsdl/qualified/lp.wsdl new file mode 100644 index 000000000..b107b7b39 --- /dev/null +++ b/test/wsdl/qualified/lp.wsdl @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8"?> +<definitions + name="lp" + targetNamespace="urn:lp" + xmlns:tns="urn:lp" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" + xmlns="http://schemas.xmlsoap.org/wsdl/"> + <types> + <schema xmlns="http://www.w3.org/2001/XMLSchema"> + <import namespace="urn:lp" schemaLocation="lp.xsd"/> + </schema> + </types> + + <message name="login_in"> + <part name="parameters" element="tns:login" /> + </message> + <message name="login_out"> + <part name="parameters" element="tns:loginResponse" /> + </message> + + <portType name="lp_porttype"> + <operation name="login"> + <input message="tns:login_in" /> + <output message="tns:login_out" /> + </operation> + </portType> + + <binding name="lp_binding" type="tns:lp_porttype"> + <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> + <operation name="login"> + <soap:operation soapAction="urn:lp:login" style="document" /> + <input> + <soap:body use="literal" /> + </input> + <output> + <soap:body use="literal" /> + </output> + </operation> + </binding> + + <service name="lp_service"> + <port name="lp_service_port" binding="tns:lp_binding"> + <soap:address location="http://localhost:17171/" /> + </port> + </service> +</definitions> diff --git a/test/wsdl/qualified/lp.xsd b/test/wsdl/qualified/lp.xsd new file mode 100644 index 000000000..12bcbd8ce --- /dev/null +++ b/test/wsdl/qualified/lp.xsd @@ -0,0 +1,26 @@ +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:lp="urn:lp" targetNamespace="urn:lp" elementFormDefault="unqualified"> + + <xs:complexType name="login"> + <xs:sequence> + <xs:element name="username" type="xs:string"/> + <xs:element name="password" type="xs:string"/> + <xs:element name="timezone" type="xs:string" minOccurs="0" maxOccurs="1"/> + </xs:sequence> + </xs:complexType> + + <xs:element name="login" type="lp:login"/> + + <xs:complexType name="loginResponse"> + <xs:sequence> + <xs:element name="loginResult"> + <xs:complexType> + <xs:sequence> + <xs:element name="sessionID" type="xs:string"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + + <xs:element name="loginResponse" type="lp:loginResponse"/> +</xs:schema> diff --git a/test/wsdl/qualified/np.wsdl b/test/wsdl/qualified/np.wsdl new file mode 100644 index 000000000..e2b7253d0 --- /dev/null +++ b/test/wsdl/qualified/np.wsdl @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="utf-8"?> +<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www50.brinkster.com/vbfacileinpt/np" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://www50.brinkster.com/vbfacileinpt/np" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> + <wsdl:types> + <s:schema elementFormDefault="qualified" targetNamespace="http://www50.brinkster.com/vbfacileinpt/np"> + <s:element name="GetPrimeNumbers"> + <s:complexType> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="Max" type="s:string" /> + </s:sequence> + </s:complexType> + </s:element> + <s:element name="GetPrimeNumbersResponse"> + <s:complexType> + <s:sequence> + <s:element minOccurs="0" maxOccurs="1" name="GetPrimeNumbersResult" type="s:string" /> + </s:sequence> + </s:complexType> + </s:element> + </s:schema> + </wsdl:types> + <wsdl:message name="GetPrimeNumbersSoapIn"> + <wsdl:part name="parameters" element="tns:GetPrimeNumbers" /> + </wsdl:message> + <wsdl:message name="GetPrimeNumbersSoapOut"> + <wsdl:part name="parameters" element="tns:GetPrimeNumbersResponse" /> + </wsdl:message> + <wsdl:portType name="pnumSoap"> + <wsdl:operation name="GetPrimeNumbers"> + <wsdl:input message="tns:GetPrimeNumbersSoapIn" /> + <wsdl:output message="tns:GetPrimeNumbersSoapOut" /> + </wsdl:operation> + </wsdl:portType> + <wsdl:binding name="pnumSoap" type="tns:pnumSoap"> + <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> + <wsdl:operation name="GetPrimeNumbers"> + <soap:operation soapAction="http://www50.brinkster.com/vbfacileinpt/np/GetPrimeNumbers" style="document" /> + <wsdl:input> + <soap:body use="literal" /> + </wsdl:input> + <wsdl:output> + <soap:body use="literal" /> + </wsdl:output> + </wsdl:operation> + </wsdl:binding> + <wsdl:service name="pnum"> + <wsdl:port name="pnumSoap" binding="tns:pnumSoap"> + <soap:address location="http://www50.brinkster.com/vbfacileinpt/np.asmx" /> + </wsdl:port> + </wsdl:service> +</wsdl:definitions>
\ No newline at end of file diff --git a/test/wsdl/qualified/test_qualified.rb b/test/wsdl/qualified/test_qualified.rb new file mode 100644 index 000000000..d6c1159a8 --- /dev/null +++ b/test/wsdl/qualified/test_qualified.rb @@ -0,0 +1,154 @@ +require 'test/unit' +require 'wsdl/soap/wsdl2ruby' +require 'soap/rpc/standaloneServer' +require 'soap/wsdlDriver' + +if defined?(HTTPAccess2) + +module WSDL + + +class TestQualified < Test::Unit::TestCase + class Server < ::SOAP::RPC::StandaloneServer + Namespace = 'http://www50.brinkster.com/vbfacileinpt/np' + + def on_init + add_document_method( + self, + Namespace + '/GetPrimeNumbers', + 'GetPrimeNumbers', + XSD::QName.new(Namespace, 'GetPrimeNumbers'), + XSD::QName.new(Namespace, 'GetPrimeNumbersResponse') + ) + end + + def GetPrimeNumbers(arg) + nil + end + end + + DIR = File.dirname(File.expand_path(__FILE__)) + Port = 17171 + + def setup + setup_server + setup_clientdef + @client = nil + end + + def teardown + teardown_server + unless $DEBUG + File.unlink(pathname('default.rb')) + File.unlink(pathname('defaultDriver.rb')) + end + @client.reset_stream if @client + end + + def setup_server + @server = Server.new('Test', "urn:lp", '0.0.0.0', Port) + @server.level = Logger::Severity::ERROR + @server_thread = start_server_thread(@server) + end + + def setup_clientdef + backupdir = Dir.pwd + begin + Dir.chdir(DIR) + gen = WSDL::SOAP::WSDL2Ruby.new + gen.location = pathname("np.wsdl") + gen.basedir = DIR + gen.logger.level = Logger::FATAL + gen.opt['classdef'] = nil + gen.opt['driver'] = nil + gen.opt['force'] = true + gen.run + require pathname('default.rb') + ensure + Dir.chdir(backupdir) + end + end + + def teardown_server + @server.shutdown + @server_thread.kill + @server_thread.join + end + + def start_server_thread(server) + t = Thread.new { + Thread.current.abort_on_exception = true + server.start + } + t + end + + def pathname(filename) + File.join(DIR, filename) + end + + LOGIN_REQUEST_QUALIFIED_NS = +%q[<?xml version="1.0" encoding="utf-8" ?> +<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <env:Body> + <n1:GetPrimeNumbers xmlns:n1="http://www50.brinkster.com/vbfacileinpt/np"> + <n1:Max>10</n1:Max> + </n1:GetPrimeNumbers> + </env:Body> +</env:Envelope>] + + LOGIN_REQUEST_QUALIFIED = +%q[<?xml version="1.0" encoding="utf-8" ?> +<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <env:Body> + <GetPrimeNumbers xmlns="http://www50.brinkster.com/vbfacileinpt/np"> + <Max>10</Max> + </GetPrimeNumbers> + </env:Body> +</env:Envelope>] + + def test_wsdl + wsdl = File.join(DIR, 'np.wsdl') + @client = nil + backupdir = Dir.pwd + begin + Dir.chdir(DIR) + @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver + ensure + Dir.chdir(backupdir) + end + @client.endpoint_url = "http://localhost:#{Port}/" + @client.wiredump_dev = str = '' + @client.GetPrimeNumbers(:Max => 10) + assert_equal(LOGIN_REQUEST_QUALIFIED_NS, parse_requestxml(str)) + end + + include ::SOAP + def test_naive + backupdir = Dir.pwd + begin + Dir.chdir(DIR) + require pathname('defaultDriver') + ensure + Dir.chdir(backupdir) + end + @client = PnumSoap.new("http://localhost:#{Port}/") + + @client.wiredump_dev = str = '' + @client.getPrimeNumbers(GetPrimeNumbers.new(10)) + assert_equal(LOGIN_REQUEST_QUALIFIED, parse_requestxml(str)) + end + + def parse_requestxml(str) + str.split(/\r?\n\r?\n/)[3] + end +end + + +end + +end diff --git a/test/wsdl/qualified/test_unqualified.rb b/test/wsdl/qualified/test_unqualified.rb new file mode 100644 index 000000000..bcfed73e5 --- /dev/null +++ b/test/wsdl/qualified/test_unqualified.rb @@ -0,0 +1,143 @@ +require 'test/unit' +require 'wsdl/soap/wsdl2ruby' +require 'soap/rpc/standaloneServer' +require 'soap/wsdlDriver' + +if defined?(HTTPAccess2) + +module WSDL + + +class TestUnqualified < Test::Unit::TestCase + class Server < ::SOAP::RPC::StandaloneServer + Namespace = 'urn:lp' + + def on_init + add_document_method( + self, + Namespace + ':login', + 'login', + XSD::QName.new(Namespace, 'login'), + XSD::QName.new(Namespace, 'loginResponse') + ) + end + + def login(arg) + nil + end + end + + DIR = File.dirname(File.expand_path(__FILE__)) + Port = 17171 + + def setup + setup_server + setup_clientdef + @client = nil + end + + def teardown + teardown_server + File.unlink(pathname('lp.rb')) + File.unlink(pathname('lpDriver.rb')) + @client.reset_stream if @client + end + + def setup_server + @server = Server.new('Test', "urn:lp", '0.0.0.0', Port) + @server.level = Logger::Severity::ERROR + @server_thread = start_server_thread(@server) + end + + def setup_clientdef + backupdir = Dir.pwd + begin + Dir.chdir(DIR) + gen = WSDL::SOAP::WSDL2Ruby.new + gen.location = pathname("lp.wsdl") + gen.basedir = DIR + gen.logger.level = Logger::FATAL + gen.opt['classdef'] = nil + gen.opt['driver'] = nil + gen.opt['force'] = true + gen.run + require pathname('lp') + ensure + Dir.chdir(backupdir) + end + end + + def teardown_server + @server.shutdown + @server_thread.kill + @server_thread.join + end + + def start_server_thread(server) + t = Thread.new { + Thread.current.abort_on_exception = true + server.start + } + t + end + + def pathname(filename) + File.join(DIR, filename) + end + + LOGIN_REQUEST_QUALIFIED = +%q[<?xml version="1.0" encoding="utf-8" ?> +<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <env:Body> + <n1:login xmlns:n1="urn:lp"> + <username>NaHi</username> + <password>passwd</password> + <timezone>JST</timezone> + </n1:login> + </env:Body> +</env:Envelope>] + + def test_wsdl + wsdl = File.join(DIR, 'lp.wsdl') + @client = nil + backupdir = Dir.pwd + begin + Dir.chdir(DIR) + @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver + ensure + Dir.chdir(backupdir) + end + @client.endpoint_url = "http://localhost:#{Port}/" + @client.wiredump_dev = str = '' + @client.login(:timezone => 'JST', :password => 'passwd', + :username => 'NaHi') + assert_equal(LOGIN_REQUEST_QUALIFIED, parse_requestxml(str)) + end + + include ::SOAP + def test_naive + backupdir = Dir.pwd + begin + Dir.chdir(DIR) + require pathname('lpDriver') + ensure + Dir.chdir(backupdir) + end + @client = Lp_porttype.new("http://localhost:#{Port}/") + + @client.wiredump_dev = str = '' + @client.login(Login.new('NaHi', 'passwd', 'JST')) + assert_equal(LOGIN_REQUEST_QUALIFIED, parse_requestxml(str)) + end + + def parse_requestxml(str) + str.split(/\r?\n\r?\n/)[3] + end +end + + +end + +end |