1 require 'abstract_unit'
3 class XmlParamsParsingTest
< ActionController
::IntegrationTest
4 class TestController
< ActionController
::Base
6 attr_accessor
:last_request_parameters
10 self.class.last_request_parameters
= request
.request_parameters
16 TestController
.last_request_parameters
= nil
19 test
"parses hash params" do
21 xml
= "<person><name>David</name></person>"
22 post
"/parse", xml
, default_headers
24 assert_equal({"person" => {"name" => "David"}}, TestController
.last_request_parameters
)
28 test
"parses single file" do
30 xml
= "<person><name>David</name><avatar type='file' name='me.jpg' content_type='image/jpg'>#{ActiveSupport::Base64.encode64('ABC')}</avatar></person>"
31 post
"/parse", xml
, default_headers
34 person
= TestController
.last_request_parameters
35 assert_equal
"image/jpg", person
['person']['avatar'].content_type
36 assert_equal
"me.jpg", person
['person']['avatar'].original_filename
37 assert_equal
"ABC", person
['person']['avatar'].read
41 test
"parses multiple files" do
46 <avatar type='file' name='me.jpg' content_type='image/jpg'>#{ActiveSupport::Base64.encode64('ABC')}</avatar>
47 <avatar type='file' name='you.gif' content_type='image/gif'>#{ActiveSupport::Base64.encode64('DEF')}</avatar>
53 post
"/parse", xml
, default_headers
57 person
= TestController
.last_request_parameters
59 assert_equal
"image/jpg", person
['person']['avatars']['avatar'].first
.content_type
60 assert_equal
"me.jpg", person
['person']['avatars']['avatar'].first
.original_filename
61 assert_equal
"ABC", person
['person']['avatars']['avatar'].first
.read
63 assert_equal
"image/gif", person
['person']['avatars']['avatar'].last
.content_type
64 assert_equal
"you.gif", person
['person']['avatars']['avatar'].last
.original_filename
65 assert_equal
"DEF", person
['person']['avatars']['avatar'].last
.read
72 map
.connect
':action', :controller => "xml_params_parsing_test/test"
79 {'CONTENT_TYPE' => 'application/xml'}
83 class LegacyXmlParamsParsingTest
< XmlParamsParsingTest
86 {'HTTP_X_POST_DATA_FORMAT' => 'xml'}