soap4r 1.5.7 → 1.5.8

Sign up to get free protection for your applications and to get access to all the features.
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