soap4r 1.5.7 → 1.5.8

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 (199) hide show
  1. data/bin/wsdl2ruby.rb +8 -2
  2. data/lib/soap/baseData.rb +93 -43
  3. data/lib/soap/element.rb +11 -8
  4. data/lib/soap/encodingstyle/handler.rb +15 -4
  5. data/lib/soap/encodingstyle/literalHandler.rb +18 -24
  6. data/lib/soap/encodingstyle/soapHandler.rb +34 -77
  7. data/lib/soap/generator.rb +74 -48
  8. data/lib/soap/header/handler.rb +1 -1
  9. data/lib/soap/header/mappinghandler.rb +47 -0
  10. data/lib/soap/mapping/encodedregistry.rb +19 -13
  11. data/lib/soap/mapping/factory.rb +19 -3
  12. data/lib/soap/mapping/literalregistry.rb +47 -35
  13. data/lib/soap/mapping/mapping.rb +92 -24
  14. data/lib/soap/mapping/registry.rb +34 -18
  15. data/lib/soap/mapping/schemadefinition.rb +8 -1
  16. data/lib/soap/mapping/typeMap.rb +18 -0
  17. data/lib/soap/mapping/wsdlencodedregistry.rb +8 -50
  18. data/lib/soap/mapping/wsdlliteralregistry.rb +45 -39
  19. data/lib/soap/nestedexception.rb +42 -0
  20. data/lib/soap/netHttpClient.rb +1 -0
  21. data/lib/soap/ns.rb +34 -0
  22. data/lib/soap/parser.rb +32 -29
  23. data/lib/soap/processor.rb +1 -1
  24. data/lib/soap/rpc/driver.rb +1 -0
  25. data/lib/soap/rpc/element.rb +18 -6
  26. data/lib/soap/rpc/httpserver.rb +38 -24
  27. data/lib/soap/rpc/proxy.rb +14 -11
  28. data/lib/soap/rpc/router.rb +4 -1
  29. data/lib/soap/soap.rb +7 -6
  30. data/lib/soap/wsdlDriver.rb +29 -8
  31. data/lib/tags +5690 -0
  32. data/lib/wsdl/definitions.rb +26 -40
  33. data/lib/wsdl/info.rb +11 -0
  34. data/lib/wsdl/parser.rb +2 -2
  35. data/lib/wsdl/soap/cgiStubCreator.rb +10 -5
  36. data/lib/wsdl/soap/classDefCreator.rb +140 -113
  37. data/lib/wsdl/soap/classDefCreatorSupport.rb +94 -12
  38. data/lib/wsdl/soap/classNameCreator.rb +54 -0
  39. data/lib/wsdl/soap/clientSkeltonCreator.rb +6 -5
  40. data/lib/wsdl/soap/complexType.rb +10 -1
  41. data/lib/wsdl/soap/definitions.rb +4 -0
  42. data/lib/wsdl/soap/driverCreator.rb +14 -6
  43. data/lib/wsdl/soap/element.rb +4 -0
  44. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +11 -55
  45. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +28 -126
  46. data/lib/wsdl/soap/mappingRegistryCreator.rb +9 -3
  47. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +209 -94
  48. data/lib/wsdl/soap/methodDefCreator.rb +12 -16
  49. data/lib/wsdl/soap/servantSkeltonCreator.rb +3 -2
  50. data/lib/wsdl/soap/servletStubCreator.rb +107 -0
  51. data/lib/wsdl/soap/standaloneServerStubCreator.rb +10 -5
  52. data/lib/wsdl/soap/wsdl2ruby.rb +28 -13
  53. data/lib/wsdl/wsdl.rb +2 -1
  54. data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
  55. data/lib/wsdl/xmlSchema/attributeGroup.rb +86 -0
  56. data/lib/wsdl/xmlSchema/choice.rb +4 -1
  57. data/lib/wsdl/xmlSchema/complexContent.rb +1 -1
  58. data/lib/wsdl/xmlSchema/complexExtension.rb +9 -1
  59. data/lib/wsdl/xmlSchema/complexRestriction.rb +8 -0
  60. data/lib/wsdl/xmlSchema/complexType.rb +38 -5
  61. data/lib/wsdl/xmlSchema/data.rb +30 -7
  62. data/lib/wsdl/xmlSchema/element.rb +10 -2
  63. data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
  64. data/lib/wsdl/xmlSchema/group.rb +118 -0
  65. data/lib/wsdl/xmlSchema/import.rb +11 -23
  66. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  67. data/lib/wsdl/xmlSchema/include.rb +11 -17
  68. data/lib/wsdl/xmlSchema/length.rb +3 -1
  69. data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
  70. data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
  71. data/lib/wsdl/xmlSchema/maxlength.rb +3 -1
  72. data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
  73. data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
  74. data/lib/wsdl/xmlSchema/minlength.rb +3 -1
  75. data/lib/wsdl/xmlSchema/schema.rb +34 -0
  76. data/lib/wsdl/xmlSchema/sequence.rb +4 -1
  77. data/lib/wsdl/xmlSchema/simpleExtension.rb +8 -0
  78. data/lib/wsdl/xmlSchema/simpleRestriction.rb +49 -8
  79. data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
  80. data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
  81. data/lib/wsdl/xmlSchema/xsd2ruby.rb +13 -4
  82. data/lib/xsd/charset.rb +8 -6
  83. data/lib/xsd/codegen/classdef.rb +5 -0
  84. data/lib/xsd/codegen/moduledef.rb +17 -0
  85. data/lib/xsd/datatypes.rb +165 -20
  86. data/lib/xsd/mapping.rb +13 -5
  87. data/lib/xsd/namedelements.rb +8 -0
  88. data/lib/xsd/ns.rb +50 -14
  89. data/lib/xsd/qname.rb +3 -2
  90. data/lib/xsd/xmlparser.rb +4 -3
  91. data/test/soap/asp.net/test_aspdotnet.rb +1 -1
  92. data/test/soap/auth/test_basic.rb +4 -3
  93. data/test/soap/auth/test_digest.rb +4 -3
  94. data/test/soap/calc/test_calc.rb +6 -4
  95. data/test/soap/calc/test_calc2.rb +6 -4
  96. data/test/soap/calc/test_calc_cgi.rb +6 -4
  97. data/test/soap/fault/test_customfault.rb +6 -4
  98. data/test/soap/fault/test_soaparray.rb +35 -0
  99. data/test/soap/filter/test_filter.rb +2 -2
  100. data/test/soap/header/test_authheader.rb +2 -2
  101. data/test/soap/header/test_authheader_cgi.rb +3 -3
  102. data/test/soap/header/test_simplehandler.rb +2 -2
  103. data/test/soap/helloworld/test_helloworld.rb +6 -4
  104. data/test/soap/ssl/test_ssl.rb +1 -1
  105. data/test/soap/struct/test_struct.rb +2 -2
  106. data/test/soap/swa/test_file.rb +6 -4
  107. data/test/soap/test_basetype.rb +4 -4
  108. data/test/soap/test_cookie.rb +2 -2
  109. data/test/soap/test_custom_ns.rb +50 -8
  110. data/test/soap/test_custommap.rb +6 -4
  111. data/test/soap/test_empty.rb +6 -4
  112. data/test/soap/test_envelopenamespace.rb +2 -2
  113. data/test/soap/test_extraattr.rb +6 -7
  114. data/test/soap/test_generator.rb +27 -0
  115. data/test/soap/test_mapping.rb +10 -0
  116. data/test/soap/test_nestedexception.rb +56 -0
  117. data/test/soap/test_nil.rb +6 -4
  118. data/test/soap/test_no_indent.rb +6 -4
  119. data/test/soap/test_response_as_xml.rb +2 -2
  120. data/test/soap/test_streamhandler.rb +6 -3
  121. data/test/soap/test_styleuse.rb +2 -2
  122. data/test/soap/wsdlDriver/test_calc.rb +2 -2
  123. data/test/soap/wsdlDriver/test_document.rb +2 -2
  124. data/test/soap/wsdlDriver/test_simpletype.rb +2 -2
  125. data/test/wsdl/abstract/test_abstract.rb +1 -1
  126. data/test/wsdl/anonymous/expectedClassDef.rb +128 -0
  127. data/test/wsdl/anonymous/expectedDriver.rb +59 -0
  128. data/test/wsdl/anonymous/expectedMappingRegistry.rb +176 -0
  129. data/test/wsdl/anonymous/lp.wsdl +147 -0
  130. data/test/wsdl/anonymous/test_anonymous.rb +130 -0
  131. data/test/wsdl/any/expectedDriver.rb +3 -2
  132. data/test/wsdl/any/expectedEcho.rb +22 -2
  133. data/test/wsdl/any/expectedMappingRegistry.rb +63 -0
  134. data/test/wsdl/any/expectedService.rb +3 -1
  135. data/test/wsdl/any/test_any.rb +2 -7
  136. data/test/wsdl/axisArray/axisArray.wsdl +31 -4
  137. data/test/wsdl/axisArray/test_axisarray.rb +58 -3
  138. data/test/wsdl/choice/choice.wsdl +39 -0
  139. data/test/wsdl/choice/test_choice.rb +134 -7
  140. data/test/wsdl/complexcontent/test_echo.rb +1 -1
  141. data/test/wsdl/datetime/test_datetime.rb +2 -2
  142. data/test/wsdl/document/array/double.wsdl +45 -6
  143. data/test/wsdl/document/array/test_array.rb +68 -1
  144. data/test/wsdl/document/document.wsdl +2 -0
  145. data/test/wsdl/document/test_nosoapaction.rb +1 -1
  146. data/test/wsdl/document/test_number.rb +1 -1
  147. data/test/wsdl/document/test_rpc.rb +78 -9
  148. data/test/wsdl/fault/test_fault.rb +1 -1
  149. data/test/wsdl/fault/test_multifault.rb +1 -1
  150. data/test/wsdl/group/expectedClassdef.rb +58 -0
  151. data/test/wsdl/group/expectedDriver.rb +51 -0
  152. data/test/wsdl/group/expectedMappingRegistry.rb +67 -0
  153. data/test/wsdl/group/group.wsdl +88 -0
  154. data/test/wsdl/group/test_rpc.rb +145 -0
  155. data/test/wsdl/list/test_list.rb +1 -1
  156. data/test/wsdl/map/test_map.rb +2 -2
  157. data/test/wsdl/marshal/person_org.rb +5 -0
  158. data/test/wsdl/multiplefault.wsdl +11 -4
  159. data/test/wsdl/oneway/test_oneway.rb +1 -1
  160. data/test/wsdl/overload/test_overload.rb +1 -1
  161. data/test/wsdl/qualified/test_qualified.rb +1 -1
  162. data/test/wsdl/qualified/test_unqualified.rb +1 -1
  163. data/test/wsdl/raa/RAAService.rb +62 -57
  164. data/test/wsdl/raa/expectedClassDef.rb +100 -0
  165. data/test/wsdl/raa/expectedDriver.rb +96 -0
  166. data/test/wsdl/raa/expectedMappingRegistry.rb +121 -0
  167. data/test/wsdl/raa/test_raa.rb +54 -19
  168. data/test/wsdl/ref/expectedDriver.rb +1 -1
  169. data/test/wsdl/ref/expectedProduct.rb +101 -16
  170. data/test/wsdl/ref/test_ref.rb +2 -1
  171. data/test/wsdl/rpc/test_rpc.rb +1 -2
  172. data/test/wsdl/rpc/test_rpc_lit.rb +13 -13
  173. data/test/wsdl/simplecontent/test_simplecontent.rb +5 -5
  174. data/test/wsdl/simpletype/rpc/expectedDriver.rb +3 -2
  175. data/test/wsdl/simpletype/rpc/expectedEchoVersion.rb +2 -0
  176. data/test/wsdl/simpletype/rpc/expectedMappingRegistry.rb +10 -17
  177. data/test/wsdl/simpletype/rpc/expectedService.rb +4 -2
  178. data/test/wsdl/simpletype/test_simpletype.rb +2 -2
  179. data/test/wsdl/soap/test_soapbodyparts.rb +2 -2
  180. data/test/wsdl/soap/wsdl2ruby/expectedClassdef.rb +2 -0
  181. data/test/wsdl/soap/wsdl2ruby/expectedDriver.rb +3 -2
  182. data/test/wsdl/soap/wsdl2ruby/expectedMappingRegistry.rb +5 -9
  183. data/test/wsdl/soap/wsdl2ruby/expectedService.cgi +4 -2
  184. data/test/wsdl/soap/wsdl2ruby/expectedService.rb +4 -2
  185. data/test/wsdl/soap/wsdl2ruby/section/expectedClassdef.rb +6 -0
  186. data/test/wsdl/soap/wsdl2ruby/soapenc/test_soapenc.rb +1 -1
  187. data/test/wsdl/soaptype/test_soaptype.rb +1 -1
  188. data/test/wsdl/test_multiplefault.rb +3 -1
  189. data/test/xsd/codegen/test_classdef.rb +30 -0
  190. data/test/xsd/test_ns.rb +21 -0
  191. data/test/xsd/test_xsd.rb +5 -4
  192. data/test/xsd/xsd2ruby/expected_mysample.rb +13 -2
  193. data/test/xsd/xsd2ruby/expected_mysample_mapping_registry.rb +5 -11
  194. data/test/xsd/xsd2ruby/section.xsd +8 -0
  195. metadata +40 -8
  196. data/test/wsdl/axisArray/itemList.rb +0 -14
  197. data/test/wsdl/raa/RAA.rb +0 -120
  198. data/test/wsdl/raa/RAAServant.rb +0 -107
  199. data/test/wsdl/raa/server.rb +0 -103
