require "abstract_unit" require "action_controller/metal/strong_parameters" require "active_support/core_ext/string/strip" class ParametersSerializationTest < ActiveSupport::TestCase setup do @old_permitted_parameters = ActionController::Parameters.permit_all_parameters ActionController::Parameters.permit_all_parameters = false end teardown do ActionController::Parameters.permit_all_parameters = @old_permitted_parameters end test "yaml serialization" do params = ActionController::Parameters.new(key: :value) assert_equal <<-end_of_yaml.strip_heredoc, YAML.dump(params) --- !ruby/object:ActionController::Parameters parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess key: :value permitted: false end_of_yaml end test "yaml deserialization" do params = ActionController::Parameters.new(key: :value) roundtripped = YAML.load(YAML.dump(params)) assert_equal params, roundtripped assert_not roundtripped.permitted? end test "yaml backwardscompatible with psych 2.0.8 format" do params = YAML.load <<-end_of_yaml.strip_heredoc --- !ruby/hash:ActionController::Parameters key: :value end_of_yaml assert_equal :value, params[:key] assert_not params.permitted? end test "yaml backwardscompatible with psych 2.0.9+ format" do params = YAML.load(<<-end_of_yaml.strip_heredoc) --- !ruby/hash-with-ivars:ActionController::Parameters elements: key: :value ivars: :@permitted: false end_of_yaml assert_equal :value, params[:key] assert_not params.permitted? end end