discourse/spec/lib/category_badge_spec.rb
Krzysztof Kotlarek d92fd30d23
FIX: do not escape slash for category text description (#20460)
Original solution to use `description` instead of `text_description` was wrong: https://github.com/discourse/discourse/pull/20436

Problem is that we have to escape HTML tags.

However, we would like to use escape method which is keep `/` intact.   Expected behavior is given by  ERB::Util.html_escape instead of Rack::Utils.escape_html

/t/92015
2023-02-27 12:48:48 +11:00

24 lines
712 B
Ruby

# frozen_string_literal: true
require "category_badge"
RSpec.describe CategoryBadge do
it "escapes HTML in category names / descriptions" do
c = Fabricate(:category, name: "<b>name</b>", description: "<b>title</b>")
html = CategoryBadge.html_for(c)
expect(html).not_to include("<b>title</b>")
expect(html).not_to include("<b>name</b>")
expect(html).to include(ERB::Util.html_escape("<b>name</b>"))
expect(html).to include("title='title'")
end
it "escapes code block contents" do
c = Fabricate(:category, description: '<code>\' &lt;b id="x"&gt;</code>')
html = CategoryBadge.html_for(c)
expect(html).to include("title='&#39; &lt;b id=&quot;x&quot;&gt;'")
end
end