@@ -42,7 +42,7 @@ class TestSSL < Test::Unit::TestCase
42
42
  assert_nil(cfg.verify_callback)
43
43
  assert_nil(cfg.timeout)
44
44
  assert_equal(OpenSSL::SSL::OP_ALL | OpenSSL::SSL::OP_NO_SSLv2, cfg.options)
45
- assert_equal("ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH", cfg.ciphers)
45
+ assert_equal("ALL:!ADH:!LOW:!EXP:!MD5:+SSLv2:@STRENGTH", cfg.ciphers)
46
46
  assert_instance_of(OpenSSL::X509::Store, cfg.cert_store)
47
47
  # dummy call to ensure sslsvr initialization finished.
48
48
  assert_raise(OpenSSL::SSL::SSLError) do
@@ -46,8 +46,8 @@ class TestStruct < Test::Unit::TestCase
46
46
  end
47
47
 
48
48
  def teardown
49
- teardown_server
50
- teardown_client
49
+ teardown_server if @server
50
+ teardown_client if @client
51
51
  end
52
52
 
53
53
  def teardown_server
@@ -41,10 +41,12 @@ class TestFile < Test::Unit::TestCase
41
41
  end
42
42
 
43
43
  def teardown
44
- @server.shutdown
45
- @t.kill
46
- @t.join
47
- @client.reset_stream
44
+ @server.shutdown if @server
45
+ if @t
46
+ @t.kill
47
+ @t.join
48
+ end
49
+ @client.reset_stream if @client
48
50
  end
