2019-04-30 08:27:42 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2014-10-07 01:57:38 +08:00
|
|
|
require "email/renderer"
|
|
|
|
|
2022-07-28 10:27:38 +08:00
|
|
|
RSpec.describe Email::Renderer do
|
2014-10-07 01:57:38 +08:00
|
|
|
let(:message) do
|
|
|
|
mail = Mail.new
|
|
|
|
|
|
|
|
mail.text_part = Mail::Part.new { body "Key & Peele" }
|
|
|
|
|
|
|
|
mail.html_part =
|
|
|
|
Mail::Part.new do
|
|
|
|
content_type "text/html; charset=UTF-8"
|
2024-01-12 23:14:55 +08:00
|
|
|
body "<h1>Key & Peele</h1> <a href=\"https://discourse.org\">Discourse link</a>"
|
2014-10-07 01:57:38 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
mail
|
|
|
|
end
|
|
|
|
|
2024-01-12 23:14:55 +08:00
|
|
|
let(:renderer) { Email::Renderer.new(message) }
|
|
|
|
|
2014-10-07 01:57:38 +08:00
|
|
|
it "escapes HTML entities from text" do
|
2015-01-10 00:34:37 +08:00
|
|
|
expect(renderer.text).to eq("Key & Peele")
|
2014-10-07 01:57:38 +08:00
|
|
|
end
|
2024-01-12 23:14:55 +08:00
|
|
|
|
|
|
|
context "with email_renderer_html modifier" do
|
2024-01-22 22:51:36 +08:00
|
|
|
after { DiscoursePluginRegistry.reset! }
|
2024-01-12 23:14:55 +08:00
|
|
|
it "can modify the html" do
|
|
|
|
Plugin::Instance
|
|
|
|
.new
|
|
|
|
.register_modifier(:email_renderer_html) do |styles, _|
|
|
|
|
styles.fragment.css("a").each { |link| link["href"] = "httpz://hijacked.sorry" }
|
|
|
|
end
|
|
|
|
|
|
|
|
expect(renderer.html).not_to include("href=\"https://discourse.org\"")
|
|
|
|
expect(renderer.html).to include("href=\"httpz://hijacked.sorry\"")
|
|
|
|
end
|
|
|
|
end
|
2014-10-07 01:57:38 +08:00
|
|
|
end
|