From 1a409848a84fc2ac014bbaab5ce187857eaed8d6 Mon Sep 17 00:00:00 2001 From: Travis Date: Mon, 15 Aug 2016 20:14:52 -0700 Subject: [PATCH] allow flagging the post of a deleted user (#7897) * Allowing the flagging of messages that were written by user accounts that have since been deleted * replacing ternary operator with else if, else paradigm * formatting fixes * fixing message in tests --- .../integration/chat/POST-chat.flag.test.js | 28 ++++++++++++++----- website/client/js/controllers/chatCtrl.js | 18 +++--------- website/server/controllers/api-v3/chat.js | 9 +++++- website/views/shared/modals/members.jade | 2 +- 4 files changed, 34 insertions(+), 23 deletions(-) diff --git a/test/api/v3/integration/chat/POST-chat.flag.test.js b/test/api/v3/integration/chat/POST-chat.flag.test.js index 51a3abb164..187a86614b 100644 --- a/test/api/v3/integration/chat/POST-chat.flag.test.js +++ b/test/api/v3/integration/chat/POST-chat.flag.test.js @@ -30,7 +30,7 @@ describe('POST /chat/:chatId/flag', () => { }); it('Returns an error when user tries to flag their own message', async () => { - let message = await user.post(`/groups/${group._id}/chat`, { message: TEST_MESSAGE }); + let message = await user.post(`/groups/${group._id}/chat`, {message: TEST_MESSAGE}); await expect(user.post(`/groups/${group._id}/chat/${message.message.id}/flag`)) .to.eventually.be.rejected.and.eql({ code: 404, @@ -40,8 +40,24 @@ describe('POST /chat/:chatId/flag', () => { }); it('Flags a chat', async () => { - let message = await anotherUser.post(`/groups/${group._id}/chat`, { message: TEST_MESSAGE}); - message = message.message; + let { message } = await anotherUser.post(`/groups/${group._id}/chat`, {message: TEST_MESSAGE}); + + let flagResult = await user.post(`/groups/${group._id}/chat/${message.id}/flag`); + expect(flagResult.flags[user._id]).to.equal(true); + expect(flagResult.flagCount).to.equal(1); + + let groupWithFlags = await admin.get(`/groups/${group._id}`); + + let messageToCheck = find(groupWithFlags.chat, {id: message.id}); + expect(messageToCheck.flags[user._id]).to.equal(true); + }); + + it('Flags a chat when the author\'s account was deleted', async () => { + let deletedUser = await generateUser(); + let { message } = await deletedUser.post(`/groups/${group._id}/chat`, {message: TEST_MESSAGE}); + await deletedUser.del('/user', { + password: 'password', + }); let flagResult = await user.post(`/groups/${group._id}/chat/${message.id}/flag`); expect(flagResult.flags[user._id]).to.equal(true); @@ -54,8 +70,7 @@ describe('POST /chat/:chatId/flag', () => { }); it('Flags a chat with a higher flag acount when an admin flags the message', async () => { - let message = await user.post(`/groups/${group._id}/chat`, { message: TEST_MESSAGE}); - message = message.message; + let { message } = await user.post(`/groups/${group._id}/chat`, {message: TEST_MESSAGE}); let flagResult = await admin.post(`/groups/${group._id}/chat/${message.id}/flag`); expect(flagResult.flags[admin._id]).to.equal(true); @@ -69,8 +84,7 @@ describe('POST /chat/:chatId/flag', () => { }); it('Returns an error when user tries to flag a message that is already flagged', async () => { - let message = await anotherUser.post(`/groups/${group._id}/chat`, { message: TEST_MESSAGE}); - message = message.message; + let { message } = await anotherUser.post(`/groups/${group._id}/chat`, {message: TEST_MESSAGE}); await user.post(`/groups/${group._id}/chat/${message.id}/flag`); diff --git a/website/client/js/controllers/chatCtrl.js b/website/client/js/controllers/chatCtrl.js index 935c12a310..976d5d4142 100644 --- a/website/client/js/controllers/chatCtrl.js +++ b/website/client/js/controllers/chatCtrl.js @@ -96,20 +96,10 @@ habitrpg.controller('ChatCtrl', ['$scope', 'Groups', 'Chat', 'User', '$http', 'A $scope.groupId = groupId; $scope.isSystemMessage = message.uuid === 'system'; - if (message.uuid === 'system') { - $rootScope.openModal('abuse-flag',{ - controller:'MemberModalCtrl', - scope: $scope - }); - } else { - Members.selectMember(message.uuid) - .then(function () { - $rootScope.openModal('abuse-flag',{ - controller:'MemberModalCtrl', - scope: $scope - }); - }); - } + $rootScope.openModal('abuse-flag',{ + controller:'MemberModalCtrl', + scope: $scope + }); } }; diff --git a/website/server/controllers/api-v3/chat.js b/website/server/controllers/api-v3/chat.js index 365dac2ba1..51838994bf 100644 --- a/website/server/controllers/api-v3/chat.js +++ b/website/server/controllers/api-v3/chat.js @@ -217,7 +217,14 @@ api.flagChat = { let reporterEmailContent = getUserInfo(user, ['email']).email; - let authorEmailContent = author ? getUserInfo(author, ['email']).email : 'system'; + let authorEmailContent; + if (author) { + authorEmailContent = getUserInfo(author, ['email']).email; + } else if (message.uuid === 'system') { + authorEmailContent = 'system'; + } else { + authorEmailContent = 'Author Account Deleted'; + } let groupUrl = getGroupUrl(group); diff --git a/website/views/shared/modals/members.jade b/website/views/shared/modals/members.jade index 2de1f72d94..ef49798624 100644 --- a/website/views/shared/modals/members.jade +++ b/website/views/shared/modals/members.jade @@ -102,7 +102,7 @@ script(type='text/ng-template', id='modals/send-gift.html') script(type='text/ng-template', id='modals/abuse-flag.html') .modal-header - h4!=env.t('abuseFlagModalHeading', {name: "{{isSystemMessage ? env.t('systemMessage') : profile.profile.name}}"}) + h4!=env.t('abuseFlagModalHeading', {name: "{{isSystemMessage ? env.t('systemMessage') : abuseObject.user}}"}) .modal-body blockquote markdown(text="abuseObject.text")