diff options
-rw-r--r-- | server/models/video/video-abuse.ts | 3 | ||||
-rw-r--r-- | server/tests/api/videos/video-abuse.ts | 30 |
2 files changed, 31 insertions, 2 deletions
diff --git a/server/models/video/video-abuse.ts b/server/models/video/video-abuse.ts index 285fb1fbc..628f1caa6 100644 --- a/server/models/video/video-abuse.ts +++ b/server/models/video/video-abuse.ts | |||
@@ -143,7 +143,8 @@ export enum ScopeNames { | |||
143 | 'SELECT count(DISTINCT "videoAbuse"."id") ' + | 143 | 'SELECT count(DISTINCT "videoAbuse"."id") ' + |
144 | 'FROM "videoAbuse" ' + | 144 | 'FROM "videoAbuse" ' + |
145 | `WHERE CAST("deletedVideo"->'channel'->'ownerAccount'->>'id' AS INTEGER) = "Video->VideoChannel"."accountId" ` + | 145 | `WHERE CAST("deletedVideo"->'channel'->'ownerAccount'->>'id' AS INTEGER) = "Video->VideoChannel"."accountId" ` + |
146 | `OR CAST("deletedVideo"->'channel'->'ownerAccount'->>'id' AS INTEGER) = CAST("VideoAbuseModel"."deletedVideo"->'channel'->'ownerAccount'->>'id' AS INTEGER) ` + | 146 | `OR CAST("deletedVideo"->'channel'->'ownerAccount'->>'id' AS INTEGER) = ` + |
147 | `CAST("VideoAbuseModel"."deletedVideo"->'channel'->'ownerAccount'->>'id' AS INTEGER) ` + | ||
147 | ')' | 148 | ')' |
148 | ), | 149 | ), |
149 | 'countReportsForReportee__deletedVideo' | 150 | 'countReportsForReportee__deletedVideo' |
diff --git a/server/tests/api/videos/video-abuse.ts b/server/tests/api/videos/video-abuse.ts index cd6df7267..8a8290e14 100644 --- a/server/tests/api/videos/video-abuse.ts +++ b/server/tests/api/videos/video-abuse.ts | |||
@@ -13,7 +13,8 @@ import { | |||
13 | ServerInfo, | 13 | ServerInfo, |
14 | setAccessTokensToServers, | 14 | setAccessTokensToServers, |
15 | updateVideoAbuse, | 15 | updateVideoAbuse, |
16 | uploadVideo | 16 | uploadVideo, |
17 | removeVideo | ||
17 | } from '../../../../shared/extra-utils/index' | 18 | } from '../../../../shared/extra-utils/index' |
18 | import { doubleFollow } from '../../../../shared/extra-utils/server/follows' | 19 | import { doubleFollow } from '../../../../shared/extra-utils/server/follows' |
19 | import { waitJobs } from '../../../../shared/extra-utils/server/jobs' | 20 | import { waitJobs } from '../../../../shared/extra-utils/server/jobs' |
@@ -97,6 +98,11 @@ describe('Test video abuses', function () { | |||
97 | expect(abuse.reporterAccount.name).to.equal('root') | 98 | expect(abuse.reporterAccount.name).to.equal('root') |
98 | expect(abuse.reporterAccount.host).to.equal('localhost:' + servers[0].port) | 99 | expect(abuse.reporterAccount.host).to.equal('localhost:' + servers[0].port) |
99 | expect(abuse.video.id).to.equal(servers[0].video.id) | 100 | expect(abuse.video.id).to.equal(servers[0].video.id) |
101 | expect(abuse.video.channel).to.exist | ||
102 | expect(abuse.count).to.equal(1) | ||
103 | expect(abuse.nth).to.equal(1) | ||
104 | expect(abuse.countReportsForReporter).to.equal(1) | ||
105 | expect(abuse.countReportsForReportee).to.equal(1) | ||
100 | 106 | ||
101 | const res2 = await getVideoAbusesList(servers[1].url, servers[1].accessToken) | 107 | const res2 = await getVideoAbusesList(servers[1].url, servers[1].accessToken) |
102 | expect(res2.body.total).to.equal(0) | 108 | expect(res2.body.total).to.equal(0) |
@@ -128,6 +134,8 @@ describe('Test video abuses', function () { | |||
128 | expect(abuse1.state.id).to.equal(VideoAbuseState.PENDING) | 134 | expect(abuse1.state.id).to.equal(VideoAbuseState.PENDING) |
129 | expect(abuse1.state.label).to.equal('Pending') | 135 | expect(abuse1.state.label).to.equal('Pending') |
130 | expect(abuse1.moderationComment).to.be.null | 136 | expect(abuse1.moderationComment).to.be.null |
137 | expect(abuse1.count).to.equal(1) | ||
138 | expect(abuse1.nth).to.equal(1) | ||
131 | 139 | ||
132 | const abuse2: VideoAbuse = res1.body.data[1] | 140 | const abuse2: VideoAbuse = res1.body.data[1] |
133 | expect(abuse2.reason).to.equal('my super bad reason 2') | 141 | expect(abuse2.reason).to.equal('my super bad reason 2') |
@@ -221,6 +229,26 @@ describe('Test video abuses', function () { | |||
221 | } | 229 | } |
222 | }) | 230 | }) |
223 | 231 | ||
232 | it('Should keep the video abuse when deleting the video', async function () { | ||
233 | this.timeout(10000) | ||
234 | |||
235 | await removeVideo(servers[1].url, servers[1].accessToken, abuseServer2.video.uuid) | ||
236 | |||
237 | await waitJobs(servers) | ||
238 | |||
239 | { | ||
240 | const res = await getVideoAbusesList(servers[1].url, servers[1].accessToken) | ||
241 | expect(res.body.total).to.equal(2) | ||
242 | expect(res.body.data.length).to.equal(2) | ||
243 | expect(res.body.data[0].id).to.equal(abuseServer2.id) | ||
244 | |||
245 | const abuse: VideoAbuse = res.body.data[1] | ||
246 | expect(abuse.video.deleted).to.be.true | ||
247 | expect(abuse.video.id).to.equal(abuseServer2.video.id) | ||
248 | expect(abuse.video.channel).to.exist | ||
249 | } | ||
250 | }) | ||
251 | |||
224 | it('Should delete the video abuse', async function () { | 252 | it('Should delete the video abuse', async function () { |
225 | this.timeout(10000) | 253 | this.timeout(10000) |
226 | 254 | ||