diff options
author | Jamis Buck <jamis@37signals.com> | 2006-03-18 05:07:27 +0000 |
---|---|---|
committer | Jamis Buck <jamis@37signals.com> | 2006-03-18 05:07:27 +0000 |
commit | 459559a8bced28f25888802e40c7182392ea94cc (patch) | |
tree | 729a49dc50c7461a31368a164eabd5bff0a77dd2 /actionpack/test/controller | |
parent | 93f8bd15a11d5292885d585669a61a7364d1a1b0 (diff) | |
download | rails-459559a8bced28f25888802e40c7182392ea94cc.tar.gz rails-459559a8bced28f25888802e40c7182392ea94cc.tar.bz2 rails-459559a8bced28f25888802e40c7182392ea94cc.zip |
XML-formatted requests are typecast according to "type" attributes for :xml_simple
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3915 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/test/controller')
-rw-r--r-- | actionpack/test/controller/webservice_test.rb | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/actionpack/test/controller/webservice_test.rb b/actionpack/test/controller/webservice_test.rb index 90691e9e9c..d49f6e7941 100644 --- a/actionpack/test/controller/webservice_test.rb +++ b/actionpack/test/controller/webservice_test.rb @@ -106,14 +106,66 @@ class WebServiceTest < Test::Unit::TestCase ActionController::Base.param_parsers[Mime::XML] = :xml_simple process('POST', 'application/xml', "<first-key>\n<sub-key>...</sub-key>\n</first-key>", true) assert_equal 'action, controller, first_key(sub_key), full', @controller.response.body + assert_equal "...", @controller.params[:first_key][:sub_key] + end + + def test_typecast_as_xml + ActionController::Base.param_parsers[Mime::XML] = :xml_simple + process('POST', 'application/xml', <<-XML) + <data> + <a type="integer">15</a> + <b type="boolean">false</b> + <c type="boolean">true</c> + <d type="date">2005-03-17</d> + <e type="datetime">2005-03-17T21:41:07Z</e> + <f>unparsed</f> + <g type="integer">1</g> + <g>hello</g> + <g type="date">1974-07-25</g> + </data> + XML + params = @controller.params + assert_equal 15, params[:data][:a] + assert_equal false, params[:data][:b] + assert_equal true, params[:data][:c] + assert_equal Date.new(2005,3,17), params[:data][:d] + assert_equal Time.utc(2005,3,17,21,41,7), params[:data][:e] + assert_equal "unparsed", params[:data][:f] + assert_equal [1, "hello", Date.new(1974,7,25)], params[:data][:g] end def test_dasherized_keys_as_yaml ActionController::Base.param_parsers[Mime::YAML] = :yaml process('POST', 'application/x-yaml', "---\nfirst-key:\n sub-key: ...\n", true) assert_equal 'action, controller, first_key(sub_key), full', @controller.response.body + assert_equal "...", @controller.params[:first_key][:sub_key] + end + + def test_typecast_as_yaml + ActionController::Base.param_parsers[Mime::YAML] = :yaml + process('POST', 'application/x-yaml', <<-YAML) + --- + data: + a: 15 + b: false + c: true + d: 2005-03-17 + e: 2005-03-17T21:41:07Z + f: unparsed + g: + - 1 + - hello + - 1974-07-25 + YAML + params = @controller.params + assert_equal 15, params[:data][:a] + assert_equal false, params[:data][:b] + assert_equal true, params[:data][:c] + assert_equal Date.new(2005,3,17), params[:data][:d] + assert_equal Time.utc(2005,3,17,21,41,7), params[:data][:e] + assert_equal "unparsed", params[:data][:f] + assert_equal [1, "hello", Date.new(1974,7,25)], params[:data][:g] end - private |