From 594d3e48d8a887bbf48ce4cc594c1c36c9640fb1 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 27 Jul 2020 16:26:25 +0200 Subject: Add abuse messages/states notifications --- .../api/notifications/moderation-notifications.ts | 128 ++++++++++++++++++++- 1 file changed, 125 insertions(+), 3 deletions(-) (limited to 'server/tests/api/notifications/moderation-notifications.ts') diff --git a/server/tests/api/notifications/moderation-notifications.ts b/server/tests/api/notifications/moderation-notifications.ts index 9faaacb91..721a445ab 100644 --- a/server/tests/api/notifications/moderation-notifications.ts +++ b/server/tests/api/notifications/moderation-notifications.ts @@ -2,6 +2,7 @@ import 'mocha' import { v4 as uuidv4 } from 'uuid' + import { addVideoCommentThread, addVideoToBlacklist, @@ -21,7 +22,9 @@ import { unfollow, updateCustomConfig, updateCustomSubConfig, - wait + wait, + updateAbuse, + addAbuseMessage } from '../../../../shared/extra-utils' import { ServerInfo, uploadVideo } from '../../../../shared/extra-utils/index' import { MockSmtpServer } from '../../../../shared/extra-utils/miscs/email' @@ -38,12 +41,15 @@ import { checkUserRegistered, checkVideoAutoBlacklistForModerators, checkVideoIsPublished, - prepareNotificationsTest + prepareNotificationsTest, + checkAbuseStateChange, + checkNewAbuseMessage } from '../../../../shared/extra-utils/users/user-notifications' import { addUserSubscription, removeUserSubscription } from '../../../../shared/extra-utils/users/user-subscriptions' import { CustomConfig } from '../../../../shared/models/server' import { UserNotification } from '../../../../shared/models/users' import { VideoPrivacy } from '../../../../shared/models/videos' +import { AbuseState } from '@shared/models' describe('Test moderation notifications', function () { let servers: ServerInfo[] = [] @@ -65,7 +71,7 @@ describe('Test moderation notifications', function () { adminNotificationsServer2 = res.adminNotificationsServer2 }) - describe('Video abuse for moderators notification', function () { + describe('Abuse for moderators notification', function () { let baseParams: CheckerBaseParams before(() => { @@ -169,6 +175,122 @@ describe('Test moderation notifications', function () { }) }) + describe('Abuse state change notification', function () { + let baseParams: CheckerBaseParams + let abuseId: number + + before(async function () { + baseParams = { + server: servers[0], + emails, + socketNotifications: userNotifications, + token: userAccessToken + } + + const name = 'abuse ' + uuidv4() + const resVideo = await uploadVideo(servers[0].url, userAccessToken, { name }) + const video = resVideo.body.video + + const res = await reportAbuse({ url: servers[0].url, token: userAccessToken, videoId: video.id, reason: 'super reason' }) + abuseId = res.body.abuse.id + }) + + it('Should send a notification to reporter if the abuse has been accepted', async function () { + this.timeout(10000) + + await updateAbuse(servers[0].url, servers[0].accessToken, abuseId, { state: AbuseState.ACCEPTED }) + await waitJobs(servers) + + await checkAbuseStateChange(baseParams, abuseId, AbuseState.ACCEPTED, 'presence') + }) + + it('Should send a notification to reporter if the abuse has been rejected', async function () { + this.timeout(10000) + + await updateAbuse(servers[0].url, servers[0].accessToken, abuseId, { state: AbuseState.REJECTED }) + await waitJobs(servers) + + await checkAbuseStateChange(baseParams, abuseId, AbuseState.REJECTED, 'presence') + }) + }) + + describe('New abuse message notification', function () { + let baseParamsUser: CheckerBaseParams + let baseParamsAdmin: CheckerBaseParams + let abuseId: number + let abuseId2: number + + before(async function () { + baseParamsUser = { + server: servers[0], + emails, + socketNotifications: userNotifications, + token: userAccessToken + } + + baseParamsAdmin = { + server: servers[0], + emails, + socketNotifications: adminNotifications, + token: servers[0].accessToken + } + + const name = 'abuse ' + uuidv4() + const resVideo = await uploadVideo(servers[0].url, userAccessToken, { name }) + const video = resVideo.body.video + + { + const res = await reportAbuse({ url: servers[0].url, token: userAccessToken, videoId: video.id, reason: 'super reason' }) + abuseId = res.body.abuse.id + } + + { + const res = await reportAbuse({ url: servers[0].url, token: userAccessToken, videoId: video.id, reason: 'super reason 2' }) + abuseId2 = res.body.abuse.id + } + }) + + it('Should send a notification to reporter on new message', async function () { + this.timeout(10000) + + const message = 'my super message to users' + await addAbuseMessage(servers[0].url, servers[0].accessToken, abuseId, message) + await waitJobs(servers) + + await checkNewAbuseMessage(baseParamsUser, abuseId, message, 'user_1@example.com', 'presence') + }) + + it('Should not send a notification to the admin if sent by the admin', async function () { + this.timeout(10000) + + const message = 'my super message that should not be sent to the admin' + await addAbuseMessage(servers[0].url, servers[0].accessToken, abuseId, message) + await waitJobs(servers) + + await checkNewAbuseMessage(baseParamsAdmin, abuseId, message, 'admin1@example.com', 'absence') + }) + + it('Should send a notification to moderators', async function () { + this.timeout(10000) + + const message = 'my super message to moderators' + await addAbuseMessage(servers[0].url, userAccessToken, abuseId2, message) + await waitJobs(servers) + + await checkNewAbuseMessage(baseParamsAdmin, abuseId2, message, 'admin1@example.com', 'presence') + }) + + it('Should not send a notification to reporter if sent by the reporter', async function () { + this.timeout(10000) + + const message = 'my super message that should not be sent to reporter' + await addAbuseMessage(servers[0].url, userAccessToken, abuseId2, message) + await waitJobs(servers) + + await checkNewAbuseMessage(baseParamsUser, abuseId2, message, 'user_1@example.com', 'absence') + }) + }) + describe('Video blacklist on my video', function () { let baseParams: CheckerBaseParams -- cgit v1.2.3