|
1 | 1 | # frozen_string_literal: true |
2 | 2 |
|
3 | 3 | require "abstract_unit" |
4 | | -require "action_dispatch/http/param_builder" |
| 4 | +require "action_dispatch" |
5 | 5 |
|
6 | 6 | class UrlEncodedFormatTest < ActiveSupport::TestCase |
| 7 | + test "#mime_type returns application/x-www-form-urlencoded" do |
| 8 | + assert_equal "application/x-www-form-urlencoded", ActiveResource::Formats::UrlEncodedFormat.mime_type |
| 9 | + end |
| 10 | + |
7 | 11 | test "#encode transforms a Hash into an application/x-www-form-urlencoded query string" do |
8 | 12 | params = { "a" => 1, "b" => 2, "c" => [ 3, 4 ] } |
9 | 13 |
|
@@ -44,55 +48,93 @@ class UrlEncodedFormatTest < ActiveSupport::TestCase |
44 | 48 | assert_equal({ "person[name]" => "Matz" }, decoded) |
45 | 49 | end |
46 | 50 |
|
47 | | - test "#decode transforms an application/x-www-form-urlencoded query string with multiple params into a Hash" do |
48 | | - format = ActiveResource::Formats::UrlEncodedFormat |
49 | | - previous_param_builder = format.param_builder |
50 | | - format.param_builder = ActionDispatch::ParamBuilder |
| 51 | + test "#decode returns a Hash of query string pairs" do |
| 52 | + decoded = ActiveResource::Formats::UrlEncodedFormat.decode("a" => "1") |
51 | 53 |
|
| 54 | + assert_equal({ "a" => "1" }, decoded) |
| 55 | + end |
| 56 | +end |
| 57 | + |
| 58 | +class UrlEncodedFormatRackQueryParserTest < ActiveSupport::TestCase |
| 59 | + setup do |
| 60 | + @previous_query_parser = ActiveResource::Formats::UrlEncodedFormat.query_parser |
| 61 | + ActiveResource::Formats::UrlEncodedFormat.query_parser = :rack |
| 62 | + end |
| 63 | + |
| 64 | + teardown do |
| 65 | + ActiveResource::Formats::UrlEncodedFormat.query_parser = @previous_query_parser |
| 66 | + end |
| 67 | + |
| 68 | + test "#decode transforms an application/x-www-form-urlencoded query string with multiple params into a Hash" do |
52 | 69 | query = URI.encode_www_form([ [ "a[]", "1" ], [ "a[]", "2" ] ]) |
53 | 70 |
|
54 | | - decoded = format.decode(query) |
| 71 | + decoded = ActiveResource::Formats::UrlEncodedFormat.decode(query) |
55 | 72 |
|
56 | 73 | assert_equal({ "a" => [ "1", "2" ] }, decoded) |
57 | | - ensure |
58 | | - format.param_builder = previous_param_builder |
59 | 74 | end |
60 | 75 |
|
61 | 76 | test "#decode transforms an Array of query string pairs with multiple params into a Hash" do |
62 | | - format = ActiveResource::Formats::UrlEncodedFormat |
63 | | - previous_param_builder = format.param_builder |
64 | | - format.param_builder = ActionDispatch::ParamBuilder |
65 | | - |
66 | 77 | pairs = [ [ "a[]", "1" ], [ "a[]", "2" ] ] |
67 | 78 |
|
68 | | - decoded = format.decode(pairs) |
| 79 | + decoded = ActiveResource::Formats::UrlEncodedFormat.decode(pairs) |
69 | 80 |
|
70 | 81 | assert_equal({ "a" => [ "1", "2" ] }, decoded) |
71 | | - ensure |
72 | | - format.param_builder = previous_param_builder |
73 | 82 | end |
74 | 83 |
|
75 | | - test "#decode transforms an Array of nested query string pairs into a Hash using ActionDispatch::ParamBuilder" do |
76 | | - format = ActiveResource::Formats::UrlEncodedFormat |
77 | | - previous_param_builder = format.param_builder |
78 | | - format.param_builder = ActionDispatch::ParamBuilder |
79 | | - |
| 84 | + test "#decode transforms an Array of nested query string pairs into a Hash" do |
80 | 85 | pairs = [ [ "person[name]", "Matz" ] ] |
81 | 86 |
|
82 | | - decoded = format.decode(pairs) |
| 87 | + decoded = ActiveResource::Formats::UrlEncodedFormat.decode(pairs) |
83 | 88 |
|
84 | 89 | assert_equal({ "person" => { "name" => "Matz" } }, decoded) |
85 | | - ensure |
86 | | - format.param_builder = previous_param_builder |
87 | 90 | end |
88 | 91 |
|
89 | 92 | test "#decode returns a Hash of query string pairs" do |
90 | 93 | decoded = ActiveResource::Formats::UrlEncodedFormat.decode("a" => "1") |
91 | 94 |
|
92 | 95 | assert_equal({ "a" => "1" }, decoded) |
93 | 96 | end |
| 97 | +end |
94 | 98 |
|
95 | | - test "#mime_type returns application/x-www-form-urlencoded" do |
96 | | - assert_equal "application/x-www-form-urlencoded", ActiveResource::Formats::UrlEncodedFormat.mime_type |
| 99 | +if ActionPack::VERSION::MAJOR >= 8 |
| 100 | + class UrlEncodedFormatActionDispatchQueryParserTest < ActiveSupport::TestCase |
| 101 | + setup do |
| 102 | + @previous_query_parser = ActiveResource::Formats::UrlEncodedFormat.query_parser |
| 103 | + ActiveResource::Formats::UrlEncodedFormat.query_parser = :action_dispatch |
| 104 | + end |
| 105 | + |
| 106 | + teardown do |
| 107 | + ActiveResource::Formats::UrlEncodedFormat.query_parser = @previous_query_parser |
| 108 | + end |
| 109 | + |
| 110 | + test "#decode transforms an application/x-www-form-urlencoded query string with multiple params into a Hash" do |
| 111 | + query = URI.encode_www_form([ [ "a[]", "1" ], [ "a[]", "2" ] ]) |
| 112 | + |
| 113 | + decoded = ActiveResource::Formats::UrlEncodedFormat.decode(query) |
| 114 | + |
| 115 | + assert_equal({ "a" => [ "1", "2" ] }, decoded) |
| 116 | + end |
| 117 | + |
| 118 | + test "#decode transforms an Array of query string pairs with multiple params into a Hash" do |
| 119 | + pairs = [ [ "a[]", "1" ], [ "a[]", "2" ] ] |
| 120 | + |
| 121 | + decoded = ActiveResource::Formats::UrlEncodedFormat.decode(pairs) |
| 122 | + |
| 123 | + assert_equal({ "a" => [ "1", "2" ] }, decoded) |
| 124 | + end |
| 125 | + |
| 126 | + test "#decode transforms an Array of nested query string pairs into a Hash" do |
| 127 | + pairs = [ [ "person[name]", "Matz" ] ] |
| 128 | + |
| 129 | + decoded = ActiveResource::Formats::UrlEncodedFormat.decode(pairs) |
| 130 | + |
| 131 | + assert_equal({ "person" => { "name" => "Matz" } }, decoded) |
| 132 | + end |
| 133 | + |
| 134 | + test "#decode returns a Hash of query string pairs" do |
| 135 | + decoded = ActiveResource::Formats::UrlEncodedFormat.decode("a" => "1") |
| 136 | + |
| 137 | + assert_equal({ "a" => "1" }, decoded) |
| 138 | + end |
97 | 139 | end |
98 | 140 | end |
0 commit comments