49
51
 
50
52
  def test_get_file
@@ -406,7 +406,7 @@ class TestSOAP < Test::Unit::TestCase
406
406
  targets = [
407
407
  "P1Y2M3DT4H5M6S",
408
408
  "P1234Y5678M9012DT3456H7890M1234.5678S",
409
- "P0DT3456H7890M1234.5678S",
409
+ "PT3456H7890M1234.5678S",
410
410
  "P1234Y5678M9012D",
411
411
  "-P1234Y5678M9012DT3456H7890M1234.5678S",
412
412
  "P5678M9012DT3456H7890M1234.5678S",
@@ -418,9 +418,9 @@ class TestSOAP < Test::Unit::TestCase
418
418
  "P123400000000000Y",
419
419
  "-P567800000000000M",
420
420
  "+P901200000000000D",
421
- "P0DT345600000000000H",
422
- "-P0DT789000000000000M",
423
- "+P0DT123400000000000.000000000005678S",
421
+ "PT345600000000000H",
422
+ "-PT789000000000000M",
423
+ "+PT123400000000000.000000000005678S",
424
424
  "P1234YT1234.5678S",
425
425
  "-P5678MT7890M",
426
426
  "+P9012DT3456H",
@@ -45,8 +45,8 @@ class TestCookie < Test::Unit::TestCase
45
45
  end
46
46
 
47
47
  def teardown
48
- teardown_client
49
- teardown_server
48
+ teardown_client if @client
49
+ teardown_server if @server
50
50
  end
51
51
 
52
52
  def setup_server
@@ -12,11 +12,12 @@ class TestCustomNs < Test::Unit::TestCase
12
12
  xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
13
13
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
14
14
  <env:Header>
15
- <n1:headeritem xmlns:n1="my:foo"
16
- env:mustUnderstand="0">hi</n1:headeritem>
15
+ <n1:headeritem xmlns:n1="my:foo">hi</n1:headeritem>
17
16
  </env:Header>
18
17
  <env:Body>
19
- <n2:test xmlns:n2="my:foo">bi</n2:test>
18
+ <n2:test xmlns:n2="my:foo"
19
+ xmlns:n3="my:bar"
20
+ n3:baz="qux">bi</n2:test>
20
21
  </env:Body>
21
22
  </env:Envelope>
22
23
  __XML__
@@ -24,16 +25,35 @@ __XML__
24
25
  CUSTOM_NS_XML = <<__XML__.chomp
25
26
  <?xml version="1.0" encoding="utf-8" ?>
26
27
  <ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
27
- xmlns:ENV="http://schemas.xmlsoap.org/soap/envelope/"
28
28
  xmlns:myns="my:foo"
29
+ xmlns:ENV="http://schemas.xmlsoap.org/soap/envelope/"
29
30
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
30
31
  <ENV:Header>
31
- <myns:headeritem ENV:mustUnderstand="0">hi</myns:headeritem>
32
+ <myns:headeritem>hi</myns:headeritem>
32
33
  </ENV:Header>
33
34
  <ENV:Body>
34
- <myns:test>bi</myns:test>
35
+ <myns:test xmlns:bar="my:bar"
36
+ bar:baz="qux">bi</myns:test>
35
37
  </ENV:Body>
36
38
  </ENV:Envelope>
39
+ __XML__
40
+
41
+ XML_WITH_DEFAULT_NS = <<__XML__.chomp
42
+ <?xml version="1.0" encoding="utf-8" ?>
43
+ <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
44
+ xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
45
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
46
+ <env:Header>
47
+ <headeritem xmlns="my:foo">hi</headeritem>
48
+ </env:Header>
49
+ <env:Body>
50
+ <test xmlns:n1="my:bar"
51
+ xmlns:n2="my:foo"
52
+ n1:baz="qux"
53
+ n2:quxx="quxxx"
54
+ xmlns="my:foo">bi</test>
55
+ </env:Body>
56
+ </env:Envelope>
37
57
  __XML__
38
58
 
39
59
  def test_custom_ns
@@ -43,20 +63,42 @@ __XML__
43
63
  header.add("test", hi)
44
64
  body = SOAP::SOAPBody.new()
45
65
  bi = SOAP::SOAPElement.new(XSD::QName.new("my:foo", "bodyitem"), 'bi')
66
+ bi.extraattr[XSD::QName.new('my:bar', 'baz')] = 'qux'
46
67
  body.add("test", bi)
47
68
  env = SOAP::SOAPEnvelope.new(header, body)
48
69
  # normal
49
70
  opt = {}
50
71
  result = SOAP::Processor.marshal(env, opt)
51
72
  assert_equal(NORMAL_XML, result)
52
- # ns customize
73
+ # Envelope ns customize
74
+ env = SOAP::SOAPEnvelope.new(header, body)
53
75
  ns = XSD::NS.new
54
76
  ns.assign(SOAP::EnvelopeNamespace, 'ENV')
55
77
  ns.assign('my:foo', 'myns')
56
- opt = { :default_ns => ns }
78
+ # tag customize
79
+ tag = XSD::NS.new
80
+ tag.assign('my:bar', 'bar')
81
+ opt = { :default_ns => ns, :default_ns_tag => tag }
57
82
  result = SOAP::Processor.marshal(env, opt)
58
83
  assert_equal(CUSTOM_NS_XML, result)
59
84
  end
85
+
86
+ def test_default_namespace
87
+ # create test env
88
+ header = SOAP::SOAPHeader.new()
89
+ hi = SOAP::SOAPElement.new(XSD::QName.new("my:foo", "headeritem"), 'hi')
90
+ header.add("test", hi)
91
+ body = SOAP::SOAPBody.new()
92
+ bi = SOAP::SOAPElement.new(XSD::QName.new("my:foo", "bodyitem"), 'bi')
93
+ bi.extraattr[XSD::QName.new('my:bar', 'baz')] = 'qux'
94
+ bi.extraattr[XSD::QName.new('my:foo', 'quxx')] = 'quxxx'
95
+ body.add("test", bi)
96
+ env = SOAP::SOAPEnvelope.new(header, body)
97
+ # normal
98
+ opt = {:use_default_namespace => true}
99
+ result = SOAP::Processor.marshal(env, opt)
100
+ assert_equal(XML_WITH_DEFAULT_NS, result)
101
+ end
60
102
  end
61
103
 
62
104
 
@@ -67,10 +67,12 @@ class TestMap < Test::Unit::TestCase
67
67
  end
68
68
 
69
69
  def teardown
70
- @server.shutdown
71
- @t.kill
72
- @t.join
73
- @client.reset_stream
70
+ @server.shutdown if @server
71
+ if @t
72
+ @t.kill
73
+ @t.join
74
+ end
75
+ @client.reset_stream if @client
74
76
  end
75
77
 
76
78
  def test_map
@@ -48,10 +48,12 @@ class TestEmpty < Test::Unit::TestCase
48
48
  end
49
49
 
50
50
  def teardown
51
- @server.shutdown
52
- @t.kill
53
- @t.join
54
- @client.reset_stream
51
+ @server.shutdown if @server
52
+ if @t
53
+ @t.kill
54
+ @t.join
55
+ end
56
+ @client.reset_stream if @client
55
57
  end
56
58
 
57
59
  EMPTY_XML = %q[<?xml version="1.0" encoding="utf-8" ?>
@@ -23,8 +23,8 @@ class TestEnvelopeNamespace < Test::Unit::TestCase
23
23
  end
24
24
 
25
25
  def teardown
26
- teardown_client
27
- teardown_server
26
+ teardown_client if @client
27
+ teardown_server if @server
28
28
  end
29
29
 
30
30
  def setup_server
@@ -14,10 +14,9 @@ class TestExtrAttr < Test::Unit::TestCase
14
14
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
15
15
  <env:Header Id="extraattr">
16
16
  <n1:headeritem xmlns:n1="my:foo"
17
- env:mustUnderstand="0"
18
17
  Id="extraattr"></n1:headeritem>
19
18
  </env:Header>
20
- <env:Body Id="extraattr">
19
+ <env:Body Id="extraattr&lt;&gt;">
21
20
  <n2:test xmlns:n2="my:foo"
22
21
  Id="extraattr"></n2:test>
23
22
  </env:Body>
@@ -30,13 +29,13 @@ class TestExtrAttr < Test::Unit::TestCase
30
29
  hi.extraattr["Id"] = "extraattr"
31
30
  header.add("test", hi)
32
31
  body = SOAP::SOAPBody.new()
33
- body.extraattr["Id"] = "extraattr"
32
+ body.extraattr["Id"] = "extraattr<>"
34
33
  bi = SOAP::SOAPElement.new(XSD::QName.new("my:foo", "bodyitem"))
35
34
  bi.extraattr["Id"] = "extraattr"
36
35
  body.add("test", bi)
37
36
  env = SOAP::SOAPEnvelope.new(header, body)
38
37
  env.extraattr["Id"] = "extraattr"
39
- g = SOAP::SOAPGenerator.new()
38
+ g = SOAP::Generator.new()
40
39
  xml = g.generate(env)
41
40
  assert_equal(HEADER_XML, xml)
42
41
  #
@@ -44,9 +43,9 @@ class TestExtrAttr < Test::Unit::TestCase
44
43
  env = parser.parse(xml)
45
44
  header = env.header
46
45
  body = env.body
47
- assert_equal("extraattr", env.extraattr["Id"])
48
- assert_equal("extraattr", header.extraattr["Id"])
49
- assert_equal("extraattr", body.extraattr["Id"])
46
+ assert_equal("extraattr", env.extraattr[XSD::QName.new(nil, "Id")])
47
+ assert_equal("extraattr", header.extraattr[XSD::QName.new(nil, "Id")])
48
+ assert_equal("extraattr<>", body.extraattr[XSD::QName.new(nil, "Id")])
50
49
  assert_equal("extraattr", header["headeritem"].element.extraattr[XSD::QName.new(nil, "Id")])
51
50
  end
52
51
  end
@@ -0,0 +1,27 @@
1
+ require 'test/unit'
2
+ require 'soap/processor'
3
+
4
+
5
+ module SOAP
6
+
7
+
8
+ class TestGenerator < Test::Unit::TestCase
9
+ # based on #417, reported by Kou.
10
+ def test_encode
11
+ str = "\343\201\217<"
12
+ g = SOAP::Generator.new
13
+ g.generate(SOAPElement.new('foo'))
14
+ assert_equal("&lt;", g.encode_string(str)[-4, 4])
15
+ #
16
+ begin
17
+ kc_backup = $KCODE.dup
18
+ $KCODE = 'EUC-JP'
19
+ assert_equal("&lt;", g.encode_string(str)[-4, 4])
20
+ ensure
21
+ $KCODE = kc_backup
22
+ end
23
+ end
24
+ end
25
+
26
+
27
+ end
@@ -68,6 +68,16 @@ __XML__
68
68
  assert_equal(SOAP::Mapping::Object, obj.class)
69
69
  end
70
70
 
71
+ def test_nestedexception
72
+ ele = Thread.new {}
73
+ obj = [ele]
74
+ begin
75
+ SOAP::Marshal.dump(obj)
76
+ rescue ::SOAP::Mapping::MappingError => e
77
+ assert(e.backtrace.find { |line| /\[NESTED\]/ =~ line })
78
+ end
79
+ end
80
+
71
81
  def test_date
72
82
  targets = [
73
83
  ["2002-12-31",
@@ -0,0 +1,56 @@
1
+ require 'test/unit'
2
+ require 'soap/soap'
3
+
4
+
5
+ module SOAP
6
+
7
+
8
+ class TestNestedException < Test::Unit::TestCase
9
+ class MyError < SOAP::Error; end
10
+
11
+ def foo
12
+ begin
13
+ bar
14
+ rescue
15
+ raise MyError.new("foo", $!)
16
+ end
17
+ end
18
+
19
+ def bar
20
+ begin
21
+ baz
22
+ rescue
23
+ raise MyError.new("bar", $!)
24
+ end
25
+ end
26
+
27
+ def baz
28
+ raise MyError.new("baz", $!)
29
+ end
30
+
31
+ def test_nestedexception
32
+ begin
33
+ foo
34
+ rescue MyError => e
35
+ trace = e.backtrace.find_all { |line| /test\/unit/ !~ line && /\d\z/ !~ line }
36
+ trace = trace.map { |line| line.sub(/\A[^:]*/, '') }
37
+ assert_equal(TOBE, trace)
38
+ end
39
+ end
40
+
41
+ TOBE = [
42
+ ":15:in `foo'",
43
+ ":33:in `test_nestedexception'",
44
+ ":23:in `bar': bar (SOAP::TestNestedException::MyError) [NESTED]",
45
+ ":13:in `foo'",
46
+ ":33:in `test_nestedexception'",
47
+ ":28:in `baz': baz (SOAP::TestNestedException::MyError) [NESTED]",
48
+ ":21:in `bar'",
49
+ ":13:in `foo'",
50
+ ":33:in `test_nestedexception'",
51
+ ]
52
+
53
+ end
54
+
55
+
56
+ end
@@ -33,10 +33,12 @@ class TestNil < Test::Unit::TestCase
33
33
  end
34
34
 
35
35
  def teardown
36
- @server.shutdown
37
- @t.kill
38
- @t.join
39
- @client.reset_stream
36
+ @server.shutdown if @server
37
+ if @t
38
+ @t.kill
39
+ @t.join
40
+ end
41
+ @client.reset_stream if @client
40
42
  end
41
43
 
42
44
  require 'rexml/document'
@@ -33,10 +33,12 @@ class TestNoIndent < Test::Unit::TestCase
33
33
  end
34
34
 
35
35
  def teardown
36
- @server.shutdown
37
- @t.kill
38
- @t.join
39
- @client.reset_stream
36
+ @server.shutdown if @server
37
+ if @t
38
+ @t.kill
39
+ @t.join
40
+ end
41
+ @client.reset_stream if @client
40
42
  end
41
43
 
42
44
  INDENT_XML =
@@ -46,8 +46,8 @@ class TestResponseAsXml < Test::Unit::TestCase
46
46
  end
47
47
 
48
48
  def teardown
49
- teardown_server
50
- teardown_client
49
+ teardown_server if @server
50
+ teardown_client if @client
51
51
  end
52
52
 
53
53
  def teardown_server
@@ -15,7 +15,7 @@ class TestStreamHandler < Test::Unit::TestCase
15
15
 
16
16
  def setup
17
17
  @logger = Logger.new(STDERR)
18
- @logger.level = Logger::Severity::ERROR
18
+ @logger.level = Logger::Severity::FATAL
19
19
  @url = "http://localhost:#{Port}/"
20
20
  @proxyurl = "http://localhost:#{ProxyPort}/"
21
21
  @server = @proxyserver = @client = nil
@@ -25,9 +25,9 @@ class TestStreamHandler < Test::Unit::TestCase
25
25
  end
26
26
 
27
27
  def teardown
28
- teardown_client
28
+ teardown_client if @client
29
29
  teardown_proxyserver if @proxyserver
30
- teardown_server
30
+ teardown_server if @server
31
31
  end
32
32
 
33
33
  def setup_server
@@ -45,6 +45,7 @@ class TestStreamHandler < Test::Unit::TestCase
45
45
  htpasswd = File.join(File.dirname(__FILE__), 'htpasswd')
46
46
  htpasswd_userdb = WEBrick::HTTPAuth::Htpasswd.new(htpasswd)
47
47
  @basic_auth = WEBrick::HTTPAuth::BasicAuth.new(
48
+ :Logger => @logger,
48
49
  :Realm => 'auth',
49
50
  :UserDB => htpasswd_userdb
50
51
  )
@@ -163,6 +164,8 @@ __EOX__
163
164
  @client.endpoint_url = @url + 'basic_auth'
164
165
  str = ""
165
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)
166
169
  @client.options["protocol.http.basic_auth"] << [@url, "admin", "admin"]
167
170
  assert_nil(@client.do_server_proc_basic_auth)
168
171
  end