DefV-soap4r 1.5.8.2

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 (443) hide show
  1. data/bin/wsdl2ruby.rb +137 -0
  2. data/bin/xsd2ruby.rb +90 -0
  3. data/lib/soap/attachment.rb +108 -0
  4. data/lib/soap/attrproxy.rb +34 -0
  5. data/lib/soap/baseData.rb +1094 -0
  6. data/lib/soap/element.rb +277 -0
  7. data/lib/soap/encodingstyle/aspDotNetHandler.rb +207 -0
  8. data/lib/soap/encodingstyle/handler.rb +120 -0
  9. data/lib/soap/encodingstyle/literalHandler.rb +195 -0
  10. data/lib/soap/encodingstyle/soapHandler.rb +559 -0
  11. data/lib/soap/filter.rb +13 -0
  12. data/lib/soap/filter/filterchain.rb +51 -0
  13. data/lib/soap/filter/handler.rb +31 -0
  14. data/lib/soap/filter/streamhandler.rb +29 -0
  15. data/lib/soap/generator.rb +299 -0
  16. data/lib/soap/header/handler.rb +61 -0
  17. data/lib/soap/header/handlerset.rb +70 -0
  18. data/lib/soap/header/mappinghandler.rb +47 -0
  19. data/lib/soap/header/simplehandler.rb +44 -0
  20. data/lib/soap/httpconfigloader.rb +139 -0
  21. data/lib/soap/mapping.rb +12 -0
  22. data/lib/soap/mapping/encodedregistry.rb +537 -0
  23. data/lib/soap/mapping/factory.rb +388 -0
  24. data/lib/soap/mapping/literalregistry.rb +391 -0
  25. data/lib/soap/mapping/mapping.rb +577 -0
  26. data/lib/soap/mapping/registry.rb +295 -0
  27. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  28. data/lib/soap/mapping/schemadefinition.rb +170 -0
  29. data/lib/soap/mapping/typeMap.rb +106 -0
  30. data/lib/soap/mapping/wsdlencodedregistry.rb +211 -0
  31. data/lib/soap/mapping/wsdlliteralregistry.rb +248 -0
  32. data/lib/soap/marshal.rb +59 -0
  33. data/lib/soap/mimemessage.rb +241 -0
  34. data/lib/soap/nestedexception.rb +42 -0
  35. data/lib/soap/netHttpClient.rb +241 -0
  36. data/lib/soap/ns.rb +34 -0
  37. data/lib/soap/parser.rb +252 -0
  38. data/lib/soap/processor.rb +66 -0
  39. data/lib/soap/property.rb +333 -0
  40. data/lib/soap/proxy.rb +14 -0
  41. data/lib/soap/rpc/cgistub.rb +247 -0
  42. data/lib/soap/rpc/driver.rb +221 -0
  43. data/lib/soap/rpc/element.rb +374 -0
  44. data/lib/soap/rpc/element.rb.orig +374 -0
  45. data/lib/soap/rpc/httpserver.rb +142 -0
  46. data/lib/soap/rpc/methodDef.rb +68 -0
  47. data/lib/soap/rpc/proxy.rb +572 -0
  48. data/lib/soap/rpc/router.rb +662 -0
  49. data/lib/soap/rpc/rpc.rb +25 -0
  50. data/lib/soap/rpc/soaplet.rb +200 -0
  51. data/lib/soap/rpc/standaloneServer.rb +43 -0
  52. data/lib/soap/soap.rb +151 -0
  53. data/lib/soap/streamHandler.rb +301 -0
  54. data/lib/soap/wsdlDriver.rb +164 -0
  55. data/lib/wsdl/binding.rb +65 -0
  56. data/lib/wsdl/data.rb +64 -0
  57. data/lib/wsdl/definitions.rb +236 -0
  58. data/lib/wsdl/documentation.rb +32 -0
  59. data/lib/wsdl/import.rb +80 -0
  60. data/lib/wsdl/importer.rb +38 -0
  61. data/lib/wsdl/info.rb +50 -0
  62. data/lib/wsdl/message.rb +54 -0
  63. data/lib/wsdl/operation.rb +151 -0
  64. data/lib/wsdl/operationBinding.rb +240 -0
  65. data/lib/wsdl/param.rb +93 -0
  66. data/lib/wsdl/parser.rb +164 -0
  67. data/lib/wsdl/part.rb +52 -0
  68. data/lib/wsdl/port.rb +66 -0
  69. data/lib/wsdl/portType.rb +75 -0
  70. data/lib/wsdl/service.rb +61 -0
  71. data/lib/wsdl/soap/address.rb +40 -0
  72. data/lib/wsdl/soap/binding.rb +49 -0
  73. data/lib/wsdl/soap/body.rb +58 -0
  74. data/lib/wsdl/soap/cgiStubCreator.rb +92 -0
  75. data/lib/wsdl/soap/classDefCreator.rb +433 -0
  76. data/lib/wsdl/soap/classDefCreatorSupport.rb +240 -0
  77. data/lib/wsdl/soap/classNameCreator.rb +54 -0
  78. data/lib/wsdl/soap/clientSkeltonCreator.rb +104 -0
  79. data/lib/wsdl/soap/complexType.rb +173 -0
  80. data/lib/wsdl/soap/data.rb +42 -0
  81. data/lib/wsdl/soap/definitions.rb +200 -0
  82. data/lib/wsdl/soap/driverCreator.rb +118 -0
  83. data/lib/wsdl/soap/element.rb +33 -0
  84. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +73 -0
  85. data/lib/wsdl/soap/fault.rb +56 -0
  86. data/lib/wsdl/soap/header.rb +86 -0
  87. data/lib/wsdl/soap/headerfault.rb +56 -0
  88. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +115 -0
  89. data/lib/wsdl/soap/mappingRegistryCreator.rb +58 -0
  90. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +376 -0
  91. data/lib/wsdl/soap/methodDefCreator.rb +199 -0
  92. data/lib/wsdl/soap/operation.rb +112 -0
  93. data/lib/wsdl/soap/servantSkeltonCreator.rb +89 -0
  94. data/lib/wsdl/soap/servletStubCreator.rb +104 -0
  95. data/lib/wsdl/soap/standaloneServerStubCreator.rb +100 -0
  96. data/lib/wsdl/soap/wsdl2ruby.rb +217 -0
  97. data/lib/wsdl/types.rb +44 -0
  98. data/lib/wsdl/wsdl.rb +24 -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 +61 -0
  102. data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
  103. data/lib/wsdl/xmlSchema/attribute.rb +104 -0
  104. data/lib/wsdl/xmlSchema/attributeGroup.rb +68 -0
  105. data/lib/wsdl/xmlSchema/choice.rb +58 -0
  106. data/lib/wsdl/xmlSchema/complexContent.rb +97 -0
  107. data/lib/wsdl/xmlSchema/complexExtension.rb +119 -0
  108. data/lib/wsdl/xmlSchema/complexRestriction.rb +104 -0
  109. data/lib/wsdl/xmlSchema/complexType.rb +193 -0
  110. data/lib/wsdl/xmlSchema/content.rb +95 -0
  111. data/lib/wsdl/xmlSchema/data.rb +116 -0
  112. data/lib/wsdl/xmlSchema/element.rb +153 -0
  113. data/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  114. data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
  115. data/lib/wsdl/xmlSchema/group.rb +100 -0
  116. data/lib/wsdl/xmlSchema/import.rb +53 -0
  117. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  118. data/lib/wsdl/xmlSchema/importer.rb +102 -0
  119. data/lib/wsdl/xmlSchema/include.rb +48 -0
  120. data/lib/wsdl/xmlSchema/length.rb +37 -0
  121. data/lib/wsdl/xmlSchema/list.rb +48 -0
  122. data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
  123. data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
  124. data/lib/wsdl/xmlSchema/maxlength.rb +37 -0
  125. data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
  126. data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
  127. data/lib/wsdl/xmlSchema/minlength.rb +37 -0
  128. data/lib/wsdl/xmlSchema/parser.rb +167 -0
  129. data/lib/wsdl/xmlSchema/pattern.rb +36 -0
  130. data/lib/wsdl/xmlSchema/ref.rb +33 -0
  131. data/lib/wsdl/xmlSchema/schema.rb +178 -0
  132. data/lib/wsdl/xmlSchema/sequence.rb +54 -0
  133. data/lib/wsdl/xmlSchema/simpleContent.rb +69 -0
  134. data/lib/wsdl/xmlSchema/simpleExtension.rb +62 -0
  135. data/lib/wsdl/xmlSchema/simpleRestriction.rb +132 -0
  136. data/lib/wsdl/xmlSchema/simpleType.rb +87 -0
  137. data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
  138. data/lib/wsdl/xmlSchema/union.rb +35 -0
  139. data/lib/wsdl/xmlSchema/unique.rb +34 -0
  140. data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
  141. data/lib/wsdl/xmlSchema/xsd2ruby.rb +174 -0
  142. data/lib/xsd/charset.rb +188 -0
  143. data/lib/xsd/codegen.rb +12 -0
  144. data/lib/xsd/codegen/classdef.rb +208 -0
  145. data/lib/xsd/codegen/commentdef.rb +34 -0
  146. data/lib/xsd/codegen/gensupport.rb +273 -0
  147. data/lib/xsd/codegen/methoddef.rb +70 -0
  148. data/lib/xsd/codegen/moduledef.rb +208 -0
  149. data/lib/xsd/datatypes.rb +1466 -0
  150. data/lib/xsd/datatypes1999.rb +20 -0
  151. data/lib/xsd/iconvcharset.rb +33 -0
  152. data/lib/xsd/mapping.rb +68 -0
  153. data/lib/xsd/namedelements.rb +132 -0
  154. data/lib/xsd/ns.rb +182 -0
  155. data/lib/xsd/qname.rb +79 -0
  156. data/lib/xsd/xmlparser.rb +76 -0
  157. data/lib/xsd/xmlparser.rb.orig +76 -0
  158. data/lib/xsd/xmlparser/libxmlparser.rb +119 -0
  159. data/lib/xsd/xmlparser/parser.rb +100 -0
  160. data/lib/xsd/xmlparser/rexmlparser.rb +58 -0
  161. data/lib/xsd/xmlparser/xmlparser.rb +50 -0
  162. data/lib/xsd/xmlparser/xmlscanner.rb +149 -0
  163. data/test/16runner.rb +68 -0
  164. data/test/interopR2/README.txt +2 -0
  165. data/test/interopR2/SOAPBuildersInterop_R2.wsdl +461 -0
  166. data/test/interopR2/SOAPBuildersInterop_R2GrB.wsdl +19 -0
  167. data/test/interopR2/base.rb +288 -0
  168. data/test/interopR2/client.NetRemoting.rb +17 -0
  169. data/test/interopR2/client.rb +1234 -0
  170. data/test/interopR2/client4S4C.rb +15 -0
  171. data/test/interopR2/client4S4C2.rb +14 -0
  172. data/test/interopR2/clientASP.NET.rb +17 -0
  173. data/test/interopR2/clientApacheAxis.rb +16 -0
  174. data/test/interopR2/clientApacheSOAP.rb +17 -0
  175. data/test/interopR2/clientBEAWebLogic.rb +17 -0
  176. data/test/interopR2/clientBase.rb +1967 -0
  177. data/test/interopR2/clientCapeConnect.rb +18 -0
  178. data/test/interopR2/clientDelphi.rb +19 -0
  179. data/test/interopR2/clientEasySoap.rb +14 -0
  180. data/test/interopR2/clientFrontier.rb +25 -0
  181. data/test/interopR2/clientGLUE.rb +32 -0
  182. data/test/interopR2/clientHP.rb +13 -0
  183. data/test/interopR2/clientJAX-RPC.rb +19 -0
  184. data/test/interopR2/clientJSOAP.rb +14 -0
  185. data/test/interopR2/clientKafkaXSLT.rb +15 -0
  186. data/test/interopR2/clientMSSOAPToolkit2.0.rb +17 -0
  187. data/test/interopR2/clientMSSOAPToolkit3.0.rb +17 -0
  188. data/test/interopR2/clientNuSOAP.rb +19 -0
  189. data/test/interopR2/clientNuWave.rb +15 -0
  190. data/test/interopR2/clientOpenLink.rb +15 -0
  191. data/test/interopR2/clientOracle.rb +15 -0
  192. data/test/interopR2/clientPEAR.rb +18 -0
  193. data/test/interopR2/clientPhalanx.rb +18 -0
  194. data/test/interopR2/clientSIMACE.rb +18 -0
  195. data/test/interopR2/clientSOAP4R.rb +18 -0
  196. data/test/interopR2/clientSOAP__Lite.rb +14 -0
  197. data/test/interopR2/clientSQLData.rb +18 -0
  198. data/test/interopR2/clientSilverStream.rb +17 -0
  199. data/test/interopR2/clientSpray2001.rb +17 -0
  200. data/test/interopR2/clientSun.rb +19 -0
  201. data/test/interopR2/clientVWOpentalkSoap.rb +19 -0
  202. data/test/interopR2/clientWASP.rb +19 -0
  203. data/test/interopR2/clientWASPC.rb +18 -0
  204. data/test/interopR2/clientWebMethods.rb +15 -0
  205. data/test/interopR2/clientWhiteMesa.rb +28 -0
  206. data/test/interopR2/clientWingfoot.rb +15 -0
  207. data/test/interopR2/clientXMLBus.rb +19 -0
  208. data/test/interopR2/clientXMLRPC-EPI.rb +17 -0
  209. data/test/interopR2/clientXSOAP.rb +14 -0
  210. data/test/interopR2/clientZSI.rb +19 -0
  211. data/test/interopR2/clienteSOAP.rb +18 -0
  212. data/test/interopR2/clientgSOAP.rb +18 -0
  213. data/test/interopR2/clientkSOAP.rb +17 -0
  214. data/test/interopR2/iSimonReg.rb +112 -0
  215. data/test/interopR2/interopResultBase.rb +114 -0
  216. data/test/interopR2/interopService.rb +247 -0
  217. data/test/interopR2/rwikiInteropService.rb +105 -0
  218. data/test/interopR2/server.cgi +270 -0
  219. data/test/interopR2/server.rb +275 -0
  220. data/test/interopR2/simonReg.rb +123 -0
  221. data/test/interopR2/test.sh +49 -0
  222. data/test/interopR4/client.rb +112 -0
  223. data/test/results +4810 -0
  224. data/test/runner.rb +7 -0
  225. data/test/sm11/classDef.rb +156 -0
  226. data/test/sm11/client.rb +542 -0
  227. data/test/sm11/driver.rb +183 -0
  228. data/test/sm11/servant.rb +1067 -0
  229. data/test/sm11/server.rb +25 -0
  230. data/test/soap/asp.net/hello.wsdl +96 -0
  231. data/test/soap/asp.net/test_aspdotnet.rb +123 -0
  232. data/test/soap/auth/htdigest +2 -0
  233. data/test/soap/auth/htpasswd +2 -0
  234. data/test/soap/auth/test_basic.rb +117 -0
  235. data/test/soap/auth/test_digest.rb +118 -0
  236. data/test/soap/calc/calc.rb +17 -0
  237. data/test/soap/calc/calc2.rb +29 -0
  238. data/test/soap/calc/server.cgi +13 -0
  239. data/test/soap/calc/server.rb +17 -0
  240. data/test/soap/calc/server2.rb +20 -0
  241. data/test/soap/calc/test_calc.rb +51 -0
  242. data/test/soap/calc/test_calc2.rb +55 -0
  243. data/test/soap/calc/test_calc_cgi.rb +71 -0
  244. data/test/soap/case/test_mapping.rb +57 -0
  245. data/test/soap/fault/test_customfault.rb +60 -0
  246. data/test/soap/fault/test_fault.rb +46 -0
  247. data/test/soap/fault/test_soaparray.rb +35 -0
  248. data/test/soap/filter/test_filter.rb +146 -0
  249. data/test/soap/header/server.cgi +119 -0
  250. data/test/soap/header/session.pstoredb +0 -0
  251. data/test/soap/header/test_authheader.rb +240 -0
  252. data/test/soap/header/test_authheader_cgi.rb +121 -0
  253. data/test/soap/header/test_simplehandler.rb +116 -0
  254. data/test/soap/helloworld/hw_s.rb +16 -0
  255. data/test/soap/helloworld/test_helloworld.rb +43 -0
  256. data/test/soap/htpasswd +2 -0
  257. data/test/soap/literalArrayMapping/amazonEc.rb +4778 -0
  258. data/test/soap/literalArrayMapping/amazonEcDriver.rb +172 -0
  259. data/test/soap/literalArrayMapping/amazonresponse.xml +100 -0
  260. data/test/soap/literalArrayMapping/test_definedarray.rb +34 -0
  261. data/test/soap/marshal/marshaltestlib.rb +494 -0
  262. data/test/soap/marshal/test_digraph.rb +56 -0
  263. data/test/soap/marshal/test_marshal.rb +26 -0
  264. data/test/soap/marshal/test_struct.rb +47 -0
  265. data/test/soap/ssl/README +1 -0
  266. data/test/soap/ssl/ca.cert +23 -0
  267. data/test/soap/ssl/client.cert +19 -0
  268. data/test/soap/ssl/client.key +15 -0
  269. data/test/soap/ssl/server.cert +19 -0
  270. data/test/soap/ssl/server.key +15 -0
  271. data/test/soap/ssl/sslsvr.rb +57 -0
  272. data/test/soap/ssl/subca.cert +21 -0
  273. data/test/soap/ssl/test_ssl.rb +235 -0
  274. data/test/soap/struct/test_struct.rb +70 -0
  275. data/test/soap/styleuse/client.rb +20 -0
  276. data/test/soap/styleuse/server.rb +86 -0
  277. data/test/soap/swa/test_file.rb +75 -0
  278. data/test/soap/test_basetype.rb +1090 -0
  279. data/test/soap/test_cookie.rb +112 -0
  280. data/test/soap/test_custom_ns.rb +105 -0
  281. data/test/soap/test_custommap.rb +110 -0
  282. data/test/soap/test_empty.rb +105 -0
  283. data/test/soap/test_envelopenamespace.rb +85 -0
  284. data/test/soap/test_extraattr.rb +54 -0
  285. data/test/soap/test_generator.rb +27 -0
  286. data/test/soap/test_httpconfigloader.rb +71 -0
  287. data/test/soap/test_mapping.rb +131 -0
  288. data/test/soap/test_nestedexception.rb +56 -0
  289. data/test/soap/test_nil.rb +57 -0
  290. data/test/soap/test_no_indent.rb +88 -0
  291. data/test/soap/test_property.rb +428 -0
  292. data/test/soap/test_response_as_xml.rb +117 -0
  293. data/test/soap/test_soapelement.rb +138 -0
  294. data/test/soap/test_streamhandler.rb +270 -0
  295. data/test/soap/test_styleuse.rb +326 -0
  296. data/test/soap/wsdlDriver/README.txt +2 -0
  297. data/test/soap/wsdlDriver/calc.wsdl +126 -0
  298. data/test/soap/wsdlDriver/document.wsdl +54 -0
  299. data/test/soap/wsdlDriver/echo_version.rb +29 -0
  300. data/test/soap/wsdlDriver/simpletype.wsdl +63 -0
  301. data/test/soap/wsdlDriver/test_calc.rb +71 -0
  302. data/test/soap/wsdlDriver/test_document.rb +71 -0
  303. data/test/soap/wsdlDriver/test_simpletype.rb +80 -0
  304. data/test/testutil.rb +54 -0
  305. data/test/wsdl/abstract/abstract.wsdl +176 -0
  306. data/test/wsdl/abstract/test_abstract.rb +159 -0
  307. data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
  308. data/test/wsdl/anonymous/expectedDriver.rb +59 -0
  309. data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
  310. data/test/wsdl/anonymous/lp.wsdl +147 -0
  311. data/test/wsdl/anonymous/test_anonymous.rb +130 -0
  312. data/test/wsdl/any/any.wsdl +114 -0
  313. data/test/wsdl/any/expectedDriver.rb +68 -0
  314. data/test/wsdl/any/expectedEcho.rb +57 -0
  315. data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
  316. data/test/wsdl/any/expectedService.rb +69 -0
  317. data/test/wsdl/any/test_any.rb +193 -0
  318. data/test/wsdl/axisArray/axisArray.wsdl +87 -0
  319. data/test/wsdl/axisArray/test_axisarray.rb +124 -0
  320. data/test/wsdl/choice/choice.wsdl +167 -0
  321. data/test/wsdl/choice/test_choice.rb +310 -0
  322. data/test/wsdl/complexcontent/complexContent.wsdl +83 -0
  323. data/test/wsdl/complexcontent/test_echo.rb +90 -0
  324. data/test/wsdl/datetime/DatetimeService.rb +44 -0
  325. data/test/wsdl/datetime/datetime.rb +0 -0
  326. data/test/wsdl/datetime/datetime.wsdl +45 -0
  327. data/test/wsdl/datetime/datetimeServant.rb +22 -0
  328. data/test/wsdl/datetime/test_datetime.rb +86 -0
  329. data/test/wsdl/document/array/double.wsdl +161 -0
  330. data/test/wsdl/document/array/test_array.rb +201 -0
  331. data/test/wsdl/document/document.wsdl +76 -0
  332. data/test/wsdl/document/number.wsdl +54 -0
  333. data/test/wsdl/document/ping_nosoapaction.wsdl +66 -0
  334. data/test/wsdl/document/test_nosoapaction.rb +102 -0
  335. data/test/wsdl/document/test_number.rb +92 -0
  336. data/test/wsdl/document/test_rpc.rb +355 -0
  337. data/test/wsdl/emptycomplextype.wsdl +31 -0
  338. data/test/wsdl/fault/fault.wsdl +79 -0
  339. data/test/wsdl/fault/multifault.wsdl +96 -0
  340. data/test/wsdl/fault/test_fault.rb +119 -0
  341. data/test/wsdl/fault/test_multifault.rb +134 -0
  342. data/test/wsdl/group/expectedClassdef.rb +58 -0
  343. data/test/wsdl/group/expectedDriver.rb +51 -0
  344. data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
  345. data/test/wsdl/group/group.wsdl +88 -0
  346. data/test/wsdl/group/test_rpc.rb +145 -0
  347. data/test/wsdl/list/list.wsdl +93 -0
  348. data/test/wsdl/list/test_list.rb +124 -0
  349. data/test/wsdl/map/map.wsdl +92 -0
  350. data/test/wsdl/map/map.xml +43 -0
  351. data/test/wsdl/map/test_map.rb +99 -0
  352. data/test/wsdl/marshal/Person.rb +1 -0
  353. data/test/wsdl/marshal/person.wsdl +21 -0
  354. data/test/wsdl/marshal/person_org.rb +23 -0
  355. data/test/wsdl/marshal/test_wsdlmarshal.rb +76 -0
  356. data/test/wsdl/multiplefault.wsdl +75 -0
  357. data/test/wsdl/oneway/oneway.wsdl +36 -0
  358. data/test/wsdl/oneway/test_oneway.rb +108 -0
  359. data/test/wsdl/overload/expectedClient.rb +37 -0
  360. data/test/wsdl/overload/expectedDriver.rb +61 -0
  361. data/test/wsdl/overload/expectedServant.rb +35 -0
  362. data/test/wsdl/overload/overload.wsdl +70 -0
  363. data/test/wsdl/overload/test_overload.rb +131 -0
  364. data/test/wsdl/qualified/lp.wsdl +47 -0
  365. data/test/wsdl/qualified/lp.xsd +26 -0
  366. data/test/wsdl/qualified/np.wsdl +51 -0
  367. data/test/wsdl/qualified/test_qualified.rb +137 -0
  368. data/test/wsdl/qualified/test_unqualified.rb +138 -0
  369. data/test/wsdl/raa/RAAService.rb +125 -0
  370. data/test/wsdl/raa/README.txt +8 -0
  371. data/test/wsdl/raa/expectedClassDef.rb +100 -0
  372. data/test/wsdl/raa/expectedDriver.rb +96 -0
  373. data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
  374. data/test/wsdl/raa/raa.wsdl +264 -0
  375. data/test/wsdl/raa/test_raa.rb +126 -0
  376. data/test/wsdl/ref/expectedDriver.rb +51 -0
  377. data/test/wsdl/ref/expectedProduct.rb +243 -0
  378. data/test/wsdl/ref/product.wsdl +147 -0
  379. data/test/wsdl/ref/test_ref.rb +268 -0
  380. data/test/wsdl/rpc/rpc.wsdl +109 -0
  381. data/test/wsdl/rpc/test-rpc-lit.wsdl +371 -0
  382. data/test/wsdl/rpc/test_rpc.rb +176 -0
  383. data/test/wsdl/rpc/test_rpc_lit.rb +470 -0
  384. data/test/wsdl/simplecontent/simplecontent.wsdl +84 -0
  385. data/test/wsdl/simplecontent/test_simplecontent.rb +102 -0
  386. data/test/wsdl/simpletype/rpc/echo_version.rb +1 -0
  387. data/test/wsdl/simpletype/rpc/echo_versionDriver.rb +10 -0
  388. data/test/wsdl/simpletype/rpc/echo_versionMappingRegistry.rb +4 -0
  389. data/test/wsdl/simpletype/rpc/echo_versionServant.rb +3 -0
  390. data/test/wsdl/simpletype/rpc/echo_version_service.rb +3 -0
  391. data/test/wsdl/simpletype/rpc/echo_version_serviceClient.rb +34 -0
  392. data/test/wsdl/simpletype/rpc/expectedClient.rb +34 -0
  393. data/test/wsdl/simpletype/rpc/expectedDriver.rb +58 -0
  394. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +36 -0
  395. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +57 -0
  396. data/test/wsdl/simpletype/rpc/expectedServant.rb +32 -0
  397. data/test/wsdl/simpletype/rpc/expectedService.rb +55 -0
  398. data/test/wsdl/simpletype/rpc/rpc.wsdl +98 -0
  399. data/test/wsdl/simpletype/rpc/test_rpc.rb +52 -0
  400. data/test/wsdl/simpletype/simpletype.wsdl +114 -0
  401. data/test/wsdl/simpletype/test_simpletype.rb +92 -0
  402. data/test/wsdl/soap/soapbodyparts.wsdl +103 -0
  403. data/test/wsdl/soap/test_soapbodyparts.rb +79 -0
  404. data/test/wsdl/soap/wsdl2ruby/echo_version.rb +1 -0
  405. data/test/wsdl/soap/wsdl2ruby/echo_versionDriver.rb +10 -0
  406. data/test/wsdl/soap/wsdl2ruby/echo_versionMappingRegistry.rb +4 -0
  407. data/test/wsdl/soap/wsdl2ruby/echo_versionServant.rb +3 -0
  408. data/test/wsdl/soap/wsdl2ruby/echo_version_service.cgi +3 -0
  409. data/test/wsdl/soap/wsdl2ruby/echo_version_service.rb +7 -0
  410. data/test/wsdl/soap/wsdl2ruby/echo_version_serviceClient.rb +34 -0
  411. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +21 -0
  412. data/test/wsdl/soap/wsdl2ruby/expectedClient.rb +34 -0
  413. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +58 -0
  414. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +36 -0
  415. data/test/wsdl/soap/wsdl2ruby/expectedServant.rb +32 -0
  416. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +48 -0
  417. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +55 -0
  418. data/test/wsdl/soap/wsdl2ruby/rpc.wsdl +80 -0
  419. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +37 -0
  420. data/test/wsdl/soap/wsdl2ruby/section/section.xsd +31 -0
  421. data/test/wsdl/soap/wsdl2ruby/section/test_section.rb +53 -0
  422. data/test/wsdl/soap/wsdl2ruby/soapenc/soapenc.wsdl +64 -0
  423. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +83 -0
  424. data/test/wsdl/soap/wsdl2ruby/test_wsdl2ruby.rb +102 -0
  425. data/test/wsdl/soaptype/soaptype.wsdl +61 -0
  426. data/test/wsdl/soaptype/test_soaptype.rb +178 -0
  427. data/test/wsdl/test_emptycomplextype.rb +21 -0
  428. data/test/wsdl/test_fault.rb +50 -0
  429. data/test/wsdl/test_multiplefault.rb +41 -0
  430. data/test/xsd/codegen/test_classdef.rb +244 -0
  431. data/test/xsd/noencoding.xml +4 -0
  432. data/test/xsd/test_noencoding.rb +32 -0
  433. data/test/xsd/test_ns.rb +41 -0
  434. data/test/xsd/test_xmlschemaparser.rb +22 -0
  435. data/test/xsd/test_xsd.rb +1638 -0
  436. data/test/xsd/xmllang.xml +43 -0
  437. data/test/xsd/xmlschema.xml +12 -0
  438. data/test/xsd/xsd2ruby/expected_mysample.rb +65 -0
  439. data/test/xsd/xsd2ruby/expected_mysample_mapper.rb +11 -0
  440. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +51 -0
  441. data/test/xsd/xsd2ruby/section.xsd +49 -0
  442. data/test/xsd/xsd2ruby/test_xsd2ruby.rb +90 -0
  443. metadata +568 -0
