Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

root/trunk/test/wsdl/fault/test_fault.rb

Revision 2006, 3.6 kB (checked in by nahi, 1 year ago)
  • update tests for the previous change ('in' -> :in)
Line 
1 require 'test/unit'
2 require 'wsdl/soap/wsdl2ruby'
3 require 'soap/wsdlDriver'
4 require File.join(File.dirname(File.expand_path(__FILE__)), '..', '..', 'testutil.rb')
5
6
7 module WSDL; module Fault
8
9
10 class TestFault < Test::Unit::TestCase
11   DIR = File.dirname(File.expand_path(__FILE__))
12   Port = 17171
13
14   def setup
15     setup_classdef
16     setup_server
17     @client = nil
18   end
19
20   def teardown
21     teardown_server if @server
22     unless $DEBUG
23       File.unlink(pathname('Add.rb'))
24       File.unlink(pathname('AddMappingRegistry.rb'))
25       File.unlink(pathname('AddServant.rb'))
26       File.unlink(pathname('AddService.rb'))
27     end
28     @client.reset_stream if @client
29   end
30
31   def setup_server
32     AddPortType.class_eval do
33       define_method(:add) do |request|
34         @sum ||= 0
35         if (request.value > 100)
36         fault = AddFault.new("Value #{request.value} is too large", "Critical")
37           raise fault
38         end
39         @sum += request.value
40         return AddResponse.new(@sum)
41       end
42     end
43     @server = AddPortTypeApp.new('app', nil, '0.0.0.0', Port)
44     @server.level = Logger::Severity::ERROR
45     @server_thread = TestUtil.start_server_thread(@server)
46   end
47
48   def setup_classdef
49     gen = WSDL::SOAP::WSDL2Ruby.new
50     gen.location = pathname("fault.wsdl")
51     gen.basedir = DIR
52     gen.logger.level = Logger::FATAL
53     gen.opt['module_path'] = self.class.to_s.sub(/::[^:]+$/, '')
54     gen.opt['classdef'] = nil
55     gen.opt['mapping_registry'] = nil
56     gen.opt['servant_skelton'] = nil
57     gen.opt['standalone_server_stub'] = nil
58     gen.opt['force'] = true
59     TestUtil.silent do
60       gen.run
61     end
62     TestUtil.require(DIR, 'Add.rb', 'AddMappingRegistry.rb', 'AddServant.rb', 'AddService.rb')
63   end
64
65   def teardown_server
66     @server.shutdown
67     @server_thread.kill
68     @server_thread.join
69   end
70
71   def pathname(filename)
72     File.join(DIR, filename)
73   end
74
75   def test_driver
76     @client = ::SOAP::RPC::Driver.new("http://localhost:#{Port}/")
77     @client.mapping_registry = AddMappingRegistry::EncodedRegistry
78     @client.literal_mapping_registry = AddMappingRegistry::LiteralRegistry
79     @client.add_document_operation(
80       "Add",
81       "add",
82       [ [:in, "request", ["::SOAP::SOAPElement", "http://fault.test/Faulttest", "Add"]],
83         [:out, "response", ["::SOAP::SOAPElement", "http://fault.test/Faulttest", "AddResponse"]] ],
84       { :request_style =>  :document, :request_use =>  :literal,
85         :response_style => :document, :response_use => :literal,
86         :faults => {"AddFault"=>{:namespace=>nil, :name=>"AddFault", :use=>"literal", :encodingstyle=>"document", :ns=>"http://fault.test/Faulttest"}} }
87     )
88     @client.wiredump_dev = STDOUT if $DEBUG
89     do_test(@client)
90   end
91
92   def test_wsdl
93     wsdl = File.join(DIR, 'fault.wsdl')
94     @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
95     @client.endpoint_url = "http://localhost:#{Port}/"
96     @client.mapping_registry = AddMappingRegistry::EncodedRegistry
97     @client.literal_mapping_registry = AddMappingRegistry::LiteralRegistry
98     @client.wiredump_dev = STDOUT if $DEBUG
99     do_test(@client)
100   end
101
102   def do_test(client)
103     assert_equal(100, client.add(Add.new(100)).sum)
104     assert_equal(100, client.add(Add.new(0)).sum)
105     assert_equal(150, client.add(Add.new(50)).sum)
106     begin
107       client.add(Add.new(101))
108       assert(false)
109     rescue Exception => e
110       assert_equal(::SOAP::FaultError, e.class)
111       assert_equal("WSDL::Fault::AddFault", e.faultstring.data)
112       assert_equal("Value 101 is too large", e.detail.addFault.reason)
113       assert_equal("Critical", e.detail.addFault.severity)
114     end
115   end
116 end
117
118
119 end; end
Note: See TracBrowser for help on using the browser.