aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2018-07-20 21:06:25 +0200
committerGitHub <noreply@github.com>2018-07-20 21:06:25 +0200
commite7fe07e7f08a43d3f1bdcc522233a01fca184c28 (patch)
tree2183ddeed001aa667fbd4a896069fccdd83870b1
parent1a0bcc3b49e05eba852912f609a20c36a9656857 (diff)
parent9b51ee9f925e9c1f64d0bae2039ff70cea0d0959 (diff)
downloadrails-e7fe07e7f08a43d3f1bdcc522233a01fca184c28.tar.gz
rails-e7fe07e7f08a43d3f1bdcc522233a01fca184c28.tar.bz2
rails-e7fe07e7f08a43d3f1bdcc522233a01fca184c28.zip
Merge pull request #33392 from azbshiri/actionpack/prevent-request-encoder-to-parse-nil-params
Prevent `RequestEncoder#encode_params` to parse falsey params
-rw-r--r--actionpack/CHANGELOG.md7
-rw-r--r--actionpack/lib/action_dispatch/testing/request_encoder.rb2
-rw-r--r--actionpack/test/controller/integration_test.rb14
3 files changed, 22 insertions, 1 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md
index 7645b2b0e7..af8ecb7e2a 100644
--- a/actionpack/CHANGELOG.md
+++ b/actionpack/CHANGELOG.md
@@ -50,5 +50,12 @@
*Jeremy Daer*
+* Prevent `RequestEncoder#encode_params` to parse falsey params
+
+ Now `RequestEncoder#encode_params` doesn't convert
+ falsey params into query string.
+
+ *Alireza Bashiri*
+
Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/actionpack/CHANGELOG.md) for previous changes.
diff --git a/actionpack/lib/action_dispatch/testing/request_encoder.rb b/actionpack/lib/action_dispatch/testing/request_encoder.rb
index 01246b7a2e..9889f61951 100644
--- a/actionpack/lib/action_dispatch/testing/request_encoder.rb
+++ b/actionpack/lib/action_dispatch/testing/request_encoder.rb
@@ -34,7 +34,7 @@ module ActionDispatch
end
def encode_params(params)
- @param_encoder.call(params)
+ @param_encoder.call(params) if params
end
def self.parser(content_type)
diff --git a/actionpack/test/controller/integration_test.rb b/actionpack/test/controller/integration_test.rb
index 41812a82e1..39ede1442a 100644
--- a/actionpack/test/controller/integration_test.rb
+++ b/actionpack/test/controller/integration_test.rb
@@ -1079,6 +1079,20 @@ class IntegrationRequestEncodersTest < ActionDispatch::IntegrationTest
end
end
+ def test_get_request_with_json_excludes_null_query_string
+ with_routing do |routes|
+ routes.draw do
+ ActiveSupport::Deprecation.silence do
+ get ":action" => FooController
+ end
+ end
+
+ get "/foos_json", as: :json
+
+ assert_equal "http://www.example.com/foos_json", request.url
+ end
+ end
+
private
def post_to_foos(as:)
with_routing do |routes|