1 require File.dirname(__FILE__) + '/abstract_client'
4 module ClientXmlRpcTest
7 class XmlRpcClientLet < 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_CONTENT_TYPE'] = 'text/xml'
13 test_request.env['RAW_POST_DATA'] = req.body
14 response = ActionController::TestResponse.new
15 @controller.process(test_request, response)
16 res.header['content-type'] = 'text/xml'
17 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, :xmlrpc, "http://localhost:#{PORT}/client/api", :api => ClientTest::API
33 class XmlRpcServer < ClientTest::AbstractServer
34 def create_clientlet(controller)
35 XmlRpcClientLet.new(controller)
44 class TC_ClientXmlRpc < Test::Unit::TestCase
46 include ClientXmlRpcTest
51 @server = XmlRpcServer.instance
52 @container = @server.container
53 @client = ActionWebService::Client::XmlRpc.new(API, "http://localhost:#{@server.server_port}/client/api")
57 assert(@container.value_void.nil?)
59 assert(!@container.value_void.nil?)
63 assert(@container.value_normal.nil?)
64 assert_equal(5, @client.normal(5, 6))
65 assert_equal([5, 6], @container.value_normal)
66 assert_equal(5, @client.normal("7", "8"))
67 assert_equal([7, 8], @container.value_normal)
68 assert_equal(5, @client.normal(true, false))
72 assert(@container.value_array_return.nil?)
73 new_person = Person.new
74 new_person.firstnames = ["one", "two"]
75 new_person.lastname = "last"
76 assert_equal([new_person], @client.array_return)
77 assert_equal([new_person], @container.value_array_return)
81 assert(@container.value_struct_pass.nil?)
82 new_person = Person.new
83 new_person.firstnames = ["one", "two"]
84 new_person.lastname = "last"
85 assert_equal(true, @client.struct_pass([new_person]))
86 assert_equal([[new_person]], @container.value_struct_pass)
89 def test_nil_struct_return
90 assert_equal false, @client.nil_struct_return
94 outer = @client.inner_nil
95 assert_equal 'outer', outer.name
96 assert_nil outer.inner
99 def test_client_container
100 assert_equal(50, ClientContainer.new.get_client.client_container)
103 def test_named_parameters
104 assert(@container.value_named_parameters.nil?)
105 assert_equal(false, @client.named_parameters("xxx", 7))
106 assert_equal(["xxx", 7], @container.value_named_parameters)
110 assert_raises(ActionWebService::Client::ClientError) do
111 assert(@client.thrower)
115 def test_invalid_signature
116 assert_raises(ArgumentError) do
121 def test_model_return
122 user = @client.user_return
123 assert_equal 1, user.id
124 assert_equal 'Kent', user.name
126 assert_kind_of Time, user.created_on
127 assert_equal Time.utc(Time.now.year, Time.now.month, Time.now.day), user.created_on
131 with_model = @client.with_model_return
132 assert_equal 'Kent', with_model.user.name
133 assert_equal 2, with_model.users.size
134 with_model.users.each do |user|
135 assert_kind_of User, user
139 def test_scoped_model_return
140 scoped_model = @client.scoped_model_return
141 assert_kind_of Accounting::User, scoped_model
142 assert_equal 'Kent', scoped_model.name
145 def test_multi_dim_return
146 md_struct = @client.multi_dim_return
147 assert_kind_of Array, md_struct.pref
148 assert_equal 2, md_struct.pref.size
149 assert_kind_of Array, md_struct.pref[0]