require "test_helper" class ApplicationTest < ActiveSupport::TestCase test "sanitizes an SVG icon uploaded via UploadedFile (regression for FileNotFoundError)" do app = applications(:kavita_app) svg = %() tempfile = Tempfile.new(["icon", ".svg"]).tap do |t| t.write(svg) t.rewind end uploaded = ActionDispatch::Http::UploadedFile.new( tempfile: tempfile, filename: "icon.svg", type: "image/svg+xml" ) # Previously raised ActiveStorage::FileNotFoundError because the # before_validation callback called icon.download before the blob was # uploaded to disk. assert_nothing_raised do app.update!(icon: uploaded) end cleaned = app.icon.download refute_match(/) tempfile = Tempfile.new(["dark", ".svg"]).tap do |t| t.write(svg) t.rewind end uploaded = ActionDispatch::Http::UploadedFile.new( tempfile: tempfile, filename: "dark.svg", type: "image/svg+xml" ) assert_nothing_raised do app.update!(icon_dark: uploaded) end assert app.icon_dark.attached? cleaned = app.icon_dark.download refute_match(/