invoke / invoke_delegated / invoke_layered check for correct number of args (closes #4610) [jerrett@bravenet.com]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4173 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2006-04-06 02:52:01 +00:00
parent a86e594997
commit f2790d0390
2 changed files with 22 additions and 0 deletions

@ -52,6 +52,7 @@ def encode_rpc_call(service_name, api_method_name, *args)
end
protocol.register_api(api)
method = api.api_methods[api_method_name.to_sym]
raise ArgumentError, "wrong number of arguments for rpc call (#{args.length} for #{method.expects.length})" unless args.length == method.expects.length
protocol.encode_request(public_method_name(service_name, api_method_name), args.dup, method.expects)
end

@ -76,4 +76,25 @@ def test_layered_add
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