From 4b449914b822bb35bce6f1c41625a6320c0d326a Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 16 May 2017 16:06:24 -0400 Subject: [PATCH] FIX: admins could never remove self from messages --- app/models/topic.rb | 3 +++ spec/controllers/topics_controller_spec.rb | 14 +++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/models/topic.rb b/app/models/topic.rb index e0d6ff67e07..2b9643b3f83 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -698,6 +698,9 @@ SQL topic_user = topic_allowed_users.find_by(user_id: user.id) if topic_user topic_user.destroy + # we can not remove ourselves cause then we will end up adding + # ourselves in add_small_action + removed_by = Discourse.system_user if user.id == removed_by.id add_small_action(removed_by, "removed_user", user.username) return true end diff --git a/spec/controllers/topics_controller_spec.rb b/spec/controllers/topics_controller_spec.rb index 89b6d77b036..27a87c43abc 100644 --- a/spec/controllers/topics_controller_spec.rb +++ b/spec/controllers/topics_controller_spec.rb @@ -1134,9 +1134,21 @@ describe TopicsController do xhr :put, :make_banner, topic_id: topic.id expect(response).to be_success end - end + end + describe 'remove_allowed_user' do + it 'admin can be removed from a pm' do + + admin = log_in :admin + user = Fabricate(:user) + pm = create_post(user: user, archetype: 'private_message', target_usernames: [user.username, admin.username]) + + xhr :put, :remove_allowed_user, topic_id: pm.topic_id, username: admin.username + + expect(response.status).to eq(200) + expect(TopicAllowedUser.where(topic_id: pm.topic_id, user_id: admin.id).first).to eq(nil) + end end describe 'remove_banner' do