From b93edc9945daafed1c8c75c984d7d32f1658efa8 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 28 Jun 2017 13:13:40 -0400 Subject: [PATCH] FIX: Make sure censored words are on boundaries in topic titles --- lib/validators/censored_words_validator.rb | 2 +- spec/models/topic_spec.rb | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/validators/censored_words_validator.rb b/lib/validators/censored_words_validator.rb index 3b566a27ea0..66e03f5bdd4 100644 --- a/lib/validators/censored_words_validator.rb +++ b/lib/validators/censored_words_validator.rb @@ -33,7 +33,7 @@ class CensoredWordsValidator < ActiveModel::EachValidator def censored_words_regexp Regexp.new( - SiteSetting.censored_words.split('|'.freeze).map! { |w| Regexp.escape(w) }.join('|'.freeze), + '\b(' + SiteSetting.censored_words.split('|'.freeze).map! { |w| Regexp.escape(w) }.join('|'.freeze) + ')\b', true ) end diff --git a/spec/models/topic_spec.rb b/spec/models/topic_spec.rb index e238e44a483..73567611dda 100644 --- a/spec/models/topic_spec.rb +++ b/spec/models/topic_spec.rb @@ -34,7 +34,7 @@ describe Topic do it 'should not be valid' do SiteSetting.censored_words = 'pineapple|pen' - topic.title = 'pen PinEapple apple pen ' + topic.title = 'pen PinEapple apple pen is a complete sentence' expect(topic).to_not be_valid @@ -44,6 +44,14 @@ describe Topic do end end + describe 'titles with censored words not on boundaries' do + it "should be valid" do + SiteSetting.censored_words = 'apple' + topic.title = "Pineapples are great fruit! Applebee's is a great restaurant" + expect(topic).to be_valid + end + end + describe 'when title does not contain censored words' do it 'should be valid' do topic.title = 'The cake is a lie'