soap4r 1.5.5.20061022

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) hide show
  1. data/bin/wsdl2ruby.rb +131 -0
  2. data/bin/xsd2ruby.rb +82 -0
  3. data/lib/soap/XMLSchemaDatatypes.rb +9 -0
  4. data/lib/soap/XMLSchemaDatatypes1999.rb +10 -0
  5. data/lib/soap/attachment.rb +108 -0
  6. data/lib/soap/baseData.rb +992 -0
  7. data/lib/soap/cgistub.rb +9 -0
  8. data/lib/soap/charset.rb +9 -0
  9. data/lib/soap/compat.rb +182 -0
  10. data/lib/soap/driver.rb +9 -0
  11. data/lib/soap/element.rb +266 -0
  12. data/lib/soap/encodingstyle/aspDotNetHandler.rb +207 -0
  13. data/lib/soap/encodingstyle/handler.rb +109 -0
  14. data/lib/soap/encodingstyle/literalHandler.rb +241 -0
  15. data/lib/soap/encodingstyle/soapHandler.rb +598 -0
  16. data/lib/soap/generator.rb +264 -0
  17. data/lib/soap/header/handler.rb +60 -0
  18. data/lib/soap/header/handlerset.rb +70 -0
  19. data/lib/soap/header/simplehandler.rb +44 -0
  20. data/lib/soap/httpconfigloader.rb +119 -0
  21. data/lib/soap/mapping.rb +12 -0
  22. data/lib/soap/mapping/encodedregistry.rb +531 -0
  23. data/lib/soap/mapping/factory.rb +372 -0
  24. data/lib/soap/mapping/literalregistry.rb +321 -0
  25. data/lib/soap/mapping/mapping.rb +561 -0
  26. data/lib/soap/mapping/registry.rb +258 -0
  27. data/lib/soap/mapping/rubytypeFactory.rb +475 -0
  28. data/lib/soap/mapping/typeMap.rb +82 -0
  29. data/lib/soap/mapping/wsdlencodedregistry.rb +253 -0
  30. data/lib/soap/mapping/wsdlliteralregistry.rb +246 -0
  31. data/lib/soap/mappingRegistry.rb +9 -0
  32. data/lib/soap/marshal.rb +59 -0
  33. data/lib/soap/mimemessage.rb +241 -0
  34. data/lib/soap/namespace.rb +9 -0
  35. data/lib/soap/netHttpClient.rb +204 -0
  36. data/lib/soap/parser.rb +251 -0
  37. data/lib/soap/processor.rb +66 -0
  38. data/lib/soap/property.rb +333 -0
  39. data/lib/soap/proxy.rb +14 -0
  40. data/lib/soap/qname.rb +9 -0
  41. data/lib/soap/rpc/cgistub.rb +214 -0
  42. data/lib/soap/rpc/driver.rb +245 -0
  43. data/lib/soap/rpc/element.rb +330 -0
  44. data/lib/soap/rpc/httpserver.rb +143 -0
  45. data/lib/soap/rpc/proxy.rb +563 -0
  46. data/lib/soap/rpc/router.rb +602 -0
  47. data/lib/soap/rpc/rpc.rb +25 -0
  48. data/lib/soap/rpc/soaplet.rb +162 -0
  49. data/lib/soap/rpc/standaloneServer.rb +43 -0
  50. data/lib/soap/rpcRouter.rb +9 -0
  51. data/lib/soap/rpcUtils.rb +9 -0
  52. data/lib/soap/server.rb +9 -0
  53. data/lib/soap/soap.rb +150 -0
  54. data/lib/soap/standaloneServer.rb +9 -0
  55. data/lib/soap/streamHandler.rb +258 -0
  56. data/lib/soap/wsdlDriver.rb +580 -0
  57. data/lib/wsdl/binding.rb +65 -0
  58. data/lib/wsdl/data.rb +64 -0
  59. data/lib/wsdl/definitions.rb +250 -0
  60. data/lib/wsdl/documentation.rb +32 -0
  61. data/lib/wsdl/import.rb +80 -0
  62. data/lib/wsdl/importer.rb +38 -0
  63. data/lib/wsdl/info.rb +39 -0
  64. data/lib/wsdl/message.rb +54 -0
  65. data/lib/wsdl/operation.rb +175 -0
  66. data/lib/wsdl/operationBinding.rb +116 -0
  67. data/lib/wsdl/param.rb +85 -0
  68. data/lib/wsdl/parser.rb +163 -0
  69. data/lib/wsdl/part.rb +52 -0
  70. data/lib/wsdl/port.rb +84 -0
  71. data/lib/wsdl/portType.rb +75 -0
  72. data/lib/wsdl/service.rb +61 -0
  73. data/lib/wsdl/soap/address.rb +40 -0
  74. data/lib/wsdl/soap/binding.rb +49 -0
  75. data/lib/wsdl/soap/body.rb +56 -0
  76. data/lib/wsdl/soap/cgiStubCreator.rb +88 -0
  77. data/lib/wsdl/soap/classDefCreator.rb +340 -0
  78. data/lib/wsdl/soap/classDefCreatorSupport.rb +131 -0
  79. data/lib/wsdl/soap/clientSkeltonCreator.rb +93 -0
  80. data/lib/wsdl/soap/complexType.rb +166 -0
  81. data/lib/wsdl/soap/data.rb +42 -0
  82. data/lib/wsdl/soap/definitions.rb +151 -0
  83. data/lib/wsdl/soap/driverCreator.rb +110 -0
  84. data/lib/wsdl/soap/element.rb +28 -0
  85. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +117 -0
  86. data/lib/wsdl/soap/fault.rb +56 -0
  87. data/lib/wsdl/soap/header.rb +86 -0
  88. data/lib/wsdl/soap/headerfault.rb +56 -0
  89. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +188 -0
  90. data/lib/wsdl/soap/mappingRegistryCreator.rb +53 -0
  91. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +233 -0
  92. data/lib/wsdl/soap/methodDefCreator.rb +253 -0
  93. data/lib/wsdl/soap/operation.rb +122 -0
  94. data/lib/wsdl/soap/servantSkeltonCreator.rb +78 -0
  95. data/lib/wsdl/soap/standaloneServerStubCreator.rb +98 -0
  96. data/lib/wsdl/soap/wsdl2ruby.rb +196 -0
  97. data/lib/wsdl/types.rb +44 -0
  98. data/lib/wsdl/wsdl.rb +23 -0
  99. data/lib/wsdl/xmlSchema/all.rb +24 -0
  100. data/lib/wsdl/xmlSchema/annotation.rb +34 -0
  101. data/lib/wsdl/xmlSchema/any.rb +56 -0
  102. data/lib/wsdl/xmlSchema/attribute.rb +123 -0
  103. data/lib/wsdl/xmlSchema/choice.rb +55 -0
  104. data/lib/wsdl/xmlSchema/complexContent.rb +88 -0
  105. data/lib/wsdl/xmlSchema/complexExtension.rb +104 -0
  106. data/lib/wsdl/xmlSchema/complexRestriction.rb +92 -0
  107. data/lib/wsdl/xmlSchema/complexType.rb +152 -0
  108. data/lib/wsdl/xmlSchema/content.rb +74 -0
  109. data/lib/wsdl/xmlSchema/data.rb +90 -0
  110. data/lib/wsdl/xmlSchema/element.rb +158 -0
  111. data/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  112. data/lib/wsdl/xmlSchema/import.rb +65 -0
  113. data/lib/wsdl/xmlSchema/importer.rb +87 -0
  114. data/lib/wsdl/xmlSchema/include.rb +54 -0
  115. data/lib/wsdl/xmlSchema/length.rb +35 -0
  116. data/lib/wsdl/xmlSchema/list.rb +48 -0
  117. data/lib/wsdl/xmlSchema/maxlength.rb +35 -0
  118. data/lib/wsdl/xmlSchema/minlength.rb +35 -0
  119. data/lib/wsdl/xmlSchema/parser.rb +166 -0
  120. data/lib/wsdl/xmlSchema/pattern.rb +36 -0
  121. data/lib/wsdl/xmlSchema/schema.rb +144 -0
  122. data/lib/wsdl/xmlSchema/sequence.rb +51 -0
  123. data/lib/wsdl/xmlSchema/simpleContent.rb +69 -0
  124. data/lib/wsdl/xmlSchema/simpleExtension.rb +54 -0
  125. data/lib/wsdl/xmlSchema/simpleRestriction.rb +91 -0
  126. data/lib/wsdl/xmlSchema/simpleType.rb +80 -0
  127. data/lib/wsdl/xmlSchema/unique.rb +34 -0
  128. data/lib/wsdl/xmlSchema/xsd2ruby.rb +107 -0
  129. data/lib/xsd/charset.rb +187 -0
  130. data/lib/xsd/codegen.rb +12 -0
  131. data/lib/xsd/codegen/classdef.rb +203 -0
  132. data/lib/xsd/codegen/commentdef.rb +34 -0
  133. data/lib/xsd/codegen/gensupport.rb +168 -0
  134. data/lib/xsd/codegen/methoddef.rb +70 -0
  135. data/lib/xsd/codegen/moduledef.rb +191 -0
  136. data/lib/xsd/datatypes.rb +1282 -0
  137. data/lib/xsd/datatypes1999.rb +20 -0
  138. data/lib/xsd/iconvcharset.rb +33 -0
  139. data/lib/xsd/mapping.rb +42 -0
  140. data/lib/xsd/namedelements.rb +124 -0
  141. data/lib/xsd/ns.rb +146 -0
  142. data/lib/xsd/qname.rb +78 -0
  143. data/lib/xsd/xmlparser.rb +61 -0
  144. data/lib/xsd/xmlparser/parser.rb +96 -0
  145. data/lib/xsd/xmlparser/rexmlparser.rb +54 -0
  146. data/lib/xsd/xmlparser/xmlparser.rb +50 -0
  147. data/lib/xsd/xmlparser/xmlscanner.rb +147 -0
  148. data/test/16runner.rb +68 -0
  149. data/test/interopR2/README.txt +2 -0
  150. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  151. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  152. data/test/interopR2/base.rb +288 -0
  153. data/test/interopR2/client.NetRemoting.rb +17 -0
  154. data/test/interopR2/client.NetRemoting.rb.result +3410 -0
  155. data/test/interopR2/client.NetRemoting_Base.log +6279 -0
  156. data/test/interopR2/client.NetRemoting_GroupB.log +1188 -0
  157. data/test/interopR2/client.rb +1228 -0
  158. data/test/interopR2/client4S4C.rb +15 -0
  159. data/test/interopR2/client4S4C2.rb +14 -0
  160. data/test/interopR2/client4S4C2_Base.log +4955 -0
  161. data/test/interopR2/client4S4C2_GroupB.log +1000 -0
  162. data/test/interopR2/client4S4C_Base.log +4635 -0
  163. data/test/interopR2/client4S4C_GroupB.log +900 -0
  164. data/test/interopR2/clientASP.NET.rb +17 -0
  165. data/test/interopR2/clientASP.NET_Base.log +5468 -0
  166. data/test/interopR2/clientASP.NET_GroupB.log +977 -0
  167. data/test/interopR2/clientApacheAxis.rb +16 -0
  168. data/test/interopR2/clientApacheAxis_Base.log +3171 -0
  169. data/test/interopR2/clientApacheAxis_GroupB.log +498 -0
  170. data/test/interopR2/clientApacheSOAP.rb +17 -0
  171. data/test/interopR2/clientApacheSOAP_Base.log +3171 -0
  172. data/test/interopR2/clientBEAWebLogic.rb +17 -0
  173. data/test/interopR2/clientBEAWebLogic_Base.log +3171 -0
  174. data/test/interopR2/clientBEAWebLogic_GroupB.log +498 -0
  175. data/test/interopR2/clientBase.rb +1970 -0
  176. data/test/interopR2/clientCapeConnect.rb +18 -0
  177. data/test/interopR2/clientCapeConnect_Base.log +2126 -0
  178. data/test/interopR2/clientDelphi.rb +19 -0
  179. data/test/interopR2/clientDelphi_Base.log +0 -0
  180. data/test/interopR2/clientEasySoap.rb +14 -0
  181. data/test/interopR2/clientEasySoap_Base.log +6187 -0
  182. data/test/interopR2/clientEasySoap_GroupB.log +1076 -0
  183. data/test/interopR2/clientFrontier.rb +25 -0
  184. data/test/interopR2/clientFrontier_Base.log +5188 -0
  185. data/test/interopR2/clientGLUE.rb +32 -0
  186. data/test/interopR2/clientHP.rb +13 -0
  187. data/test/interopR2/clientHP_Base.log +3171 -0
  188. data/test/interopR2/clientHP_GroupB.log +498 -0
  189. data/test/interopR2/clientJAX-RPC.rb +19 -0
  190. data/test/interopR2/clientJSOAP.rb +14 -0
  191. data/test/interopR2/clientJSOAP_Base.log +4465 -0
  192. data/test/interopR2/clientJSOAP_GroupB.log +824 -0
  193. data/test/interopR2/clientKafkaXSLT.rb +15 -0
  194. data/test/interopR2/clientKafkaXSLT_Base.log +10299 -0
  195. data/test/interopR2/clientKafkaXSLT_GroupB.log +1739 -0
  196. data/test/interopR2/clientMSSOAPToolkit2.0.rb +17 -0
  197. data/test/interopR2/clientMSSOAPToolkit2.0_Base.log +4805 -0
  198. data/test/interopR2/clientMSSOAPToolkit2.0_GroupB.log +871 -0
  199. data/test/interopR2/clientMSSOAPToolkit3.0.rb +17 -0
  200. data/test/interopR2/clientMSSOAPToolkit3.0_Base.log +5076 -0
  201. data/test/interopR2/clientMSSOAPToolkit3.0_GroupB.log +908 -0
  202. data/test/interopR2/clientNuSOAP.rb +19 -0
  203. data/test/interopR2/clientNuSOAP_Base.log +5076 -0
  204. data/test/interopR2/clientNuSOAP_GroupB.log +958 -0
  205. data/test/interopR2/clientNuWave.rb +15 -0
  206. data/test/interopR2/clientNuWave_Base.log +2019 -0
  207. data/test/interopR2/clientOpenLink.rb +15 -0
  208. data/test/interopR2/clientOpenLink_Base.log +6171 -0
  209. data/test/interopR2/clientOpenLink_GroupB.log +1094 -0
  210. data/test/interopR2/clientOracle.rb +15 -0
  211. data/test/interopR2/clientOracle_Base.log +5594 -0
  212. data/test/interopR2/clientPEAR.rb +18 -0
  213. data/test/interopR2/clientPEAR_Base.log +6261 -0
  214. data/test/interopR2/clientPEAR_GroupB.log +1106 -0
  215. data/test/interopR2/clientPhalanx.rb +18 -0
  216. data/test/interopR2/clientPhalanx_Base.log +41036 -0
  217. data/test/interopR2/clientPhalanx_GroupB.log +6519 -0
  218. data/test/interopR2/clientSIMACE.rb +18 -0
  219. data/test/interopR2/clientSIMACE_Base.log +6171 -0
  220. data/test/interopR2/clientSIMACE_GroupB.log +1093 -0
  221. data/test/interopR2/clientSOAP4R.rb +18 -0
  222. data/test/interopR2/clientSOAP4R.rb.result +3409 -0
  223. data/test/interopR2/clientSOAP4R_Base.log +6366 -0
  224. data/test/interopR2/clientSOAP4R_GroupB.log +1112 -0
  225. data/test/interopR2/clientSOAP__Lite.rb +14 -0
  226. data/test/interopR2/clientSQLData.rb +18 -0
  227. data/test/interopR2/clientSQLData_Base.log +4857 -0
  228. data/test/interopR2/clientSQLData_GroupB.log +770 -0
  229. data/test/interopR2/clientSilverStream.rb +17 -0
  230. data/test/interopR2/clientSilverStream_Base.log +3171 -0
  231. data/test/interopR2/clientSpray2001.rb +17 -0
  232. data/test/interopR2/clientSpray2001_Base.log +8187 -0
  233. data/test/interopR2/clientSpray2001_GroupB.log +1408 -0
  234. data/test/interopR2/clientSun.rb +19 -0
  235. data/test/interopR2/clientSun_Base.log +4641 -0
  236. data/test/interopR2/clientSun_GroupB.log +856 -0
  237. data/test/interopR2/clientVWOpentalkSoap.rb +19 -0
  238. data/test/interopR2/clientVWOpentalkSoap_Base.log +5402 -0
  239. data/test/interopR2/clientVWOpentalkSoap_GroupB.log +972 -0
  240. data/test/interopR2/clientWASP.rb +19 -0
  241. data/test/interopR2/clientWASPC.rb +18 -0
  242. data/test/interopR2/clientWASPC_Base.log +4187 -0
  243. data/test/interopR2/clientWASPC_GroupB.log +763 -0
  244. data/test/interopR2/clientWASP_Base.log +5414 -0
  245. data/test/interopR2/clientWASP_GroupB.log +970 -0
  246. data/test/interopR2/clientWebMethods.rb +15 -0
  247. data/test/interopR2/clientWebMethods_Base.log +3075 -0
  248. data/test/interopR2/clientWebMethods_GroupB.log +483 -0
  249. data/test/interopR2/clientWhiteMesa.rb +28 -0
  250. data/test/interopR2/clientWhiteMesa_Base.log +4359 -0
  251. data/test/interopR2/clientWhiteMesa_GroupB.log +808 -0
  252. data/test/interopR2/clientWingfoot.rb +15 -0
  253. data/test/interopR2/clientWingfoot_Base.log +4445 -0
  254. data/test/interopR2/clientWingfoot_GroupB.log +848 -0
  255. data/test/interopR2/clientXMLBus.rb +19 -0
  256. data/test/interopR2/clientXMLBus_Base.log +3075 -0
  257. data/test/interopR2/clientXMLBus_GroupB.log +483 -0
  258. data/test/interopR2/clientXMLRPC-EPI.rb +17 -0
  259. data/test/interopR2/clientXSOAP.rb +14 -0
  260. data/test/interopR2/clientXSOAP_Base.log +4445 -0
  261. data/test/interopR2/clientZSI.rb +19 -0
  262. data/test/interopR2/clienteSOAP.rb +18 -0
  263. data/test/interopR2/clienteSOAP_Base.log +8728 -0
  264. data/test/interopR2/clientgSOAP.rb +18 -0
  265. data/test/interopR2/clientgSOAP_Base.log +4689 -0
  266. data/test/interopR2/clientgSOAP_GroupB.log +1014 -0
  267. data/test/interopR2/clientkSOAP.rb +17 -0
  268. data/test/interopR2/clientkSOAP_Base.log +5625 -0
  269. data/test/interopR2/iSimonReg.rb +112 -0
  270. data/test/interopR2/interopResultBase.rb +114 -0
  271. data/test/interopR2/interopService.rb +247 -0
  272. data/test/interopR2/result_client.NetRemoting.txt +4593 -0
  273. data/test/interopR2/rwikiInteropService.rb +105 -0
  274. data/test/interopR2/server.cgi +270 -0
  275. data/test/interopR2/server.rb +274 -0
  276. data/test/interopR2/simonReg.rb +123 -0
  277. data/test/interopR2/test.sh +49 -0
  278. data/test/interopR4/client.rb +112 -0
  279. data/test/runner.rb +9 -0
  280. data/test/sm11/classDef.rb +156 -0
  281. data/test/sm11/client.rb +542 -0
  282. data/test/sm11/driver.rb +183 -0
  283. data/test/sm11/servant.rb +1067 -0
  284. data/test/sm11/server.rb +25 -0
  285. data/test/soap/asp.net/hello.wsdl +96 -0
  286. data/test/soap/asp.net/test_aspdotnet.rb +112 -0
  287. data/test/soap/calc/calc.rb +17 -0
  288. data/test/soap/calc/calc2.rb +29 -0
  289. data/test/soap/calc/server.cgi +13 -0
  290. data/test/soap/calc/server.rb +17 -0
  291. data/test/soap/calc/server2.rb +20 -0
  292. data/test/soap/calc/test_calc.rb +49 -0
  293. data/test/soap/calc/test_calc2.rb +53 -0
  294. data/test/soap/calc/test_calc_cgi.rb +69 -0
  295. data/test/soap/fault/test_customfault.rb +58 -0
  296. data/test/soap/header/server.cgi +119 -0
  297. data/test/soap/header/test_authheader.rb +240 -0
  298. data/test/soap/header/test_authheader_cgi.rb +121 -0
  299. data/test/soap/header/test_simplehandler.rb +116 -0
  300. data/test/soap/helloworld/hw_s.rb +16 -0
  301. data/test/soap/helloworld/test_helloworld.rb +41 -0
  302. data/test/soap/literalArrayMapping/amazonEc.rb +4778 -0
  303. data/test/soap/literalArrayMapping/amazonEcDriver.rb +172 -0
  304. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  305. data/test/soap/literalArrayMapping/test_definedarray.rb +36 -0
  306. data/test/soap/marshal/marshaltestlib.rb +494 -0
  307. data/test/soap/marshal/test_digraph.rb +56 -0
  308. data/test/soap/marshal/test_marshal.rb +26 -0
  309. data/test/soap/marshal/test_struct.rb +47 -0
  310. data/test/soap/ssl/README +1 -0
  311. data/test/soap/ssl/ca.cert +23 -0
  312. data/test/soap/ssl/client.cert +19 -0
  313. data/test/soap/ssl/client.key +15 -0
  314. data/test/soap/ssl/server.cert +19 -0
  315. data/test/soap/ssl/server.key +15 -0
  316. data/test/soap/ssl/sslsvr.rb +57 -0
  317. data/test/soap/ssl/subca.cert +21 -0
  318. data/test/soap/ssl/test_ssl.rb +245 -0
  319. data/test/soap/struct/test_struct.rb +77 -0
  320. data/test/soap/styleuse/client.rb +20 -0
  321. data/test/soap/styleuse/server.rb +86 -0
  322. data/test/soap/swa/test_file.rb +73 -0
  323. data/test/soap/test_basetype.rb +976 -0
  324. data/test/soap/test_custommap.rb +108 -0
  325. data/test/soap/test_empty.rb +79 -0
  326. data/test/soap/test_envelopenamespace.rb +92 -0
  327. data/test/soap/test_httpconfigloader.rb +39 -0
  328. data/test/soap/test_mapping.rb +59 -0
  329. data/test/soap/test_no_indent.rb +86 -0
  330. data/test/soap/test_property.rb +424 -0
  331. data/test/soap/test_response_as_xml.rb +95 -0
  332. data/test/soap/test_soapelement.rb +120 -0
  333. data/test/soap/test_streamhandler.rb +262 -0
  334. data/test/soap/test_styleuse.rb +333 -0
  335. data/test/soap/wsdlDriver/README.txt +2 -0
  336. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  337. data/test/soap/wsdlDriver/document.wsdl +54 -0
  338. data/test/soap/wsdlDriver/echo_version.rb +29 -0
  339. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  340. data/test/soap/wsdlDriver/test_calc.rb +100 -0
  341. data/test/soap/wsdlDriver/test_document.rb +78 -0
  342. data/test/soap/wsdlDriver/test_simpletype.rb +87 -0
  343. data/test/wsdl/abstract/abstract.wsdl +97 -0
  344. data/test/wsdl/abstract/test_abstract.rb +130 -0
  345. data/test/wsdl/any/any.wsdl +51 -0
  346. data/test/wsdl/any/expectedDriver.rb +46 -0
  347. data/test/wsdl/any/expectedEcho.rb +18 -0
  348. data/test/wsdl/any/expectedService.rb +42 -0
  349. data/test/wsdl/any/test_any.rb +193 -0
  350. data/test/wsdl/axisArray/axisArray.wsdl +60 -0
  351. data/test/wsdl/axisArray/itemList.rb +14 -0
  352. data/test/wsdl/axisArray/test_axisarray.rb +69 -0
  353. data/test/wsdl/choice/choice.wsdl +91 -0
  354. data/test/wsdl/choice/test_choice.rb +134 -0
  355. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  356. data/test/wsdl/complexcontent/test_echo.rb +101 -0
  357. data/test/wsdl/datetime/DatetimeService.rb +44 -0
  358. data/test/wsdl/datetime/datetime.rb +0 -0
  359. data/test/wsdl/datetime/datetime.wsdl +45 -0
  360. data/test/wsdl/datetime/datetimeServant.rb +21 -0
  361. data/test/wsdl/datetime/test_datetime.rb +82 -0
  362. data/test/wsdl/document/array/double.wsdl +72 -0
  363. data/test/wsdl/document/array/test_array.rb +117 -0
  364. data/test/wsdl/document/document.wsdl +74 -0
  365. data/test/wsdl/document/number.wsdl +54 -0
  366. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  367. data/test/wsdl/document/test_nosoapaction.rb +109 -0
  368. data/test/wsdl/document/test_number.rb +99 -0
  369. data/test/wsdl/document/test_rpc.rb +211 -0
  370. data/test/wsdl/emptycomplextype.wsdl +31 -0
  371. data/test/wsdl/list/list.wsdl +93 -0
  372. data/test/wsdl/list/test_list.rb +134 -0
  373. data/test/wsdl/map/map.wsdl +92 -0
  374. data/test/wsdl/map/map.xml +43 -0
  375. data/test/wsdl/map/test_map.rb +99 -0
  376. data/test/wsdl/marshal/person.wsdl +21 -0
  377. data/test/wsdl/marshal/person_org.rb +18 -0
  378. data/test/wsdl/marshal/test_wsdlmarshal.rb +79 -0
  379. data/test/wsdl/multiplefault.wsdl +68 -0
  380. data/test/wsdl/overload/overload.wsdl +80 -0
  381. data/test/wsdl/overload/test_overload.rb +118 -0
  382. data/test/wsdl/qualified/lp.wsdl +47 -0
  383. data/test/wsdl/qualified/lp.xsd +26 -0
  384. data/test/wsdl/qualified/np.wsdl +51 -0
  385. data/test/wsdl/qualified/test_qualified.rb +145 -0
  386. data/test/wsdl/qualified/test_unqualified.rb +159 -0
  387. data/test/wsdl/raa/RAA.rb +120 -0
  388. data/test/wsdl/raa/RAAServant.rb +107 -0
  389. data/test/wsdl/raa/RAAService.rb +120 -0
  390. data/test/wsdl/raa/README.txt +8 -0
  391. data/test/wsdl/raa/raa.wsdl +264 -0
  392. data/test/wsdl/raa/server.rb +103 -0
  393. data/test/wsdl/raa/test_raa.rb +91 -0
  394. data/test/wsdl/ref/expectedProduct.rb +158 -0
  395. data/test/wsdl/ref/product.wsdl +147 -0
  396. data/test/wsdl/ref/test_ref.rb +289 -0
  397. data/test/wsdl/rpc/rpc.wsdl +83 -0
  398. data/test/wsdl/rpc/test-rpc-lit.wsdl +364 -0
  399. data/test/wsdl/rpc/test_rpc.rb +173 -0
  400. data/test/wsdl/rpc/test_rpc_lit.rb +407 -0
  401. data/test/wsdl/simplecontent/simplecontent.wsdl +83 -0
  402. data/test/wsdl/simplecontent/test_simplecontent.rb +116 -0
  403. data/test/wsdl/simpletype/rpc/expectedClient.rb +34 -0
  404. data/test/wsdl/simpletype/rpc/expectedDriver.rb +55 -0
  405. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +19 -0
  406. data/test/wsdl/simpletype/rpc/expectedServant.rb +32 -0
  407. data/test/wsdl/simpletype/rpc/expectedService.rb +51 -0
  408. data/test/wsdl/simpletype/rpc/rpc.wsdl +80 -0
  409. data/test/wsdl/simpletype/rpc/test_rpc.rb +62 -0
  410. data/test/wsdl/simpletype/simpletype.wsdl +95 -0
  411. data/test/wsdl/simpletype/test_simpletype.rb +99 -0
  412. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  413. data/test/wsdl/soap/test_soapbodyparts.rb +79 -0
  414. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +19 -0
  415. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +34 -0
  416. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +55 -0
  417. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +32 -0
  418. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +44 -0
  419. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +51 -0
  420. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  421. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +31 -0
  422. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  423. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +54 -0
  424. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  425. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +96 -0
  426. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +79 -0
  427. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  428. data/test/wsdl/soaptype/test_soaptype.rb +160 -0
  429. data/test/wsdl/test_emptycomplextype.rb +21 -0
  430. data/test/wsdl/test_fault.rb +50 -0
  431. data/test/wsdl/test_multiplefault.rb +39 -0
  432. data/test/xsd/codegen/test_classdef.rb +214 -0
  433. data/test/xsd/noencoding.xml +4 -0
  434. data/test/xsd/test_noencoding.rb +32 -0
  435. data/test/xsd/test_ns.rb +20 -0
  436. data/test/xsd/test_xmlschemaparser.rb +22 -0
  437. data/test/xsd/test_xsd.rb +1523 -0
  438. data/test/xsd/xmllang.xml +43 -0
  439. data/test/xsd/xmlschema.xml +12 -0
  440. metadata +539 -0
