1 require File.dirname(__FILE__) + '/abstract_client'
7 class SoapClientLet < ClientTest::AbstractClientLet
9 test_request = ActionController::TestRequest.new
10 test_request.request_parameters['action'] = req.path.gsub(/^\//, '').split(/\//)[1]
11 test_request.env['REQUEST_METHOD'] = "POST"
12 test_request.env['HTTP_CONTENTTYPE'] = 'text/xml'
13 test_request.env['HTTP_SOAPACTION'] = req.header['soapaction'][0]
14 test_request.env['RAW_POST_DATA'] = req.body
15 response = ActionController::TestResponse.new
16 @controller.process(test_request, response)
17 res.header['content-type'] = 'text/xml'
18 res.body = response.body
20 $stderr.puts e.message
21 $stderr.puts e.backtrace.join("\n")
25 class ClientContainer < ActionController::Base
26 web_client_api :client, :soap, "http://localhost:#{PORT}/client/api", :api => ClientTest::API
27 web_client_api :invalid, :null, "", :api => true
38 class SoapServer < ClientTest::AbstractServer
39 def create_clientlet(controller)
40 SoapClientLet.new(controller)
49 class TC_ClientSoap < Test::Unit::TestCase
51 include ClientSoapTest
56 @server = SoapServer.instance
57 @container = @server.container
58 @client = ActionWebService::Client::Soap.new(API, "http://localhost:#{@server.server_port}/client/api")
62 assert(@container.value_void.nil?)
64 assert(!@container.value_void.nil?)
68 assert(@container.value_normal.nil?)
69 assert_equal(5, @client.normal(5, 6))
70 assert_equal([5, 6], @container.value_normal)
71 assert_equal(5, @client.normal("7", "8"))
72 assert_equal([7, 8], @container.value_normal)
73 assert_equal(5, @client.normal(true, false))
77 assert(@container.value_array_return.nil?)
78 new_person = Person.new
79 new_person.firstnames = ["one", "two"]
80 new_person.lastname = "last"
81 assert_equal([new_person], @client.array_return)
82 assert_equal([new_person], @container.value_array_return)
86 assert(@container.value_struct_pass.nil?)
87 new_person = Person.new
88 new_person.firstnames = ["one", "two"]
89 new_person.lastname = "last"
90 assert_equal(true, @client.struct_pass([new_person]))
91 assert_equal([[new_person]], @container.value_struct_pass)
94 def test_nil_struct_return
95 assert_nil @client.nil_struct_return
99 outer = @client.inner_nil
100 assert_equal 'outer', outer.name
101 assert_nil outer.inner
104 def test_client_container
105 assert_equal(50, ClientContainer.new.get_client.client_container)
106 assert(ClientContainer.new.get_invalid.nil?)
109 def test_named_parameters
110 assert(@container.value_named_parameters.nil?)
111 assert(@client.named_parameters("key", 5).nil?)
112 assert_equal(["key", 5], @container.value_named_parameters)
115 def test_capitalized_method_name
116 @container.value_normal = nil
117 assert_equal(5, @client.Normal(5, 6))
118 assert_equal([5, 6], @container.value_normal)
119 @container.value_normal = nil
122 def test_model_return
123 user = @client.user_return
124 assert_equal 1, user.id
125 assert_equal 'Kent', user.name
127 assert_kind_of Date, user.created_on
128 assert_equal Date.today, user.created_on
129 assert_equal BigDecimal('12.2'), user.balance
133 with_model = @client.with_model_return
134 assert_equal 'Kent', with_model.user.name
135 assert_equal 2, with_model.users.size
136 with_model.users.each do |user|
137 assert_kind_of User, user
141 def test_scoped_model_return
142 scoped_model = @client.scoped_model_return
143 assert_kind_of Accounting::User, scoped_model
144 assert_equal 'Kent', scoped_model.name
147 def test_multi_dim_return
148 md_struct = @client.multi_dim_return
149 assert_kind_of Array, md_struct.pref
150 assert_equal 2, md_struct.pref.size
151 assert_kind_of Array, md_struct.pref[0]