strong_parameters 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68061cec78793c90c4dffaefad764efbe8358313
4
- data.tar.gz: 2078326f601731323e69251b4e24b6e22eea19ef
3
+ metadata.gz: 104655e7dd188f9f5160a59a1be21216bec034a3
4
+ data.tar.gz: 3f8a99ed1d06fb9514d84354a89930b287293d28
5
5
  SHA512:
6
- metadata.gz: 8c1f8bf98587698cd24b65cfa12f1aadf2b62ca6d67de48d9c10d254adaf3f3296cbf843d32c462683eb46c1ef4cd4367329d28eec042241545a711143593eb7
7
- data.tar.gz: 26e983eb07378e1720ba0cef6e128c52a8dda2ac30ebc7809b9fc12c4531db855bb648d97b645effd8416673cfc7d9544ccea594ef13f2fcd47830314b208f3a
6
+ metadata.gz: 4ae5b06d01b8220037bb6ea57070905a101babaa6b93a7c4d2bed17ff84d3e2a43d3426484d716501d33eb33ba4dd933dfa6ed5fd5aba911fb185694906e066d
7
+ data.tar.gz: be45b400d6b951c8c4d137ea469d4a7f50be92592883968a35964232e6f993505b75fad0b5b50ba43dacc2c2d05abfecf0e9102e8d21fb56dc2056b89d419d93
@@ -4,6 +4,7 @@ require 'stringio'
4
4
 
5
5
  require 'active_support/concern'
6
6
  require 'active_support/core_ext/hash/indifferent_access'
7
+ require 'active_support/core_ext/array/wrap'
7
8
  require 'action_controller'
8
9
  require 'action_dispatch/http/upload'
9
10
 
@@ -43,8 +44,10 @@ module ActionController
43
44
 
44
45
  def permit!
45
46
  each_pair do |key, value|
46
- convert_hashes_to_parameters(key, value)
47
- self[key].permit! if self[key].respond_to? :permit!
47
+ value = convert_hashes_to_parameters(key, value)
48
+ Array.wrap(value).each do |_|
49
+ _.permit! if _.respond_to? :permit!
50
+ end
48
51
  end
49
52
 
50
53
  @permitted = true
@@ -79,7 +82,7 @@ module ActionController
79
82
  end
80
83
 
81
84
  def fetch(key, *args)
82
- convert_hashes_to_parameters(key, super)
85
+ convert_hashes_to_parameters(key, super, false)
83
86
  rescue KeyError, IndexError
84
87
  raise ActionController::ParameterMissing.new(key)
85
88
  end
@@ -110,9 +113,9 @@ module ActionController
110
113
 
111
114
  private
112
115
 
113
- def convert_hashes_to_parameters(key, value)
116
+ def convert_hashes_to_parameters(key, value, assign_if_converted=true)
114
117
  converted = convert_value_to_parameters(value)
115
- self[key] = converted unless converted.equal?(value)
118
+ self[key] = converted if assign_if_converted && !converted.equal?(value)
116
119
  converted
117
120
  end
118
121
 
@@ -1,3 +1,3 @@
1
1
  module StrongParameters
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -334,6 +334,12 @@ class NestedParametersTest < ActiveSupport::TestCase
334
334
  assert_equal "prop0", params[:properties]["0"]
335
335
  end
336
336
 
337
+ test "fetch with a default value of a hash does not mutate the object" do
338
+ params = ActionController::Parameters.new({})
339
+ params.fetch :foo, {}
340
+ assert_equal nil, params[:foo]
341
+ end
342
+
337
343
  test 'hashes in array values get wrapped' do
338
344
  params = ActionController::Parameters.new(foo: [{}, {}])
339
345
  params[:foo].each do |hash|
@@ -3,9 +3,16 @@ require 'action_controller/parameters'
3
3
 
4
4
  class ParametersTaintTest < ActiveSupport::TestCase
5
5
  setup do
6
- @params = ActionController::Parameters.new({ :person => {
7
- :age => "32", :name => { :first => "David", :last => "Heinemeier Hansson" }
8
- }})
6
+ @params = ActionController::Parameters.new(
7
+ person: {
8
+ age: '32',
9
+ name: {
10
+ first: 'David',
11
+ last: 'Heinemeier Hansson'
12
+ },
13
+ addresses: [{city: 'Chicago', state: 'Illinois'}]
14
+ }
15
+ )
9
16
  end
10
17
 
11
18
  test "fetch raises ParameterMissing exception" do
@@ -89,5 +96,6 @@ class ParametersTaintTest < ActiveSupport::TestCase
89
96
  assert @params.permitted?
90
97
  assert @params[:person].permitted?
91
98
  assert @params[:person][:name].permitted?
99
+ assert @params[:person][:addresses][0].permitted?
92
100
  end
93
101
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strong_parameters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-21 00:00:00.000000000 Z
11
+ date: 2014-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: actionpack
15
29
  requirement: !ruby/object:Gem::Requirement