aboutsummaryrefslogtreecommitdiffstats
path: root/actionservice/test/client_xmlrpc_test.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-02-18 10:35:25 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-02-18 10:35:25 +0000
commite7a29380292902eae4799b2658507b3cfffb9cec (patch)
tree99a7cd3c7d720ef73f998c2756be1fef77ff0ee1 /actionservice/test/client_xmlrpc_test.rb
parente39bf105941133d3d6699c52c18dbd3b9aa0bf5c (diff)
downloadrails-e7a29380292902eae4799b2658507b3cfffb9cec.tar.gz
rails-e7a29380292902eae4799b2658507b3cfffb9cec.tar.bz2
rails-e7a29380292902eae4799b2658507b3cfffb9cec.zip
Added Action Service to the repository
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@658 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionservice/test/client_xmlrpc_test.rb')
-rw-r--r--actionservice/test/client_xmlrpc_test.rb86
1 files changed, 86 insertions, 0 deletions
diff --git a/actionservice/test/client_xmlrpc_test.rb b/actionservice/test/client_xmlrpc_test.rb
new file mode 100644
index 0000000000..9c6abc3520
--- /dev/null
+++ b/actionservice/test/client_xmlrpc_test.rb
@@ -0,0 +1,86 @@
+require File.dirname(__FILE__) + '/abstract_client'
+
+
+module ClientXmlRpcTest
+ PORT = 8999
+
+ class XmlRpcClientLet < ClientTest::AbstractClientLet
+ def do_POST(req, res)
+ test_request = ActionController::TestRequest.new
+ test_request.request_parameters['action'] = req.path.gsub(/^\//, '').split(/\//)[1]
+ test_request.env['REQUEST_METHOD'] = "POST"
+ test_request.env['HTTP_CONTENTTYPE'] = 'text/xml'
+ test_request.env['RAW_POST_DATA'] = req.body
+ protocol_request = @controller.protocol_request(test_request)
+ response = @controller.dispatch_request(protocol_request)
+ res.header['content-type'] = 'text/xml'
+ res.body = response.raw_body
+ rescue Exception => e
+ $stderr.puts e.message
+ $stderr.puts e.backtrace.join("\n")
+ end
+ end
+
+ class ClientContainer < ActionController::Base
+ client_api :client, :xmlrpc, "http://localhost:#{PORT}/client/api", :api => ClientTest::API
+
+ def get_client
+ client
+ end
+ end
+
+ class XmlRpcServer < ClientTest::AbstractServer
+ def create_clientlet(controller)
+ XmlRpcClientLet.new(controller)
+ end
+
+ def server_port
+ PORT
+ end
+ end
+end
+
+class TC_ClientXmlRpc < Test::Unit::TestCase
+ include ClientTest
+ include ClientXmlRpcTest
+
+ def setup
+ @server = XmlRpcServer.instance
+ @container = @server.container
+ @client = ActionService::Client::XmlRpc.new(API, "http://localhost:#{@server.server_port}/client/api")
+ end
+
+ def test_void
+ assert(@container.value_void.nil?)
+ @client.void
+ assert(!@container.value_void.nil?)
+ end
+
+ def test_normal
+ assert(@container.value_normal.nil?)
+ assert_equal(5, @client.normal(5, 6))
+ assert_equal([5, 6], @container.value_normal)
+ end
+
+ def test_array_return
+ assert(@container.value_array_return.nil?)
+ new_person = Person.new
+ new_person.firstnames = ["one", "two"]
+ new_person.lastname = "last"
+ assert_equal([new_person], @client.array_return)
+ assert_equal([new_person], @container.value_array_return)
+ end
+
+ def test_struct_pass
+ assert(@container.value_struct_pass.nil?)
+ new_person = Person.new
+ new_person.firstnames = ["one", "two"]
+ new_person.lastname = "last"
+ assert_equal(true, @client.struct_pass([new_person]))
+ assert_equal([[new_person]], @container.value_struct_pass)
+ end
+
+ def test_client_container
+ assert_equal(50, ClientContainer.new.get_client.client_container)
+ end
+end