simple_form 2.1.1 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of simple_form might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 27282450639f5fb5ad27d5c59f274aab91a4be7a
4
- data.tar.gz: 1ded8f66c7a18f3ea2679ab4da49f9851e8293c1
3
+ metadata.gz: c4f641b8e74ebf64e3fb7fe4ebe925c64713eb13
4
+ data.tar.gz: e74db71fa1d985a906d520673cf82504470c16dd
5
5
  SHA512:
6
- metadata.gz: 4354640ba60801f7150c215638d03fe65f446c94ec30f93aafafe23a991a64b3789cc39a5f61b86708acd3cbd4fdedd078e29bf35c62e58ac930f436c5320ba6
7
- data.tar.gz: 3b8dd8220e0b56ec8a6893ac0c20a60dd4950f98b4297fc197de2c28c76f2cbd9adae3dc7f0c854b7dfe9542a514b6f333257869bbf99e5fcd53fa5f7c35cdc1
6
+ metadata.gz: bc974c636d805808f4b5fd47e9eec4c656ae53b680113f03eea075dac24a7607c773e1243ceff8201bced0fc849c752def0130efefe5b9d7a24c6e85fc4e176a
7
+ data.tar.gz: f7a7f67d9ce616e8f7697558ca957cf2701641c0a149eb06b0dab2b60ba17833f432f7bdeeaf29312ff7606acf70971dea86b8ec4f19198ff6420aa7421d646e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 2.1.2
2
+
3
+ ### bug fix
4
+ * Fix XSS vulnerability on error components.
5
+
1
6
  ## 2.1.1
2
7
 
3
8
  ### bug fix
@@ -12,7 +12,9 @@ module SimpleForm
12
12
  protected
13
13
 
14
14
  def error_text
15
- "#{html_escape(options[:error_prefix])} #{errors.send(error_method)}".lstrip.html_safe
15
+ text = has_error_in_options? ? options[:error] : errors.send(error_method)
16
+
17
+ "#{html_escape(options[:error_prefix])} #{html_escape(text)}".lstrip.html_safe
16
18
  end
17
19
 
18
20
  def error_method
@@ -30,6 +32,10 @@ module SimpleForm
30
32
  def errors_on_association
31
33
  reflection ? object.errors[reflection.name] : []
32
34
  end
35
+
36
+ def has_error_in_options?
37
+ options[:error] && !options[:error].nil?
38
+ end
33
39
  end
34
40
  end
35
41
  end
@@ -45,7 +45,7 @@ module SimpleForm
45
45
  end
46
46
 
47
47
  # Always enabled.
48
- enable :hint
48
+ enable :hint, :error
49
49
 
50
50
  # Usually disabled, needs to be enabled explicitly passing true as option.
51
51
  disable :maxlength, :placeholder, :pattern, :min_max
@@ -1,3 +1,3 @@
1
1
  module SimpleForm
2
- VERSION = "2.1.1".freeze
2
+ VERSION = "2.1.2".freeze
3
3
  end
@@ -14,6 +14,10 @@ class ErrorTest < ActionView::TestCase
14
14
  end
15
15
  end
16
16
 
17
+ def with_custom_error_for(object, *args)
18
+ with_form_for(object, *args)
19
+ end
20
+
17
21
  test 'error should not generate content for attribute without errors' do
18
22
  with_error_for @user, :active
19
23
  assert_no_select 'span.error'
@@ -32,7 +36,7 @@ class ErrorTest < ActionView::TestCase
32
36
 
33
37
  test 'error should generate messages for attribute with single error' do
34
38
  with_error_for @user, :name
35
- assert_select 'span.error', "can't be blank"
39
+ assert_select 'span.error', "can&#x27;t be blank"
36
40
  end
37
41
 
38
42
  test 'error should generate messages for attribute with one error when using first' do
@@ -82,12 +86,21 @@ class ErrorTest < ActionView::TestCase
82
86
 
83
87
  test 'error should escape error prefix text' do
84
88
  with_error_for @user, :name, :error_prefix => '<b>Name</b>'
85
- assert_select 'span.error', "&lt;b&gt;Name&lt;/b&gt; can't be blank"
89
+ assert_select 'span.error', "&lt;b&gt;Name&lt;/b&gt; can&#x27;t be blank"
90
+ end
91
+
92
+ test 'error escapes error text' do
93
+ @user.errors.merge!(:action => ['must not contain <b>markup</b>'])
94
+
95
+ with_error_for @user, :action
96
+
97
+ assert_select 'span.error'
98
+ assert_no_select 'span.error b', 'markup'
86
99
  end
