Checkout of Instiki Trunk 1/21/2007.
This commit is contained in:
commit
69b62b6f33
1138 changed files with 139586 additions and 0 deletions
100
vendor/rails/actionwebservice/test/test_invoke_test.rb
vendored
Normal file
100
vendor/rails/actionwebservice/test/test_invoke_test.rb
vendored
Normal file
|
@ -0,0 +1,100 @@
|
|||
require File.dirname(__FILE__) + '/abstract_unit'
|
||||
require 'action_web_service/test_invoke'
|
||||
|
||||
class TestInvokeAPI < ActionWebService::API::Base
|
||||
api_method :add, :expects => [:int, :int], :returns => [:int]
|
||||
end
|
||||
|
||||
class TestInvokeService < ActionWebService::Base
|
||||
web_service_api TestInvokeAPI
|
||||
|
||||
attr :invoked
|
||||
|
||||
def add(a, b)
|
||||
@invoked = true
|
||||
a + b
|
||||
end
|
||||
end
|
||||
|
||||
class TestController < ActionController::Base
|
||||
def rescue_action(e); raise e; end
|
||||
end
|
||||
|
||||
class TestInvokeDirectController < TestController
|
||||
web_service_api TestInvokeAPI
|
||||
|
||||
attr :invoked
|
||||
|
||||
def add
|
||||
@invoked = true
|
||||
@method_params[0] + @method_params[1]
|
||||
end
|
||||
end
|
||||
|
||||
class TestInvokeDelegatedController < TestController
|
||||
web_service_dispatching_mode :delegated
|
||||
web_service :service, TestInvokeService.new
|
||||
end
|
||||
|
||||
class TestInvokeLayeredController < TestController
|
||||
web_service_dispatching_mode :layered
|
||||
web_service(:one) { @service_one ||= TestInvokeService.new }
|
||||
web_service(:two) { @service_two ||= TestInvokeService.new }
|
||||
end
|
||||
|
||||
class TestInvokeTest < Test::Unit::TestCase
|
||||
def setup
|
||||
@request = ActionController::TestRequest.new
|
||||
@response = ActionController::TestResponse.new
|
||||
end
|
||||
|
||||
def test_direct_add
|
||||
@controller = TestInvokeDirectController.new
|
||||
assert_equal nil, @controller.invoked
|
||||
result = invoke :add, 25, 25
|
||||
assert_equal 50, result
|
||||
assert_equal true, @controller.invoked
|
||||
end
|
||||
|
||||
def test_delegated_add
|
||||
@controller = TestInvokeDelegatedController.new
|
||||
assert_equal nil, @controller.web_service_object(:service).invoked
|
||||
result = invoke_delegated :service, :add, 100, 50
|
||||
assert_equal 150, result
|
||||
assert_equal true, @controller.web_service_object(:service).invoked
|
||||
end
|
||||
|
||||
def test_layered_add
|
||||
[:soap, :xmlrpc].each do |protocol|
|
||||
@protocol = protocol
|
||||
[:one, :two].each do |service|
|
||||
@controller = TestInvokeLayeredController.new
|
||||
assert_equal nil, @controller.web_service_object(service).invoked
|
||||
result = invoke_layered service, :add, 200, -50
|
||||
assert_equal 150, result
|
||||
assert_equal true, @controller.web_service_object(service).invoked
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_layered_fail_with_wrong_number_of_arguments
|
||||
[:soap, :xmlrpc].each do |protocol|
|
||||
@protocol = protocol
|
||||
[:one, :two].each do |service|
|
||||
@controller = TestInvokeLayeredController.new
|
||||
assert_raise(ArgumentError) { invoke_layered service, :add, 1 }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_delegated_fail_with_wrong_number_of_arguments
|
||||
@controller = TestInvokeDelegatedController.new
|
||||
assert_raise(ArgumentError) { invoke_delegated :service, :add, 1 }
|
||||
end
|
||||
|
||||
def test_direct_fail_with_wrong_number_of_arguments
|
||||
@controller = TestInvokeDirectController.new
|
||||
assert_raise(ArgumentError) { invoke :add, 1 }
|
||||
end
|
||||
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue