summaryrefslogtreecommitdiff
path: root/ruby_1_8_6/test/soap/fault/test_customfault.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_8_6/test/soap/fault/test_customfault.rb')
-rw-r--r--ruby_1_8_6/test/soap/fault/test_customfault.rb58
1 files changed, 58 insertions, 0 deletions
diff --git a/ruby_1_8_6/test/soap/fault/test_customfault.rb b/ruby_1_8_6/test/soap/fault/test_customfault.rb
new file mode 100644
index 0000000000..2f7bc2be6e
--- /dev/null
+++ b/ruby_1_8_6/test/soap/fault/test_customfault.rb
@@ -0,0 +1,58 @@
+require 'test/unit'
+require 'soap/rpc/driver'
+require 'soap/rpc/standaloneServer'
+
+
+module SOAP
+module Fault
+
+
+class TestCustomFault < Test::Unit::TestCase
+ Port = 17171
+
+ class CustomFaultServer < SOAP::RPC::StandaloneServer
+ def on_init
+ add_method(self, 'fault', 'msg')
+ end
+
+ def fault(msg)
+ SOAPFault.new(SOAPString.new("mycustom"),
+ SOAPString.new("error: #{msg}"),
+ SOAPString.new(self.class.name))
+ end
+ end
+
+ def setup
+ @server = CustomFaultServer.new('customfault', 'urn:customfault', '0.0.0.0', Port)
+ @server.level = Logger::Severity::ERROR
+ @t = Thread.new {
+ Thread.current.abort_on_exception = true
+ @server.start
+ }
+ @endpoint = "http://localhost:#{Port}/"
+ @client = SOAP::RPC::Driver.new(@endpoint, 'urn:customfault')
+ @client.wiredump_dev = STDERR if $DEBUG
+ @client.add_method("fault", "msg")
+ end
+
+ def teardown
+ @server.shutdown
+ @t.kill
+ @t.join
+ @client.reset_stream
+ end
+
+ def test_custom_fault
+ begin
+ @client.fault("message")
+ assert(false, 'exception not raised')
+ rescue SOAP::FaultError => e
+ assert(true, 'exception raised')
+ assert_equal('error: message', e.message)
+ end
+ end
+end
+
+
+end
+end