87
100
 
88
101
  test 'error should generate an error message with raw HTML tags' do
89
102
  with_error_for @user, :name, :error_prefix => '<b>Name</b>'.html_safe
90
- assert_select 'span.error', "Name can't be blank"
103
+ assert_select 'span.error', "Name can&#x27;t be blank"
91
104
  assert_select 'span.error b', "Name"
92
105
  end
93
106
 
@@ -95,7 +108,7 @@ class ErrorTest < ActionView::TestCase
95
108
 
96
109
  test 'full error should generate an full error tag for the attribute' do
97
110
  with_full_error_for @user, :name
98
- assert_select 'span.error', "Super User Name! can't be blank"
111
+ assert_select 'span.error', "Super User Name! can&#x27;t be blank"
99
112
  end
100
113
 
101
114
  test 'full error should generate an full error tag with a clean HTML' do
@@ -105,13 +118,13 @@ class ErrorTest < ActionView::TestCase
105
118
 
106
119
  test 'full error should allow passing options to full error tag' do
107
120
  with_full_error_for @user, :name, :id => 'name_error', :error_prefix => "Your name"
108
- assert_select 'span.error#name_error', "Your name can't be blank"
121
+ assert_select 'span.error#name_error', "Your name can&#x27;t be blank"
109
122
  end
110
123
 
111
124
  test 'full error should not modify the options hash' do
112
125
  options = { :id => 'name_error' }
113
126
  with_full_error_for @user, :name, options
114
- assert_select 'span.error#name_error', "Super User Name! can't be blank"
127
+ assert_select 'span.error#name_error', "Super User Name! can&#x27;t be blank"
115
128
  assert_equal({ :id => 'name_error' }, options)
116
129
  end
117
130
 
@@ -120,7 +133,36 @@ class ErrorTest < ActionView::TestCase
120
133
  test 'error with custom wrappers works' do
121
134
  swap_wrapper do
122
135
  with_error_for @user, :name
123
- assert_select 'span.omg_error', "can't be blank"
136
+ assert_select 'span.omg_error', "can&#x27;t be blank"
124
137
  end
125
138
  end
139
+
140
+ # CUSTOM ERRORS
141
+
142
+ test 'input with custom error works' do
143
+ with_custom_error_for(@user, :name, :error => "Super User Name! can't be blank")
144
+
145
+ assert_select 'span.error', "Super User Name! can&#x27;t be blank"
146
+ end
147
+
148
+ test 'input with custom error does not generate the error if there is no error on the attribute' do
149
+ error_text = "Super User Active! can't be blank"
150
+ with_form_for @user, :active, :error => error_text
151
+
152
+ assert_no_select 'span.error'
153
+ end
154
+
155
+ test 'input with custom error escapes the error text' do
156
+ with_form_for @user, :name, :error => 'error must not contain <b>markup</b>'
157
+
158
+ assert_select 'span.error'
159
+ assert_no_select 'span.error b', 'markup'
160
+ end
161
+
162
+ test 'input with custom error does not escape the error text if it is safe' do
163
+ with_form_for @user, :name, :error => 'error must contain <b>markup</b>'.html_safe
164
+
165
+ assert_select 'span.error'
166
+ assert_select 'span.error b', 'markup'
167
+ end
126
168
  end
@@ -283,7 +283,7 @@ class FormBuilderTest < ActionView::TestCase
283
283
 
284
284
  test 'builder should generate errors for attribute with errors' do
285
285
  with_form_for @user, :name
286
- assert_select 'span.error', "can't be blank"
286
+ assert_select 'span.error', "can&#x27;t be blank"
287
287
  end
288
288
 
289
289
  test 'builder should be able to disable showing errors for a input' do
@@ -293,7 +293,7 @@ class FormBuilderTest < ActionView::TestCase
293
293
 
294
294
  test 'builder should pass options to errors' do
295
295
  with_form_for @user, :name, :error_html => { :id => "cool" }
296
- assert_select 'span.error#cool', "can't be blank"
296
+ assert_select 'span.error#cool', "can&#x27;t be blank"
297
297
  end
298
298
 
299
299
  test 'placeholder should not be generated when set to false' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Valim
@@ -10,34 +10,34 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-11-29 00:00:00.000000000 Z
13
+ date: 2014-11-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ~>
19
+ - - "~>"
20
20
  - !ruby/object:Gem::Version
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ~>
26
+ - - "~>"
27
27
  - !ruby/object:Gem::Version
