From d505cda949bb73dca925533cfa4487d980fa3428 Mon Sep 17 00:00:00 2001
From: Bertocq
Date: Mon, 15 Jan 2018 20:37:39 +0100
Subject: [PATCH] Add description sanitization to Budget::Phase with model
specs
---
app/models/budget/phase.rb | 7 +++++++
spec/models/budget/phase_spec.rb | 8 ++++++++
2 files changed, 15 insertions(+)
diff --git a/app/models/budget/phase.rb b/app/models/budget/phase.rb
index a51d82076..7e59ff6ac 100644
--- a/app/models/budget/phase.rb
+++ b/app/models/budget/phase.rb
@@ -14,6 +14,9 @@ class Budget
validates :description, length: { maximum: DESCRIPTION_MAX_LENGTH }
validate :dates_range_valid?
+ before_validation :sanitize_description
+
+
scope :enabled, -> { where(enabled: true) }
scope :drafting, -> { find_by_kind('drafting') }
scope :accepting, -> { find_by_kind('accepting')}
@@ -39,5 +42,9 @@ class Budget
end
end
+
+ def sanitize_description
+ self.description = WYSIWYGSanitizer.new.sanitize(description)
+ end
end
end
diff --git a/spec/models/budget/phase_spec.rb b/spec/models/budget/phase_spec.rb
index 90d1a01b6..d904dc8c7 100644
--- a/spec/models/budget/phase_spec.rb
+++ b/spec/models/budget/phase_spec.rb
@@ -77,4 +77,12 @@ describe Budget::Phase do
end
end
end
+
+ describe "#sanitize_description" do
+ it "removes html entities from the description" do
+ expect{
+ first_phase.update_attributes(description: "a
javascript")
+ }.to change{ first_phase.description }.to('a javascript')
+ end
+ end
end