Make sure label text is escaped if it is not safe

Signed-off-by: Rafael Mendonça França <rafaelmfranca@gmail.com>
This commit is contained in:
Rafael Mendonça França 2013-11-26 21:07:52 -02:00
parent 028e762f00
commit c0cb09215f
2 changed files with 12 additions and 1 deletions

View File

@ -2,6 +2,7 @@ module SimpleForm
module Components
module Labels
extend ActiveSupport::Concern
include ERB::Util
module ClassMethods #:nodoc:
def translate_required_html
@ -30,7 +31,7 @@ module SimpleForm
end
def label_text
SimpleForm.label_text.call(raw_label_text, required_label_text).strip.html_safe
SimpleForm.label_text.call(html_escape(raw_label_text), required_label_text).strip.html_safe
end
def label_target

View File

@ -29,6 +29,16 @@ class LabelTest < ActionView::TestCase
assert_select 'label.string.required[for=validating_user_name]', /Name/
end
test 'builder should escape label text' do
with_label_for @user, :name, label: '<script>alert(1337)</script>', required: false
assert_select 'label.string', "&lt;script&gt;alert(1337)&lt;/script&gt;"
end
test 'builder should not escape label text if it is safe' do
with_label_for @user, :name, label: '<script>alert(1337)</script>'.html_safe, required: false
assert_select 'label.string script', "alert(1337)"
end
test 'builder should allow passing options to label tag' do
with_label_for @user, :name, label: 'My label', id: 'name_label'
assert_select 'label.string#name_label', /My label/