28
28
  version: '3.0'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: actionpack
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ~>
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
35
  version: '3.0'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ~>
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '3.0'
43
43
  description: Forms made easy!
@@ -49,7 +49,9 @@ files:
49
49
  - CHANGELOG.md
50
50
  - MIT-LICENSE
51
51
  - README.md
52
+ - lib/generators/simple_form/USAGE
52
53
  - lib/generators/simple_form/install_generator.rb
54
+ - lib/generators/simple_form/templates/README
53
55
  - lib/generators/simple_form/templates/_form.html.erb
54
56
  - lib/generators/simple_form/templates/_form.html.haml
55
57
  - lib/generators/simple_form/templates/_form.html.slim
@@ -57,10 +59,10 @@ files:
57
59
  - lib/generators/simple_form/templates/config/initializers/simple_form_bootstrap.rb
58
60
  - lib/generators/simple_form/templates/config/initializers/simple_form_foundation.rb
59
61
  - lib/generators/simple_form/templates/config/locales/simple_form.en.yml
60
- - lib/generators/simple_form/templates/README
61
- - lib/generators/simple_form/USAGE
62
+ - lib/simple_form.rb
62
63
  - lib/simple_form/action_view_extensions/builder.rb
63
64
  - lib/simple_form/action_view_extensions/form_helper.rb
65
+ - lib/simple_form/components.rb
64
66
  - lib/simple_form/components/errors.rb
65
67
  - lib/simple_form/components/hints.rb
66
68
  - lib/simple_form/components/html5.rb
@@ -71,17 +73,17 @@ files:
71
73
  - lib/simple_form/components/pattern.rb
72
74
  - lib/simple_form/components/placeholders.rb
73
75
  - lib/simple_form/components/readonly.rb
74
- - lib/simple_form/components.rb
75
76
  - lib/simple_form/core_ext/hash.rb
76
77
  - lib/simple_form/error_notification.rb
77
78
  - lib/simple_form/form_builder.rb
79
+ - lib/simple_form/helpers.rb
78
80
  - lib/simple_form/helpers/autofocus.rb
79
81
  - lib/simple_form/helpers/disabled.rb
80
82
  - lib/simple_form/helpers/readonly.rb
81
83
  - lib/simple_form/helpers/required.rb
82
84
  - lib/simple_form/helpers/validators.rb
83
- - lib/simple_form/helpers.rb
84
85
  - lib/simple_form/i18n_cache.rb
86
+ - lib/simple_form/inputs.rb
85
87
  - lib/simple_form/inputs/base.rb
86
88
  - lib/simple_form/inputs/block_input.rb
87
89
  - lib/simple_form/inputs/boolean_input.rb
@@ -99,15 +101,13 @@ files:
99
101
  - lib/simple_form/inputs/range_input.rb
100
102
  - lib/simple_form/inputs/string_input.rb
101
103
  - lib/simple_form/inputs/text_input.rb
102
- - lib/simple_form/inputs.rb
103
104
  - lib/simple_form/map_type.rb
104
105
  - lib/simple_form/version.rb
106
+ - lib/simple_form/wrappers.rb
105
107
  - lib/simple_form/wrappers/builder.rb
106
108
  - lib/simple_form/wrappers/many.rb
107
109
  - lib/simple_form/wrappers/root.rb
108
110
  - lib/simple_form/wrappers/single.rb
109
- - lib/simple_form/wrappers.rb
110
- - lib/simple_form.rb
111
111
  - test/action_view_extensions/builder_test.rb
112
112
  - test/action_view_extensions/form_helper_test.rb
113
113
  - test/components/label_test.rb
@@ -153,17 +153,17 @@ require_paths:
153
153
  - lib
154
154
  required_ruby_version: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - '>='
156
+ - - ">="
157
157
  - !ruby/object:Gem::Version
158
158
  version: '0'
159
159
  required_rubygems_version: !ruby/object:Gem::Requirement
160
160
  requirements:
161
- - - '>='
161
+ - - ">="
162
162
  - !ruby/object:Gem::Version
163
163
  version: '0'
164
164
  requirements: []
165
165
  rubyforge_project: simple_form
166
- rubygems_version: 2.1.11
166
+ rubygems_version: 2.2.2
167
167
  signing_key:
168
168
  specification_version: 4
169
169
  summary: Forms made easy!