FIX: whitelist post_types used in context in email notifications

This commit is contained in:
Régis Hanol 2016-02-12 12:10:30 +01:00
parent f77dfda097
commit c740b42328
2 changed files with 17 additions and 15 deletions

View File

@ -186,11 +186,14 @@ class UserNotifications < ActionMailer::Base
end
def self.get_context_posts(post, topic_user)
allowed_post_types = [Post.types[:regular]]
allowed_post_types << Post.types[:whisper] if topic_user.try(:user).try(:staff?)
context_posts = Post.where(topic_id: post.topic_id)
.where("post_number < ?", post.post_number)
.where(user_deleted: false)
.where(hidden: false)
.where(post_type: Topic.visible_post_types)
.where(post_type: allowed_post_types)
.order('created_at desc')
.limit(SiteSetting.email_posts_context)

View File

@ -6,21 +6,20 @@ describe UserNotifications do
describe "#get_context_posts" do
it "does not include hidden/deleted/user_deleted posts in context" do
post = create_post
reply1 = create_post(topic: post.topic)
reply2 = create_post(topic: post.topic)
reply3 = create_post(topic: post.topic)
reply4 = create_post(topic: post.topic)
post1 = create_post
post2 = Fabricate(:post, topic: post1.topic, deleted_at: 1.day.ago)
post3 = Fabricate(:post, topic: post1.topic, user_deleted: true)
post4 = Fabricate(:post, topic: post1.topic, hidden: true)
post5 = Fabricate(:post, topic: post1.topic, post_type: Post.types[:moderator_action])
post6 = Fabricate(:post, topic: post1.topic, post_type: Post.types[:small_action])
post7 = Fabricate(:post, topic: post1.topic, post_type: Post.types[:whisper])
last = Fabricate(:post, topic: post1.topic)
reply1.trash!
reply2.user_deleted = true
reply2.save
reply3.hidden = true
reply3.save
expect(UserNotifications.get_context_posts(reply4, nil).count).to eq(1)
# default is only post #1
expect(UserNotifications.get_context_posts(last, nil).count).to eq(1)
# staff members can also see the whisper
tu = TopicUser.new(topic: post1.topic, user: build(:moderator))
expect(UserNotifications.get_context_posts(last, tu).count).to eq(2)
end
end