@@ -0,0 +1,138 @@
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["_?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
+
118
+ def test_from_obj_xmlattr
119
+ source = { "xmlattr_c1" => "t1",
120
+ "ymlattr_c2" => {
121
+ XSD::QName.new("urn:foo", "xmlattr_c2") => "t2",
122
+ XSD::QName.new("urn:foo", "ymlattr_c3") => "t3" }}
123
+ obj = SOAPElement.from_obj(source)
124
+ assert_equal("t1", obj.extraattr[XSD::QName.new(nil, "c1")])
125
+ assert_equal("t2", obj["ymlattr_c2"].extraattr[XSD::QName.new("urn:foo", "c2")])
126
+ assert_equal("t3", obj["ymlattr_c2"]["ymlattr_c3"].text)
127
+ #
128
+ source = { "xmlattr_xmlattr_c1" => "t1",
129
+ "xmlele_xmlattr_c2" => {
130
+ XSD::QName.new("urn:foo", "xmlele_xmlele_c3") => "t3" }}
131
+ obj = SOAPElement.from_obj(source)
132
+ assert_equal("t1", obj.extraattr[XSD::QName.new(nil, "xmlattr_c1")])
133
+ assert_equal("t3", obj["xmlattr_c2"]["xmlele_c3"].text)
134
+ end
135
+ end
136
+
137
+
138
+ end
@@ -0,0 +1,270 @@
1
+ require 'test/unit'
2
+ require 'soap/rpc/driver'
3
+ require 'webrick'
4
+ require 'webrick/httpproxy'
5
+ require 'logger'
6
+ require File.join(File.dirname(File.expand_path(__FILE__)), '..', 'testutil.rb')
7
+
8
+
9
+ module SOAP
10
+
11
+
12
+ class TestStreamHandler < Test::Unit::TestCase
13
+ Port = 17171
14
+ ProxyPort = 17172
15
+
16
+ def setup
17
+ @logger = Logger.new(STDERR)
18
+ @logger.level = Logger::Severity::FATAL
19
+ @url = "http://localhost:#{Port}/"
20
+ @proxyurl = "http://localhost:#{ProxyPort}/"
21
+ @server = @proxyserver = @client = nil
22
+ @server_thread = @proxyserver_thread = nil
23
+ setup_server
24
+ setup_client
25
+ end
26
+
27
+ def teardown
28
+ teardown_client if @client
29
+ teardown_proxyserver if @proxyserver
30
+ teardown_server if @server
31
+ end
32
+
33
+ def setup_server
34
+ @server = WEBrick::HTTPServer.new(
35
+ :BindAddress => "0.0.0.0",
36
+ :Logger => @logger,
37
+ :Port => Port,
38
+ :AccessLog => [],
39
+ :DocumentRoot => File.dirname(File.expand_path(__FILE__))
40
+ )
41
+ @server.mount(
42
+ '/',
43
+ WEBrick::HTTPServlet::ProcHandler.new(method(:do_server_proc).to_proc)
44
+ )
45
+ htpasswd = File.join(File.dirname(__FILE__), 'htpasswd')
46
+ htpasswd_userdb = WEBrick::HTTPAuth::Htpasswd.new(htpasswd)
47
+ @basic_auth = WEBrick::HTTPAuth::BasicAuth.new(
48
+ :Logger => @logger,
49
+ :Realm => 'auth',
50
+ :UserDB => htpasswd_userdb
51
+ )
52
+ @server.mount(
53
+ '/basic_auth',
54
+ WEBrick::HTTPServlet::ProcHandler.new(method(:do_server_proc_basic_auth).to_proc)
55
+ )
56
+ @server_thread = TestUtil.start_server_thread(@server)
57
+ end
58
+
59
+ def setup_proxyserver
60
+ @proxyserver = WEBrick::HTTPProxyServer.new(
61
+ :BindAddress => "0.0.0.0",
62
+ :Logger => @logger,
63
+ :Port => ProxyPort,
64
+ :AccessLog => []
65
+ )
66
+ @proxyserver_thread = TestUtil.start_server_thread(@proxyserver)
67
+ end
68
+
69
+ def setup_client
70
+ @client = SOAP::RPC::Driver.new(@url, '')
71
+ @client.add_method("do_server_proc")
72
+ @client.add_method("do_server_proc_basic_auth")
73
+ end
74
+
75
+ def teardown_server
76
+ @server.shutdown
77
+ @server_thread.kill
78
+ @server_thread.join
79
+ end
80
+
81
+ def teardown_proxyserver
82
+ @proxyserver.shutdown
83
+ @proxyserver_thread.kill
84
+ @proxyserver_thread.join
85
+ end
86
+
87
+ def teardown_client
88
+ @client.reset_stream
89
+ end
90
+
91
+ def do_server_proc(req, res)
92
+ res['content-type'] = 'text/xml'
93
+ res.body = <<__EOX__
94
+ <?xml version="1.0" encoding="utf-8" ?>
95
+ <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">
96
+ <env:Body>
97
+ <n1:do_server_proc xmlns:n1="urn:foo" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
98
+ <return xsi:nil="true"/>
99
+ </n1:do_server_proc>
100
+ </env:Body>
101
+ </env:Envelope>
102
+ __EOX__
103
+ end
104
+
105
+ def do_server_proc_basic_auth(req, res)
106
+ @basic_auth.authenticate(req, res)
107
+ do_server_proc(req, res)
108
+ end
109
+
110
+ def parse_req_header(str)
111
+ parse_req_header_http_access2(str)
112
+ end
113
+
114
+ def parse_req_header_http_access2(str)
115
+ headerp = false
116
+ headers = {}
117
+ req = nil
118
+ str.split(/(?:\r?\n)/).each do |line|
119
+ if headerp and /^$/ =~line
120
+ headerp = false
121
+ break
122
+ end
123
+ if headerp
124
+ k, v = line.scan(/^([^:]+):\s*(.*)$/)[0]
125
+ headers[k.downcase] = v
126
+ end
127
+ if /^POST/ =~ line
128
+ req = line
129
+ headerp = true
130
+ end
131
+ end
132
+ return req, headers
133
+ end
134
+
135
+ def test_normal
136
+ str = ""
137
+ @client.wiredump_dev = str
138
+ assert_nil(@client.do_server_proc)
139
+ r, h = parse_req_header(str)
140
+ assert_match(%r"POST / HTTP/1.", r)
141
+ assert(/^text\/xml;/ =~ h["content-type"])
142
+ end
143
+
144
+ def test_uri
145
+ # initialize client with URI object
146
+ @client = SOAP::RPC::Driver.new(URI.parse(@url), '')
147
+ @client.add_method("do_server_proc")
148
+ # same as test_normal
149
+ str = ""
150
+ @client.wiredump_dev = str
151
+ assert_nil(@client.do_server_proc)
152
+ r, h = parse_req_header(str)
153
+ assert_match(%r"POST / HTTP/1.", r)
154
+ assert(/^text\/xml;/ =~ h["content-type"])
155
+ end
156
+
157
+ def test_basic_auth
158
+ unless Object.const_defined?('HTTPClient')
159
+ # soap4r + net/http + basic_auth is not supported.
160
+ # use httpclient instead.
161
+ assert(true)
162
+ return
163
+ end
164
+ @client.endpoint_url = @url + 'basic_auth'
165
+ str = ""
166
+ @client.wiredump_dev = str
167
+ @client.options['protocol.http.basic_auth']['0'] = [@url, "admin", "admin"]
168
+ assert_nil(@client.do_server_proc_basic_auth)
169
+ @client.options["protocol.http.basic_auth"] << [@url, "admin", "admin"]
170
+ assert_nil(@client.do_server_proc_basic_auth)
171
+ end
172
+
173
+ def test_proxy
174
+ if Object.const_defined?('HTTPClient')
175
+ backup = HTTPClient::NO_PROXY_HOSTS.dup
176
+ HTTPClient::NO_PROXY_HOSTS.clear
177
+ else
178
+ backup = SOAP::NetHttpClient::NO_PROXY_HOSTS.dup
179
+ SOAP::NetHttpClient::NO_PROXY_HOSTS.clear
180
+ end
181
+ setup_proxyserver
182
+ str = ""
183
+ @client.wiredump_dev = str
184
+ @client.options["protocol.http.proxy"] = @proxyurl
185
+ assert_nil(@client.do_server_proc)
186
+ r, h = parse_req_header(str)
187
+ assert_match(%r"POST http://localhost:17171/ HTTP/1.", r)
188
+ # illegal proxy uri
189
+ assert_raise(ArgumentError) do
190
+ @client.options["protocol.http.proxy"] = 'ftp://foo:8080'
191
+ end
192
+ ensure
193
+ if Object.const_defined?('HTTPClient')
194
+ HTTPClient::NO_PROXY_HOSTS.replace(backup)
195
+ else
196
+ SOAP::NetHttpClient::NO_PROXY_HOSTS.replace(backup)
197
+ end
198
+ end
199
+
200
+ def test_charset
201
+ str = ""
202
+ @client.wiredump_dev = str
203
+ @client.options["protocol.http.charset"] = "iso-8859-8"
204
+ assert_nil(@client.do_server_proc)
205
+ r, h = parse_req_header(str)
206
+ assert_equal("text/xml; charset=iso-8859-8", h["content-type"])
207
+ #
208
+ str.replace("")
209
+ @client.options["protocol.http.charset"] = "iso-8859-3"
210
+ assert_nil(@client.do_server_proc)
211
+ r, h = parse_req_header(str)
212
+ assert_equal("text/xml; charset=iso-8859-3", h["content-type"])
213
+ end
214
+
215
+ def test_custom_streamhandler
216
+ @client.options["protocol.streamhandler"] = MyStreamHandler
217
+ assert_equal("hello", @client.do_server_proc)
218
+ @client.options["protocol.streamhandler"] = ::SOAP::HTTPStreamHandler
219
+ assert_nil(@client.do_server_proc)
220
+ @client.options["protocol.streamhandler"] = MyStreamHandler
221
+ assert_equal("hello", @client.do_server_proc)
222
+ @client.options["protocol.streamhandler"] = ::SOAP::HTTPStreamHandler
223
+ assert_nil(@client.do_server_proc)
224
+ end
225
+
226
+ class MyStreamHandler < SOAP::StreamHandler
227
+ def self.create(options)
228
+ new
229
+ end
230
+
231
+ def send(endpoint_url, conn_data, soapaction = nil, charset = nil)
232
+ conn_data.receive_string = %q[<?xml version="1.0" encoding="utf-8" ?>
233
+ <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">
234
+ <env:Body>
235
+ <n1:do_server_proc xmlns:n1="urn:foo" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
236
+ <return xsi:type="xsd:string">hello</return>
237
+ </n1:do_server_proc>
238
+ </env:Body>
239
+ </env:Envelope>]
240
+ conn_data
241
+ end
242
+
243
+ def reset(endpoint_url = nil)
244
+ # nothing to do
245
+ end
246
+ end
247
+
248
+ # not used
249
+ class ExternalProcessStreamHandler < SOAP::StreamHandler
250
+ def self.create(options)
251
+ new
252
+ end
253
+
254
+ def send(endpoint_url, conn_data, soapaction = nil, charset = nil)
255
+ cmd = "cat" # !!
256
+ IO.popen(cmd, "w+") do |io|
257
+ io.write(conn_data.send_string)
258
+ io.close_write
259
+ conn_data.receive_string = io.read
260
+ end
261
+ conn_data
262
+ end
263
+
264
+ def reset(endpoint_url = nil)
265
+ end
266
+ end
267
+ end
268
+
269
+
270
+ end
@@ -0,0 +1,326 @@
1
+ require 'test/unit'
2
+ require 'soap/rpc/httpserver'
3
+ require 'soap/rpc/driver'
4
+ require File.join(File.dirname(File.expand_path(__FILE__)), '..', 'testutil.rb')
5
+
6
+
7
+ module SOAP
8
+
9
+
10
+ class TestStyleUse < Test::Unit::TestCase
11
+ # rpc driver: obj in(Hash allowed for literal), obj out
12
+ #
13
+ # style: not visible from user
14
+ # rpc: wrapped element
15
+ # document: unwrappted element
16
+ #
17
+ # use:
18
+ # encoding: a graph (SOAP Data Model)
19
+ # literal: not a graph (SOAPElement)
20
+ #
21
+ # rpc stub: obj in, obj out(Hash is allowed for literal)
22
+ #
23
+ # style: not visible from user
24
+ # rpc: wrapped element
25
+ # document: unwrappted element
26
+ #
27
+ # use:
28
+ # encoding: a graph (SOAP Data Model)
29
+ # literal: not a graph (SOAPElement)
30
+ #
31
+ # document driver: SOAPElement in, SOAPElement out? [not implemented]
32
+ #
33
+ # style: ditto
34
+ # use: ditto
35
+ #
36
+ #
37
+ # document stub: SOAPElement in, SOAPElement out? [not implemented]
38
+ #
39
+ # style: ditto
40
+ # use: ditto
41
+ #
42
+ class GenericServant
43
+ # method name style: requeststyle_requestuse_responsestyle_responseuse
44
+
45
+ # 2 params -> array
46
+ def rpc_enc_rpc_enc(obj1, obj2)
47
+ [obj1, [obj1, obj2]]
48
+ end
49
+
50
+ # 2 objs -> array
51
+ def rpc_lit_rpc_enc(obj1, obj2)
52
+ [obj2, obj1]
53
+ end
54
+
55
+ # 2 params -> 2 params
56
+ def rpc_enc_rpc_lit(obj1, obj2)
57
+ klass = [obj1.class.name, obj2.class.name]
58
+ [obj2, obj1]
59
+ end
60
+
61
+ # 2 objs -> 2 objs
62
+ def rpc_lit_rpc_lit(obj1, obj2)
63
+ [obj1, obj2]
64
+ end
65
+
66
+ # 2 params -> array
67
+ def doc_enc_doc_enc(obj1, obj2)
68
+ [obj1, [obj1, obj2]]
69
+ end
70
+
71
+ # 2 objs -> array
72
+ def doc_lit_doc_enc(obj1, obj2)
73
+ [obj2, obj1]
74
+ end
75
+
76
+ # 2 params -> 2 hashes
77
+ def doc_enc_doc_lit(obj1, obj2)
78
+ klass = [obj1.class.name, obj2.class.name]
79
+ return {'obj1' => {'klass' => klass}, 'misc' => 'hash does not have an order'},
80
+ {'obj2' => {'klass' => klass}}
81
+ end
82
+
83
+ # 2 objs -> 2 objs
84
+ def doc_lit_doc_lit(obj1, obj2)
85
+ return obj1, obj2
86
+ end
87
+ end
88
+
89
+ Namespace = "urn:styleuse"
90
+
91
+ module Op
92
+ def self.opt(request_style, request_use, response_style, response_use)
93
+ {
94
+ :request_style => request_style,
95
+ :request_use => request_use,
96
+ :response_style => response_style,
97
+ :response_use => response_use
98
+ }
99
+ end
100
+
101
+ Op_rpc_enc_rpc_enc = [
102
+ XSD::QName.new(Namespace, 'rpc_enc_rpc_enc'),
103
+ nil,
104
+ 'rpc_enc_rpc_enc', [
105
+ [:in, 'obj1', nil],
106
+ [:in, 'obj2', nil],
107
+ [:retval, 'return', nil]],
108
+ opt(:rpc, :encoded, :rpc, :encoded)
109
+ ]
110
+
111
+ Op_rpc_lit_rpc_enc = [
112
+ XSD::QName.new(Namespace, 'rpc_lit_rpc_enc'),
113
+ nil,
114
+ 'rpc_lit_rpc_enc', [
115
+ [:in, 'obj1', nil],
116
+ [:in, 'obj2', nil],
117
+ [:retval, 'return', nil]],
118
+ opt(:rpc, :literal, :rpc, :encoded)
119
+ ]
120
+
121
+ Op_rpc_enc_rpc_lit = [
122
+ XSD::QName.new(Namespace, 'rpc_enc_rpc_lit'),
123
+ nil,
124
+ 'rpc_enc_rpc_lit', [
125
+ [:in, 'obj1', nil],
126
+ [:in, 'obj2', nil],
127
+ [:retval, 'ret1', nil],
128
+ [:out, 'ret2', nil]],
129
+ opt(:rpc, :encoded, :rpc, :literal)
130
+ ]
131
+
132
+ Op_rpc_lit_rpc_lit = [
133
+ XSD::QName.new(Namespace, 'rpc_lit_rpc_lit'),
134
+ nil,
135
+ 'rpc_lit_rpc_lit', [
136
+ [:in, 'obj1', nil],
137
+ [:in, 'obj2', nil],
138
+ [:retval, 'ret1', nil],
139
+ [:out, 'ret2', nil]],
140
+ opt(:rpc, :literal, :rpc, :literal)
141
+ ]
142
+
143
+ Op_doc_enc_doc_enc = [
144
+ Namespace + 'doc_enc_doc_enc',
145
+ 'doc_enc_doc_enc', [
146
+ [:in, 'obj1', [nil, Namespace, 'obj1']],
147
+ [:in, 'obj2', [nil, Namespace, 'obj2']],
148
+ [:out, 'ret1', [nil, Namespace, 'ret1']],
149
+ [:out, 'ret2', [nil, Namespace, 'ret2']]],
150
+ opt(:document, :encoded, :document, :encoded)
151
+ ]
152
+
153
+ Op_doc_lit_doc_enc = [
154
+ Namespace + 'doc_lit_doc_enc',
155
+ 'doc_lit_doc_enc', [
156
+ [:in, 'obj1', [nil, Namespace, 'obj1']],
157
+ [:in, 'obj2', [nil, Namespace, 'obj2']],
158
+ [:out, 'ret1', [nil, Namespace, 'ret1']],
159
+ [:out, 'ret2', [nil, Namespace, 'ret2']]],
160
+ opt(:document, :literal, :document, :encoded)
161
+ ]
162
+
163
+ Op_doc_enc_doc_lit = [
164
+ Namespace + 'doc_enc_doc_lit',
165
+ 'doc_enc_doc_lit', [
166
+ [:in, 'obj1', [nil, Namespace, 'obj1']],
167
+ [:in, 'obj2', [nil, Namespace, 'obj2']],
168
+ [:out, 'ret1', [nil, Namespace, 'ret1']],
169
+ [:out, 'ret2', [nil, Namespace, 'ret2']]],
170
+ opt(:document, :encoded, :document, :literal)
171
+ ]
172
+
173
+ Op_doc_lit_doc_lit = [
174
+ Namespace + 'doc_lit_doc_lit',
175
+ 'doc_lit_doc_lit', [
176
+ [:in, 'obj1', [nil, Namespace, 'obj1']],
177
+ [:in, 'obj2', [nil, Namespace, 'obj2']],
178
+ [:out, 'ret1', [nil, Namespace, 'ret1']],
179
+ [:out, 'ret2', [nil, Namespace, 'ret2']]],
180
+ opt(:document, :literal, :document, :literal)
181
+ ]
182
+ end
183
+
184
+ include Op
185
+
186
+ class Server < ::SOAP::RPC::HTTPServer
187
+ include Op
188
+
189
+ def on_init
190
+ @servant = GenericServant.new
191
+ add_rpc_operation(@servant, *Op_rpc_enc_rpc_enc)
192
+ add_rpc_operation(@servant, *Op_rpc_lit_rpc_enc)
193
+ add_rpc_operation(@servant, *Op_rpc_enc_rpc_lit)
194
+ add_rpc_operation(@servant, *Op_rpc_lit_rpc_lit)
195
+ add_document_operation(@servant, *Op_doc_enc_doc_enc)
196
+ add_document_operation(@servant, *Op_doc_lit_doc_enc)
197
+ add_document_operation(@servant, *Op_doc_enc_doc_lit)
198
+ add_document_operation(@servant, *Op_doc_lit_doc_lit)
199
+ end
200
+ end
201
+
202
+ Port = 17171
203
+
204
+ def setup
205
+ setup_server
206
+ setup_client
207
+ end
208
+
209
+ def setup_server
210
+ @server = Server.new(
211
+ :BindAddress => "0.0.0.0",
212
+ :Port => Port,
213
+ :AccessLog => [],
214
+ :SOAPDefaultNamespace => Namespace
215
+ )
216
+ @server.level = Logger::Severity::ERROR
217
+ @server_thread = TestUtil.start_server_thread(@server)
218
+ end
219
+
220
+ def setup_client
221
+ @client = ::SOAP::RPC::Driver.new("http://localhost:#{Port}/", Namespace)
222
+ @client.wiredump_dev = STDERR if $DEBUG
223
+ @client.add_rpc_operation(*Op_rpc_enc_rpc_enc)
224
+ @client.add_rpc_operation(*Op_rpc_lit_rpc_enc)
225
+ @client.add_rpc_operation(*Op_rpc_enc_rpc_lit)
226
+ @client.add_rpc_operation(*Op_rpc_lit_rpc_lit)
227
+ @client.add_document_operation(*Op_doc_enc_doc_enc)
228
+ @client.add_document_operation(*Op_doc_lit_doc_enc)
229
+ @client.add_document_operation(*Op_doc_enc_doc_lit)
230
+ @client.add_document_operation(*Op_doc_lit_doc_lit)
231
+ end
232
+
233
+ def teardown
234
+ teardown_server if @server
235
+ teardown_client if @client
236
+ end
237
+
238
+ def teardown_server
239
+ @server.shutdown
240
+ @server_thread.kill
241
+ @server_thread.join
242
+ end
243
+
244
+ def teardown_client
245
+ @client.reset_stream
246
+ end
247
+
248
+ def test_rpc_enc_rpc_enc
249
+ o = "hello"
250
+ obj1 = o
251
+ obj2 = [1]
252
+ ret = @client.rpc_enc_rpc_enc(obj1, obj2)
253
+ # server returns [obj1, [obj1, obj2]]
254
+ assert_equal([obj1, [obj1, obj2]], ret)
255
+ assert_same(ret[0], ret[1][0])
256
+ end
257
+
258
+ S1 = ::Struct.new(:a)
259
+ S2 = ::Struct.new(:c)
260
+ def test_rpc_lit_rpc_enc
261
+ ret1, ret2 = @client.rpc_lit_rpc_enc(S1.new('b'), S2.new('d'))
262
+ assert_equal('d', ret1.c)
263
+ assert_equal('b', ret2.a)
264
+ # Hash is allowed for literal
265
+ ret1, ret2 = @client.rpc_lit_rpc_enc({'a' => 'b'}, {'c' => 'd'})
266
+ assert_equal('d', ret1.c)
267
+ assert_equal('b', ret2.a)
268
+ # simple value
269
+ assert_equal(
270
+ ['1', 'a'],
271
+ @client.rpc_lit_rpc_enc('a', 1)
272
+ )
273
+ end
274
+
275
+ def test_rpc_enc_rpc_lit
276
+ assert_equal(
277
+ ['1', 'a'],
278
+ @client.rpc_enc_rpc_lit('a', '1')
279
+ )
280
+ end
281
+
282
+ def test_rpc_lit_rpc_lit
283
+ ret1, ret2 = @client.rpc_lit_rpc_lit({'a' => 'b'}, {'c' => 'd'})
284
+ assert_equal('b', ret1["a"])
285
+ assert_equal('d', ret2["c"])
286
+ end
287
+
288
+ def test_doc_enc_doc_enc
289
+ o = "hello"
290
+ obj1 = o
291
+ obj2 = [1]
292
+ ret = @client.rpc_enc_rpc_enc(obj1, obj2)
293
+ # server returns [obj1, [obj1, obj2]]
294
+ assert_equal([obj1, [obj1, obj2]], ret)
295
+ assert_same(ret[0], ret[1][0])
296
+ end
297
+
298
+ def test_doc_lit_doc_enc
299
+ ret1, ret2 = @client.doc_lit_doc_enc({'a' => 'b'}, {'c' => 'd'})
300
+ assert_equal('d', ret1.c)
301
+ assert_equal('b', ret2.a)
302
+ assert_equal(
303
+ ['a', '1'],
304
+ @client.doc_lit_doc_enc(1, 'a')
305
+ )
306
+ end
307
+
308
+ def test_doc_enc_doc_lit
309
+ ret1, ret2 = @client.doc_enc_doc_lit('a', 1)
310
+ # literal Array
311
+ assert_equal(['String', 'Fixnum'], ret1['obj1']['klass'])
312
+ # same value
313
+ assert_equal(ret1['obj1']['klass'], ret2['obj2']['klass'])
314
+ # not the same object (not encoded)
315
+ assert_not_same(ret1['obj1']['klass'], ret2['obj2']['klass'])
316
+ end
317
+
318
+ def test_doc_lit_doc_lit
319
+ ret1, ret2 = @client.doc_lit_doc_lit({'a' => 'b'}, {'c' => 'd'})
320
+ assert_equal('b', ret1["a"])
321
+ assert_equal('d', ret2["c"])
322
+ end
323
+ end
324
+
325
+
326
+ end