require 'abstract_unit' require 'active_support/core_ext/string/inflections' require 'yaml' class SafeBufferTest < ActiveSupport::TestCase def setup @buffer = ActiveSupport::SafeBuffer.new end def test_titleize assert_equal 'Foo', "foo".html_safe.titleize end test "Should look like a string" do assert @buffer.is_a?(String) assert_equal "", @buffer end test "Should escape a raw string which is passed to them" do @buffer << "') # calling gsub! makes the dirty flag true assert !x.html_safe?, "should not be safe" # getting a slice of it y = x[0..-1] # should still be unsafe assert !y.html_safe?, "should not be safe" end test 'Should work with interpolation (array argument)' do x = 'foo %s bar'.html_safe % ['qux'] assert_equal 'foo qux bar', x end test 'Should work with interpolation (hash argument)' do x = 'foo %{x} bar'.html_safe % { x: 'qux' } assert_equal 'foo qux bar', x end test 'Should escape unsafe interpolated args' do x = 'foo %{x} bar'.html_safe % { x: '
' } assert_equal 'foo <br/> bar', x end test 'Should not escape safe interpolated args' do x = 'foo %{x} bar'.html_safe % { x: '
'.html_safe } assert_equal 'foo
bar', x end test 'Should interpolate to a safe string' do x = 'foo %{x} bar'.html_safe % { x: 'qux' } assert x.html_safe?, 'should be safe' end end