aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activemodel/test/cases/forbidden_attributes_protection_test.rb26
1 files changed, 18 insertions, 8 deletions
diff --git a/activemodel/test/cases/forbidden_attributes_protection_test.rb b/activemodel/test/cases/forbidden_attributes_protection_test.rb
index 680f222a30..fab28ced0e 100644
--- a/activemodel/test/cases/forbidden_attributes_protection_test.rb
+++ b/activemodel/test/cases/forbidden_attributes_protection_test.rb
@@ -1,22 +1,32 @@
require 'cases/helper'
+require 'active_support/core_ext/hash/indifferent_access'
require 'models/account'
+class ProtectedParams < ActiveSupport::HashWithIndifferentAccess
+ attr_accessor :permitted
+ alias :permitted? :permitted
+
+ def initialize(attributes)
+ super(attributes)
+ @permitted = false
+ end
+
+ def permit!
+ @permitted = true
+ self
+ end
+end
+
class ActiveModelMassUpdateProtectionTest < ActiveSupport::TestCase
test "forbidden attributes cannot be used for mass updating" do
- params = { "a" => "b" }
- class << params
- define_method(:permitted?) { false }
- end
+ params = ProtectedParams.new({ "a" => "b" })
assert_raises(ActiveModel::ForbiddenAttributes) do
Account.new.sanitize_for_mass_assignment(params)
end
end
test "permitted attributes can be used for mass updating" do
- params = { "a" => "b" }
- class << params
- define_method(:permitted?) { true }
- end
+ params = ProtectedParams.new({ "a" => "b" }).permit!
assert_nothing_raised do
assert_equal({ "a" => "b" },
Account.new.sanitize_for_mass_assignment(params))