diff options
author | Xavier Noria <fxn@hashref.com> | 2016-11-08 09:58:58 +0100 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2016-11-11 23:31:50 +0100 |
commit | e86524c0c5a26ceec92895c830d1355ae47a7034 (patch) | |
tree | 35bed8b96f65678e5da98af61262dc0f4368bd91 /actionpack/test | |
parent | a5e933410dcbf097c5f180ec7ce9b3567a9e3514 (diff) | |
download | rails-e86524c0c5a26ceec92895c830d1355ae47a7034.tar.gz rails-e86524c0c5a26ceec92895c830d1355ae47a7034.tar.bz2 rails-e86524c0c5a26ceec92895c830d1355ae47a7034.zip |
adds support for arbitrary hashes in strong parameters
Diffstat (limited to 'actionpack/test')
-rw-r--r-- | actionpack/test/controller/parameters/parameters_permit_test.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/actionpack/test/controller/parameters/parameters_permit_test.rb b/actionpack/test/controller/parameters/parameters_permit_test.rb index 2b9a95d17c..16637d330b 100644 --- a/actionpack/test/controller/parameters/parameters_permit_test.rb +++ b/actionpack/test/controller/parameters/parameters_permit_test.rb @@ -168,6 +168,39 @@ class ParametersPermitTest < ActiveSupport::TestCase end end + test "key to empty hash: arbitrary hashes are permitted" do + params = ActionController::Parameters.new( + username: "fxn", + preferences: { + scheme: "Marazul", + font: { + name: "Source Code Pro", + size: 12 + }, + tabstops: [4, 8, 12, 16], + suspicious: [true, Object.new, false, /yo!/], + dubious: [{a: :a, b: /wtf!/}, {c: :c}], + injected: Object.new + }, + hacked: 1 # not a hash + ) + + permitted = params.permit(:username, preferences: {}, hacked: {}) + + assert_equal "fxn", permitted[:username] + assert_equal "Marazul", permitted[:preferences][:scheme] + assert_equal "Source Code Pro", permitted[:preferences][:font][:name] + assert_equal 12, permitted[:preferences][:font][:size] + assert_equal [4, 8, 12, 16], permitted[:preferences][:tabstops] + assert_equal [true, false], permitted[:preferences][:suspicious] + assert_equal :a, permitted[:preferences][:dubious][0][:a] + assert_equal :c, permitted[:preferences][:dubious][1][:c] + + assert_filtered_out permitted[:preferences][:dubious][0], :b + assert_filtered_out permitted[:preferences], :injected + assert_filtered_out permitted, :hacked + end + test "fetch raises ParameterMissing exception" do e = assert_raises(ActionController::ParameterMissing) do @params.fetch :foo |