tomdz-soap4r 1.5.8.20111103171510

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