@@ -0,0 +1,120 @@
1
+ require 'test/unit'
2
+ require 'soap/baseData'
3
+ require 'soap/mapping'
4
+
5
+
6
+ module SOAP
7
+
8
+
9
+ class TestSOAPElement < Test::Unit::TestCase
10
+ include SOAP
11
+
12
+ def setup
13
+ # Nothing to do.
14
+ end
15
+
16
+ def teardown
17
+ # Nothing to do.
18
+ end
19
+
20
+ def d(elename = nil, text = nil)
21
+ elename ||= n(nil, nil)
22
+ if text
23
+ SOAPElement.new(elename, text)
24
+ else
25
+ SOAPElement.new(elename) # do not merge.
26
+ end
27
+ end
28
+
29
+ def n(namespace, name)
30
+ XSD::QName.new(namespace, name)
31
+ end
32
+
33
+ def test_initialize
34
+ elename = n(nil, nil)
35
+ obj = d(elename)
36
+ assert_equal(elename, obj.elename)
37
+ assert_equal(LiteralNamespace, obj.encodingstyle)
38
+ assert_equal({}, obj.extraattr)
39
+ assert_equal([], obj.precedents)
40
+ assert_equal(nil, obj.qualified)
41
+ assert_equal(nil, obj.text)
42
+ assert(obj.members.empty?)
43
+
44
+ obj = d("foo", "text")
45
+ assert_equal(n(nil, "foo"), obj.elename)
46
+ assert_equal("text", obj.text)
47
+ end
48
+
49
+ def test_add
50
+ obj = d()
51
+ child = d("abc")
52
+ obj.add(child)
53
+ assert(obj.key?("abc"))
54
+ assert_same(child, obj["abc"])
55
+ assert_same(child, obj.abc)
56
+ child = d("foo")
57
+ obj.add(child)
58
+ assert_equal(child, obj.foo)
59
+ child = d("_?a?b_")
60
+ obj.add(child)
61
+ assert_equal(child, obj.m___a_b_)
62
+ end
63
+
64
+ def test_member
65
+ obj = d()
66
+ c1 = d("c1")
67
+ obj.add(c1)
68
+ c2 = d("c2")
69
+ obj.add(c2)
70
+ assert(obj.key?("c1"))
71
+ assert(obj.key?("c2"))
72
+ assert_equal(c1, obj["c1"])
73
+ assert_equal(c2, obj["c2"])
74
+ c22 = d("c22")
75
+ obj["c2"] = c22
76
+ assert(obj.key?("c2"))
77
+ assert_equal(c22, obj["c2"])
78
+ assert_equal(["c1", "c2"], obj.members.sort)
79
+ #
80
+ k_expect = ["c1", "c2"]
81
+ v_expect = [c1, c22]
82
+ obj.each do |k, v|
83
+ assert(k_expect.include?(k))
84
+ assert(v_expect.include?(v))
85
+ k_expect.delete(k)
86
+ v_expect.delete(v)
87
+ end
88
+ assert(k_expect.empty?)
89
+ assert(v_expect.empty?)
90
+ end
91
+
92
+ def test_to_obj
93
+ obj = d("root")
94
+ ct1 = d("ct1", "t1")
95
+ obj.add(ct1)
96
+ c2 = d("c2")
97
+ ct2 = d("ct2", "t2")
98
+ c2.add(ct2)
99
+ obj.add(c2)
100
+ assert_equal({ "ct1" => "t1", "c2" => { "ct2" => "t2" }}, obj.to_obj)
101
+ #
102
+ assert_equal(nil, d().to_obj)
103
+ assert_equal("abc", d(nil, "abc").to_obj)
104
+ assert_equal(nil, d("abc", nil).to_obj)
105
+ end
106
+
107
+ def test_from_obj
108
+ source = { "ct1" => "t1", "c2" => { "ct2" => "t2" }}
109
+ assert_equal(source, SOAPElement.from_obj(source).to_obj)
110
+ source = { "1" => nil }
111
+ assert_equal(source, SOAPElement.from_obj(source).to_obj)
112
+ source = {}
113
+ assert_equal(nil, SOAPElement.from_obj(source).to_obj) # not {}
114
+ source = nil
115
+ assert_equal(nil, SOAPElement.from_obj(source).to_obj)
116
+ end
117
+ end
118
+
119
+
120
+ end
@@ -0,0 +1,262 @@
1
+ require 'test/unit'
2
+ require 'soap/rpc/driver'
3
+ require 'webrick'
4
+ require 'webrick/httpproxy'
5
+ require 'logger'
6
+
7
+
8
+ module SOAP
9
+
10
+
11
+ class TestStreamHandler < Test::Unit::TestCase
12
+ Port = 17171
13
+ ProxyPort = 17172
14
+
15
+ def setup
16
+ @logger = Logger.new(STDERR)
17
+ @logger.level = Logger::Severity::ERROR
18
+ @url = "http://localhost:#{Port}/"
19
+ @proxyurl = "http://localhost:#{ProxyPort}/"
20
+ @server = @proxyserver = @client = nil
21
+ @server_thread = @proxyserver_thread = nil
22
+ setup_server
23
+ setup_client
24
+ end
25
+
26
+ def teardown
27
+ teardown_client
28
+ teardown_proxyserver if @proxyserver
29
+ teardown_server
30
+ end
31
+
32
+ def setup_server
33
+ @server = WEBrick::HTTPServer.new(
34
+ :BindAddress => "0.0.0.0",
35
+ :Logger => @logger,
36
+ :Port => Port,
37
+ :AccessLog => [],
38
+ :DocumentRoot => File.dirname(File.expand_path(__FILE__))
39
+ )
40
+ @server.mount(
41
+ '/',
42
+ WEBrick::HTTPServlet::ProcHandler.new(method(:do_server_proc).to_proc)
43
+ )
44
+ @server_thread = start_server_thread(@server)
45
+ end
46
+
47
+ def setup_proxyserver
48
+ @proxyserver = WEBrick::HTTPProxyServer.new(
49
+ :BindAddress => "0.0.0.0",
50
+ :Logger => @logger,
51
+ :Port => ProxyPort,
52
+ :AccessLog => []
53
+ )
54
+ @proxyserver_thread = start_server_thread(@proxyserver)
55
+ end
56
+
57
+ def setup_client
58
+ @client = SOAP::RPC::Driver.new(@url, '')
59
+ @client.add_method("do_server_proc")
60
+ end
61
+
62
+ def teardown_server
63
+ @server.shutdown
64
+ @server_thread.kill
65
+ @server_thread.join
66
+ end
67
+
68
+ def teardown_proxyserver
69
+ @proxyserver.shutdown
70
+ @proxyserver_thread.kill
71
+ @proxyserver_thread.join
72
+ end
73
+
74
+ def teardown_client
75
+ @client.reset_stream
76
+ end
77
+
78
+ def start_server_thread(server)
79
+ t = Thread.new {
80
+ Thread.current.abort_on_exception = true
81
+ server.start
82
+ }
83
+ t
84
+ end
85
+
86
+ def do_server_proc(req, res)
87
+ res['content-type'] = 'text/xml'
88
+ res.body = <<__EOX__
89
+ <?xml version="1.0" encoding="utf-8" ?>
90
+ <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">
91
+ <env:Body>
92
+ <n1:do_server_proc xmlns:n1="urn:foo" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
93
+ <return xsi:nil="true"/>
94
+ </n1:do_server_proc>
95
+ </env:Body>
96
+ </env:Envelope>
97
+ __EOX__
98
+ end
99
+
100
+ def parse_req_header(str)
101
+ if ::SOAP::HTTPStreamHandler::Client.to_s == 'SOAP::NetHttpClient'
102
+ str = eval(str.split(/\r?\n/)[4][3..-1])
103
+ end
104
+ parse_req_header_http_access2(str)
105
+ end
106
+
107
+ def parse_req_header_http_access2(str)
108
+ headerp = false
109
+ headers = {}
110
+ req = nil
111
+ str.split(/(?:\r?\n)/).each do |line|
112
+ if headerp and /^$/ =~line
113
+ headerp = false
114
+ break
115
+ end
116
+ if headerp
117
+ k, v = line.scan(/^([^:]+):\s*(.*)$/)[0]
118
+ headers[k.downcase] = v
119
+ end
120
+ if /^POST/ =~ line
121
+ req = line
122
+ headerp = true
123
+ end
124
+ end
125
+ return req, headers
126
+ end
127
+
128
+ def test_normal
129
+ str = ""
130
+ @client.wiredump_dev = str
131
+ assert_nil(@client.do_server_proc)
132
+ r, h = parse_req_header(str)
133
+ assert_match(%r"POST / HTTP/1.", r)
134
+ assert(/^text\/xml;/ =~ h["content-type"])
135
+ end
136
+
137
+ def test_uri
138
+ # initialize client with URI object
139
+ @client = SOAP::RPC::Driver.new(URI.parse(@url), '')
140
+ @client.add_method("do_server_proc")
141
+ # same as test_normal
142
+ str = ""
143
+ @client.wiredump_dev = str
144
+ assert_nil(@client.do_server_proc)
145
+ r, h = parse_req_header(str)
146
+ assert_match(%r"POST / HTTP/1.", r)
147
+ assert(/^text\/xml;/ =~ h["content-type"])
148
+ end
149
+
150
+ def test_basic_auth
151
+ unless Object.const_defined?('HTTPAccess2')
152
+ # soap4r + net/http + basic_auth is not supported.
153
+ # use http-access2 instead.
154
+ assert(true)
155
+ return
156
+ end
157
+ str = ""
158
+ @client.wiredump_dev = str
159
+ @client.options["protocol.http.basic_auth"] << [@url, "foo", "bar"]
160
+ assert_nil(@client.do_server_proc)
161
+ r, h = parse_req_header(str)
162
+ assert_equal("Basic Zm9vOmJhcg==", h["authorization"])
163
+ end
164
+
165
+ def test_proxy
166
+ if Object.const_defined?('HTTPAccess2')
167
+ backup = HTTPAccess2::Client::NO_PROXY_HOSTS.dup
168
+ HTTPAccess2::Client::NO_PROXY_HOSTS.clear
169
+ else
170
+ backup = SOAP::NetHttpClient::NO_PROXY_HOSTS.dup
171
+ SOAP::NetHttpClient::NO_PROXY_HOSTS.clear
172
+ end
173
+ setup_proxyserver
174
+ str = ""
175
+ @client.wiredump_dev = str
176
+ @client.options["protocol.http.proxy"] = @proxyurl
177
+ assert_nil(@client.do_server_proc)
178
+ r, h = parse_req_header(str)
179
+ assert_match(%r"POST http://localhost:17171/ HTTP/1.", r)
180
+ # illegal proxy uri
181
+ assert_raise(ArgumentError) do
182
+ @client.options["protocol.http.proxy"] = 'ftp://foo:8080'
183
+ end
184
+ ensure
185
+ if Object.const_defined?('HTTPAccess2')
186
+ HTTPAccess2::Client::NO_PROXY_HOSTS.replace(backup)
187
+ else
188
+ SOAP::NetHttpClient::NO_PROXY_HOSTS.replace(backup)
189
+ end
190
+ end
191
+
192
+ def test_charset
193
+ str = ""
194
+ @client.wiredump_dev = str
195
+ @client.options["protocol.http.charset"] = "iso-8859-8"
196
+ assert_nil(@client.do_server_proc)
197
+ r, h = parse_req_header(str)
198
+ assert_equal("text/xml; charset=iso-8859-8", h["content-type"])
199
+ #
200
+ str.replace("")
201
+ @client.options["protocol.http.charset"] = "iso-8859-3"
202
+ assert_nil(@client.do_server_proc)
203
+ r, h = parse_req_header(str)
204
+ assert_equal("text/xml; charset=iso-8859-3", h["content-type"])
205
+ end
206
+
207
+ def test_custom_streamhandler
208
+ @client.options["protocol.streamhandler"] = MyStreamHandler
209
+ assert_equal("hello", @client.do_server_proc)
210
+ @client.options["protocol.streamhandler"] = ::SOAP::HTTPStreamHandler
211
+ assert_nil(@client.do_server_proc)
212
+ @client.options["protocol.streamhandler"] = MyStreamHandler
213
+ assert_equal("hello", @client.do_server_proc)
214
+ @client.options["protocol.streamhandler"] = ::SOAP::HTTPStreamHandler
215
+ assert_nil(@client.do_server_proc)
216
+ end
217
+
218
+ class MyStreamHandler < SOAP::StreamHandler
219
+ def self.create(options)
220
+ new
221
+ end
222
+
223
+ def send(endpoint_url, conn_data, soapaction = nil, charset = nil)
224
+ conn_data.receive_string = %q[<?xml version="1.0" encoding="utf-8" ?>
225
+ <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">
226
+ <env:Body>
227
+ <n1:do_server_proc xmlns:n1="urn:foo" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
228
+ <return xsi:type="xsd:string">hello</return>
229
+ </n1:do_server_proc>
230
+ </env:Body>
231
+ </env:Envelope>]
232
+ conn_data
233
+ end
234
+
235
+ def reset(endpoint_url = nil)
236
+ # nothing to do
237
+ end
238
+ end
239
+
240
+ # not used
241
+ class ExternalProcessStreamHandler < SOAP::StreamHandler
242
+ def self.create(options)
243
+ new
244
+ end
245
+
246
+ def send(endpoint_url, conn_data, soapaction = nil, charset = nil)
247
+ cmd = "cat" # !!
248
+ IO.popen(cmd, "w+") do |io|
249
+ io.write(conn_data.send_string)
250
+ io.close_write
251
+ conn_data.receive_string = io.read
252
+ end
253
+ conn_data
254
+ end
255
+
256
+ def reset(endpoint_url = nil)
257
+ end
258
+ end
259
+ end
260
+
261
+
262
+ end
@@ -0,0 +1,333 @@
1
+ require 'test/unit'
2
+ require 'soap/rpc/httpserver'
3
+ require 'soap/rpc/driver'
4
+
5
+
6
+ module SOAP
7
+
8
+
9
+ class TestStyleUse < Test::Unit::TestCase
10
+ # rpc driver: obj in(Hash allowed for literal), obj out
11
+ #
12
+ # style: not visible from user
13
+ # rpc: wrapped element
14
+ # document: unwrappted element
15
+ #
16
+ # use:
17
+ # encoding: a graph (SOAP Data Model)
18
+ # literal: not a graph (SOAPElement)
19
+ #
20
+ # rpc stub: obj in, obj out(Hash is allowed for literal)
21
+ #
22
+ # style: not visible from user
23
+ # rpc: wrapped element
24
+ # document: unwrappted element
25
+ #
26
+ # use:
27
+ # encoding: a graph (SOAP Data Model)
28
+ # literal: not a graph (SOAPElement)
29
+ #
30
+ # document driver: SOAPElement in, SOAPElement out? [not implemented]
31
+ #
32
+ # style: ditto
33
+ # use: ditto
34
+ #
35
+ #
36
+ # document stub: SOAPElement in, SOAPElement out? [not implemented]
37
+ #
38
+ # style: ditto
39
+ # use: ditto
40
+ #
41
+ class GenericServant
42
+ # method name style: requeststyle_requestuse_responsestyle_responseuse
43
+
44
+ # 2 params -> array
45
+ def rpc_enc_rpc_enc(obj1, obj2)
46
+ [obj1, [obj1, obj2]]
47
+ end
48
+
49
+ # 2 objs -> array
50
+ def rpc_lit_rpc_enc(obj1, obj2)
51
+ [obj2, obj1]
52
+ end
53
+
54
+ # 2 params -> 2 params
55
+ def rpc_enc_rpc_lit(obj1, obj2)
56
+ klass = [obj1.class.name, obj2.class.name]
57
+ [obj2, obj1]
58
+ end
59
+
60
+ # 2 objs -> 2 objs
61
+ def rpc_lit_rpc_lit(obj1, obj2)
62
+ [obj1, obj2]
63
+ end
64
+
65
+ # 2 params -> array
66
+ def doc_enc_doc_enc(obj1, obj2)
67
+ [obj1, [obj1, obj2]]
68
+ end
69
+
70
+ # 2 objs -> array
71
+ def doc_lit_doc_enc(obj1, obj2)
72
+ [obj2, obj1]
73
+ end
74
+
75
+ # 2 params -> 2 hashes
76
+ def doc_enc_doc_lit(obj1, obj2)
77
+ klass = [obj1.class.name, obj2.class.name]
78
+ return {'obj1' => {'klass' => klass}, 'misc' => 'hash does not have an order'},
79
+ {'obj2' => {'klass' => klass}}
80
+ end
81
+
82
+ # 2 objs -> 2 objs
83
+ def doc_lit_doc_lit(obj1, obj2)
84
+ return obj1, obj2
85
+ end
86
+ end
87
+
88
+ Namespace = "urn:styleuse"
89
+
90
+ module Op
91
+ def self.opt(request_style, request_use, response_style, response_use)
92
+ {
93
+ :request_style => request_style,
94
+ :request_use => request_use,
95
+ :response_style => response_style,
96
+ :response_use => response_use
97
+ }
98
+ end
99
+
100
+ Op_rpc_enc_rpc_enc = [
101
+ XSD::QName.new(Namespace, 'rpc_enc_rpc_enc'),
102
+ nil,
103
+ 'rpc_enc_rpc_enc', [
104
+ ['in', 'obj1', nil],
105
+ ['in', 'obj2', nil],
106
+ ['retval', 'return', nil]],
107
+ opt(:rpc, :encoded, :rpc, :encoded)
108
+ ]
109
+
110
+ Op_rpc_lit_rpc_enc = [
111
+ XSD::QName.new(Namespace, 'rpc_lit_rpc_enc'),
112
+ nil,
113
+ 'rpc_lit_rpc_enc', [
114
+ ['in', 'obj1', nil],
115
+ ['in', 'obj2', nil],
116
+ ['retval', 'return', nil]],
117
+ opt(:rpc, :literal, :rpc, :encoded)
118
+ ]
119
+
120
+ Op_rpc_enc_rpc_lit = [
121
+ XSD::QName.new(Namespace, 'rpc_enc_rpc_lit'),
122
+ nil,
123
+ 'rpc_enc_rpc_lit', [
124
+ ['in', 'obj1', nil],
125
+ ['in', 'obj2', nil],
126
+ ['retval', 'ret1', nil],
127
+ ['out', 'ret2', nil]],
128
+ opt(:rpc, :encoded, :rpc, :literal)
129
+ ]
130
+
131
+ Op_rpc_lit_rpc_lit = [
132
+ XSD::QName.new(Namespace, 'rpc_lit_rpc_lit'),
133
+ nil,
134
+ 'rpc_lit_rpc_lit', [
135
+ ['in', 'obj1', nil],
136
+ ['in', 'obj2', nil],
137
+ ['retval', 'ret1', nil],
138
+ ['out', 'ret2', nil]],
139
+ opt(:rpc, :literal, :rpc, :literal)
140
+ ]
141
+
142
+ Op_doc_enc_doc_enc = [
143
+ Namespace + 'doc_enc_doc_enc',
144
+ 'doc_enc_doc_enc', [
145
+ ['in', 'obj1', [nil, Namespace, 'obj1']],
146
+ ['in', 'obj2', [nil, Namespace, 'obj2']],
147
+ ['out', 'ret1', [nil, Namespace, 'ret1']],
148
+ ['out', 'ret2', [nil, Namespace, 'ret2']]],
149
+ opt(:document, :encoded, :document, :encoded)
150
+ ]
151
+
152
+ Op_doc_lit_doc_enc = [
153
+ Namespace + 'doc_lit_doc_enc',
154
+ 'doc_lit_doc_enc', [
155
+ ['in', 'obj1', [nil, Namespace, 'obj1']],
156
+ ['in', 'obj2', [nil, Namespace, 'obj2']],
157
+ ['out', 'ret1', [nil, Namespace, 'ret1']],
158
+ ['out', 'ret2', [nil, Namespace, 'ret2']]],
159
+ opt(:document, :literal, :document, :encoded)
160
+ ]
161
+
162
+ Op_doc_enc_doc_lit = [
163
+ Namespace + 'doc_enc_doc_lit',
164
+ 'doc_enc_doc_lit', [
165
+ ['in', 'obj1', [nil, Namespace, 'obj1']],
166
+ ['in', 'obj2', [nil, Namespace, 'obj2']],
167
+ ['out', 'ret1', [nil, Namespace, 'ret1']],
168
+ ['out', 'ret2', [nil, Namespace, 'ret2']]],
169
+ opt(:document, :encoded, :document, :literal)
170
+ ]
171
+
172
+ Op_doc_lit_doc_lit = [
173
+ Namespace + 'doc_lit_doc_lit',
174
+ 'doc_lit_doc_lit', [
175
+ ['in', 'obj1', [nil, Namespace, 'obj1']],
176
+ ['in', 'obj2', [nil, Namespace, 'obj2']],
177
+ ['out', 'ret1', [nil, Namespace, 'ret1']],
178
+ ['out', 'ret2', [nil, Namespace, 'ret2']]],
179
+ opt(:document, :literal, :document, :literal)
180
+ ]
181
+ end
182
+
183
+ include Op
184
+
185
+ class Server < ::SOAP::RPC::HTTPServer
186
+ include Op
187
+
188
+ def on_init
189
+ @servant = GenericServant.new
190
+ add_rpc_operation(@servant, *Op_rpc_enc_rpc_enc)
191
+ add_rpc_operation(@servant, *Op_rpc_lit_rpc_enc)
192
+ add_rpc_operation(@servant, *Op_rpc_enc_rpc_lit)
193
+ add_rpc_operation(@servant, *Op_rpc_lit_rpc_lit)
194
+ add_document_operation(@servant, *Op_doc_enc_doc_enc)
195
+ add_document_operation(@servant, *Op_doc_lit_doc_enc)
196
+ add_document_operation(@servant, *Op_doc_enc_doc_lit)
197
+ add_document_operation(@servant, *Op_doc_lit_doc_lit)
198
+ end
199
+ end
200
+
201
+ Port = 17171
202
+
203
+ def setup
204
+ setup_server
205
+ setup_client
206
+ end
207
+
208
+ def setup_server
209
+ @server = Server.new(
210
+ :BindAddress => "0.0.0.0",
211
+ :Port => Port,
212
+ :AccessLog => [],
213
+ :SOAPDefaultNamespace => Namespace
214
+ )
215
+ @server.level = Logger::Severity::ERROR
216
+ @server_thread = start_server_thread(@server)
217
+ end
218
+
219
+ def setup_client
220
+ @client = ::SOAP::RPC::Driver.new("http://localhost:#{Port}/", Namespace)
221
+ @client.wiredump_dev = STDERR if $DEBUG
222
+ @client.add_rpc_operation(*Op_rpc_enc_rpc_enc)
223
+ @client.add_rpc_operation(*Op_rpc_lit_rpc_enc)
224
+ @client.add_rpc_operation(*Op_rpc_enc_rpc_lit)
225
+ @client.add_rpc_operation(*Op_rpc_lit_rpc_lit)
226
+ @client.add_document_operation(*Op_doc_enc_doc_enc)
227
+ @client.add_document_operation(*Op_doc_lit_doc_enc)
228
+ @client.add_document_operation(*Op_doc_enc_doc_lit)
229
+ @client.add_document_operation(*Op_doc_lit_doc_lit)
230
+ end
231
+
232
+ def teardown
233
+ teardown_server
234
+ teardown_client
235
+ end
236
+
237
+ def teardown_server
238
+ @server.shutdown
239
+ @server_thread.kill
240
+ @server_thread.join
241
+ end
242
+
243
+ def teardown_client
244
+ @client.reset_stream
245
+ end
246
+
247
+ def start_server_thread(server)
248
+ t = Thread.new {
249
+ Thread.current.abort_on_exception = true
250
+ server.start
251
+ }
252
+ t
253
+ end
254
+
255
+ def test_rpc_enc_rpc_enc
256
+ o = "hello"
257
+ obj1 = o
258
+ obj2 = [1]
259
+ ret = @client.rpc_enc_rpc_enc(obj1, obj2)
260
+ # server returns [obj1, [obj1, obj2]]
261
+ assert_equal([obj1, [obj1, obj2]], ret)
262
+ assert_same(ret[0], ret[1][0])
263
+ end
264
+
265
+ S1 = ::Struct.new(:a)
266
+ S2 = ::Struct.new(:c)
267
+ def test_rpc_lit_rpc_enc
268
+ ret1, ret2 = @client.rpc_lit_rpc_enc(S1.new('b'), S2.new('d'))
269
+ assert_equal('d', ret1.c)
270
+ assert_equal('b', ret2.a)
271
+ # Hash is allowed for literal
272
+ ret1, ret2 = @client.rpc_lit_rpc_enc({'a' => 'b'}, {'c' => 'd'})
273
+ assert_equal('d', ret1.c)
274
+ assert_equal('b', ret2.a)
275
+ # simple value
276
+ assert_equal(
277
+ ['1', 'a'],
278
+ @client.rpc_lit_rpc_enc('a', 1)
279
+ )
280
+ end
281
+
282
+ def test_rpc_enc_rpc_lit
283
+ assert_equal(
284
+ ['1', 'a'],
285
+ @client.rpc_enc_rpc_lit('a', '1')
286
+ )
287
+ end
288
+
289
+ def test_rpc_lit_rpc_lit
290
+ ret1, ret2 = @client.rpc_lit_rpc_lit({'a' => 'b'}, {'c' => 'd'})
291
+ assert_equal('b', ret1["a"])
292
+ assert_equal('d', ret2["c"])
293
+ end
294
+
295
+ def test_doc_enc_doc_enc
296
+ o = "hello"
297
+ obj1 = o
298
+ obj2 = [1]
299
+ ret = @client.rpc_enc_rpc_enc(obj1, obj2)
300
+ # server returns [obj1, [obj1, obj2]]
301
+ assert_equal([obj1, [obj1, obj2]], ret)
302
+ assert_same(ret[0], ret[1][0])
303
+ end
304
+
305
+ def test_doc_lit_doc_enc
306
+ ret1, ret2 = @client.doc_lit_doc_enc({'a' => 'b'}, {'c' => 'd'})
307
+ assert_equal('d', ret1.c)
308
+ assert_equal('b', ret2.a)
309
+ assert_equal(
310
+ ['a', '1'],
311
+ @client.doc_lit_doc_enc(1, 'a')
312
+ )
313
+ end
314
+
315
+ def test_doc_enc_doc_lit
316
+ ret1, ret2 = @client.doc_enc_doc_lit('a', 1)
317
+ # literal Array
318
+ assert_equal(['String', 'Fixnum'], ret1['obj1']['klass'])
319
+ # same value
320
+ assert_equal(ret1['obj1']['klass'], ret2['obj2']['klass'])
321
+ # not the same object (not encoded)
322
+ assert_not_same(ret1['obj1']['klass'], ret2['obj2']['klass'])
323
+ end
324
+
325
+ def test_doc_lit_doc_lit
326
+ ret1, ret2 = @client.doc_lit_doc_lit({'a' => 'b'}, {'c' => 'd'})
327
+ assert_equal('b', ret1["a"])
328
+ assert_equal('d', ret2["c"])
329
+ end
330
+ end
331
+
332
+
333
+ end