mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-04-04 07:09:14 +00:00
52 lines
1.9 KiB
Ruby
52 lines
1.9 KiB
Ruby
# frozen_string_literal: true
|
||
|
||
require 'spec_helper'
|
||
require_relative '../../db/migrate/20240510033206_sanitize_enterprise_long_description'
|
||
|
||
RSpec.describe SanitizeEnterpriseLongDescription do
|
||
describe "#up" do
|
||
let!(:enterprise_nil_desc) { create(:enterprise, long_description: nil) }
|
||
let!(:enterprise_empty_desc) { create(:enterprise, long_description: "") }
|
||
let!(:enterprise_normal) { create(:enterprise, long_description: normal_desc) }
|
||
let!(:enterprise_bad) {
|
||
# The attribute is sanitised at assignment. So we need to inject into the
|
||
# database differently:
|
||
create(:enterprise).tap do |enterprise|
|
||
enterprise.update_columns(long_description: bad_desc)
|
||
end
|
||
}
|
||
let(:normal_desc) {
|
||
<<~HTML.squish
|
||
<p>𝐂𝐎̛𝐌 𝐓𝐀̂́𝐌 𝐂𝐇𝐔́ 𝐁𝐄́ is now available in Melbourne, everyone. 😂<br>
|
||
<>>> The story is this is a person who loves to eat...</p>
|
||
HTML
|
||
}
|
||
let(:normal_desc_sanitised) {
|
||
<<~HTML.squish
|
||
<p>𝐂𝐎̛𝐌 𝐓𝐀̂́𝐌 𝐂𝐇𝐔́ 𝐁𝐄́ is now available in Melbourne, everyone. 😂<br>
|
||
<>>> The story is this is a person who loves to eat...</p>
|
||
HTML
|
||
}
|
||
let(:bad_desc) {
|
||
<<~HTML.squish
|
||
<p data-controller="load->payMe">Fred Farmer is a certified organic
|
||
<script>alert("Gotcha!")</script>...</p>
|
||
HTML
|
||
}
|
||
let(:bad_desc_sanitised) {
|
||
"<p>Fred Farmer is a certified organic alert(\"Gotcha!\")...</p>"
|
||
}
|
||
|
||
it "sanitises the long description" do
|
||
expect { subject.up }.to change {
|
||
enterprise_bad.reload.attributes["long_description"]
|
||
}.from(bad_desc).to(bad_desc_sanitised)
|
||
|
||
expect(enterprise_nil_desc.reload.long_description).to eq nil
|
||
expect(enterprise_empty_desc.reload.long_description).to eq ""
|
||
expect(enterprise_normal.reload.attributes["long_description"])
|
||
.to eq normal_desc_sanitised
|
||
end
|
||
end
|
||
end
|