aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2021-07-07 16:02:46 +0200
committerChocobozzz <me@florianbigard.com>2021-07-20 15:27:17 +0200
commit5f8bd4cbb178290da7d8f81e996f19f0eccc8e4c (patch)
tree02d056121540652b0867fc2ef56699138afe6271
parent9fff08cf83f34339df7ed4ac770e1dee536adf9d (diff)
downloadPeerTube-5f8bd4cbb178290da7d8f81e996f19f0eccc8e4c.tar.gz
PeerTube-5f8bd4cbb178290da7d8f81e996f19f0eccc8e4c.tar.zst
PeerTube-5f8bd4cbb178290da7d8f81e996f19f0eccc8e4c.zip
Introduce blocklist command
-rw-r--r--server/tests/api/moderation/abuses.ts14
-rw-r--r--server/tests/api/moderation/blocklist-notification.ts41
-rw-r--r--server/tests/api/moderation/blocklist.ts100
-rw-r--r--server/tests/api/notifications/comments-notifications.ts10
-rw-r--r--server/tests/api/videos/video-playlists.ts26
-rw-r--r--server/tests/api/videos/videos-overview.ts3
-rw-r--r--server/tests/external-plugins/auto-mute.ts9
-rw-r--r--server/tests/feeds/feeds.ts29
-rw-r--r--shared/extra-utils/server/servers.ts4
-rw-r--r--shared/extra-utils/socket/socket-io-command.ts2
-rw-r--r--shared/extra-utils/users/blocklist-command.ts135
-rw-r--r--shared/extra-utils/users/blocklist.ts238
-rw-r--r--shared/extra-utils/users/index.ts4
13 files changed, 230 insertions, 385 deletions
diff --git a/server/tests/api/moderation/abuses.ts b/server/tests/api/moderation/abuses.ts
index 124833cf6..a2bd07b12 100644
--- a/server/tests/api/moderation/abuses.ts
+++ b/server/tests/api/moderation/abuses.ts
@@ -4,8 +4,6 @@ import 'mocha'
4import * as chai from 'chai' 4import * as chai from 'chai'
5import { 5import {
6 AbusesCommand, 6 AbusesCommand,
7 addAccountToServerBlocklist,
8 addServerToServerBlocklist,
9 addVideoCommentThread, 7 addVideoCommentThread,
10 cleanupTests, 8 cleanupTests,
11 createUser, 9 createUser,
@@ -16,8 +14,6 @@ import {
16 getVideoCommentThreads, 14 getVideoCommentThreads,
17 getVideoIdFromUUID, 15 getVideoIdFromUUID,
18 getVideosList, 16 getVideosList,
19 removeAccountFromServerBlocklist,
20 removeServerFromServerBlocklist,
21 removeUser, 17 removeUser,
22 removeVideo, 18 removeVideo,
23 ServerInfo, 19 ServerInfo,
@@ -27,7 +23,7 @@ import {
27 userLogin, 23 userLogin,
28 waitJobs 24 waitJobs
29} from '@shared/extra-utils' 25} from '@shared/extra-utils'
30import { AbuseMessage, AbusePredefinedReasonsString, AbuseState, Account, AdminAbuse, UserAbuse, VideoComment } from '@shared/models' 26import { AbuseMessage, AbusePredefinedReasonsString, AbuseState, AdminAbuse, UserAbuse, VideoComment } from '@shared/models'
31 27
32const expect = chai.expect 28const expect = chai.expect
33 29
@@ -225,7 +221,7 @@ describe('Test abuses', function () {
225 const accountToBlock = 'root@' + servers[1].host 221 const accountToBlock = 'root@' + servers[1].host
226 222
227 { 223 {
228 await addAccountToServerBlocklist(servers[0].url, servers[0].accessToken, accountToBlock) 224 await servers[0].blocklistCommand.addToServerBlocklist({ account: accountToBlock })
229 225
230 const body = await commands[0].getAdminList() 226 const body = await commands[0].getAdminList()
231 expect(body.total).to.equal(2) 227 expect(body.total).to.equal(2)
@@ -235,7 +231,7 @@ describe('Test abuses', function () {
235 } 231 }
236 232
237 { 233 {
238 await removeAccountFromServerBlocklist(servers[0].url, servers[0].accessToken, accountToBlock) 234 await servers[0].blocklistCommand.removeFromServerBlocklist({ account: accountToBlock })
239 235
240 const body = await commands[0].getAdminList() 236 const body = await commands[0].getAdminList()
241 expect(body.total).to.equal(3) 237 expect(body.total).to.equal(3)
@@ -246,7 +242,7 @@ describe('Test abuses', function () {
246 const serverToBlock = servers[1].host 242 const serverToBlock = servers[1].host
247 243
248 { 244 {
249 await addServerToServerBlocklist(servers[0].url, servers[0].accessToken, servers[1].host) 245 await servers[0].blocklistCommand.addToServerBlocklist({ server: serverToBlock })
250 246
251 const body = await commands[0].getAdminList() 247 const body = await commands[0].getAdminList()
252 expect(body.total).to.equal(2) 248 expect(body.total).to.equal(2)
@@ -256,7 +252,7 @@ describe('Test abuses', function () {
256 } 252 }
257 253
258 { 254 {
259 await removeServerFromServerBlocklist(servers[0].url, servers[0].accessToken, serverToBlock) 255 await servers[0].blocklistCommand.removeFromServerBlocklist({ server: serverToBlock })
260 256
261 const body = await commands[0].getAdminList() 257 const body = await commands[0].getAdminList()
262 expect(body.total).to.equal(3) 258 expect(body.total).to.equal(3)
diff --git a/server/tests/api/moderation/blocklist-notification.ts b/server/tests/api/moderation/blocklist-notification.ts
index 4fb3c95f2..99da64a2d 100644
--- a/server/tests/api/moderation/blocklist-notification.ts
+++ b/server/tests/api/moderation/blocklist-notification.ts
@@ -2,30 +2,23 @@
2 2
3import 'mocha' 3import 'mocha'
4import * as chai from 'chai' 4import * as chai from 'chai'
5import { getUserNotifications, markAsReadAllNotifications } from '@shared/extra-utils/users/user-notifications'
6import { addUserSubscription, removeUserSubscription } from '@shared/extra-utils/users/user-subscriptions'
7import { UserNotification, UserNotificationType } from '@shared/models'
8import { 5import {
6 addUserSubscription,
7 addVideoCommentThread,
9 cleanupTests, 8 cleanupTests,
10 createUser, 9 createUser,
11 doubleFollow, 10 doubleFollow,
12 flushAndRunMultipleServers, 11 flushAndRunMultipleServers,
12 getUserNotifications,
13 markAsReadAllNotifications,
14 removeUserSubscription,
13 ServerInfo, 15 ServerInfo,
16 setAccessTokensToServers,
14 uploadVideo, 17 uploadVideo,
15 userLogin 18 userLogin,
16} from '../../../../shared/extra-utils/index' 19 waitJobs
17import { waitJobs } from '../../../../shared/extra-utils/server/jobs' 20} from '@shared/extra-utils'
18import { 21import { UserNotification, UserNotificationType } from '@shared/models'
19 addAccountToAccountBlocklist,
20 addAccountToServerBlocklist,
21 addServerToAccountBlocklist,
22 addServerToServerBlocklist,
23 removeAccountFromAccountBlocklist,
24 removeAccountFromServerBlocklist,
25 removeServerFromAccountBlocklist
26} from '../../../../shared/extra-utils/users/blocklist'
27import { setAccessTokensToServers } from '../../../../shared/extra-utils/users/login'
28import { addVideoCommentThread } from '../../../../shared/extra-utils/videos/video-comments'
29 22
30const expect = chai.expect 23const expect = chai.expect
31 24
@@ -134,7 +127,7 @@ describe('Test blocklist', function () {
134 it('Should block an account', async function () { 127 it('Should block an account', async function () {
135 this.timeout(10000) 128 this.timeout(10000)
136 129
137 await addAccountToAccountBlocklist(servers[0].url, userToken1, 'user3@' + servers[1].host) 130 await servers[0].blocklistCommand.addToMyBlocklist({ token: userToken1, account: 'user3@' + servers[1].host })
138 await waitJobs(servers) 131 await waitJobs(servers)
139 }) 132 })
140 133
@@ -147,7 +140,7 @@ describe('Test blocklist', function () {
147 140
148 await checkNotifications(servers[0].url, userToken2, notifs) 141 await checkNotifications(servers[0].url, userToken2, notifs)
149 142
150 await removeAccountFromAccountBlocklist(servers[0].url, userToken1, 'user3@' + servers[1].host) 143 await servers[0].blocklistCommand.removeFromMyBlocklist({ token: userToken1, account: 'user3@' + servers[1].host })
151 }) 144 })
152 }) 145 })
153 146
@@ -167,7 +160,7 @@ describe('Test blocklist', function () {
167 it('Should block an account', async function () { 160 it('Should block an account', async function () {
168 this.timeout(10000) 161 this.timeout(10000)
169 162
170 await addServerToAccountBlocklist(servers[0].url, userToken1, servers[1].host) 163 await servers[0].blocklistCommand.addToMyBlocklist({ token: userToken1, server: servers[1].host })
171 await waitJobs(servers) 164 await waitJobs(servers)
172 }) 165 })
173 166
@@ -180,7 +173,7 @@ describe('Test blocklist', function () {
180 173
181 await checkNotifications(servers[0].url, userToken2, notifs) 174 await checkNotifications(servers[0].url, userToken2, notifs)
182 175
183 await removeServerFromAccountBlocklist(servers[0].url, userToken1, servers[1].host) 176 await servers[0].blocklistCommand.removeFromMyBlocklist({ token: userToken1, server: servers[1].host })
184 }) 177 })
185 }) 178 })
186 179
@@ -207,7 +200,7 @@ describe('Test blocklist', function () {
207 it('Should block an account', async function () { 200 it('Should block an account', async function () {
208 this.timeout(10000) 201 this.timeout(10000)
209 202
210 await addAccountToServerBlocklist(servers[0].url, servers[0].accessToken, 'user3@' + servers[1].host) 203 await servers[0].blocklistCommand.addToServerBlocklist({ account: 'user3@' + servers[1].host })
211 await waitJobs(servers) 204 await waitJobs(servers)
212 }) 205 })
213 206
@@ -215,7 +208,7 @@ describe('Test blocklist', function () {
215 await checkNotifications(servers[0].url, userToken1, []) 208 await checkNotifications(servers[0].url, userToken1, [])
216 await checkNotifications(servers[0].url, userToken2, []) 209 await checkNotifications(servers[0].url, userToken2, [])
217 210
218 await removeAccountFromServerBlocklist(servers[0].url, servers[0].accessToken, 'user3@' + servers[1].host) 211 await servers[0].blocklistCommand.removeFromServerBlocklist({ account: 'user3@' + servers[1].host })
219 }) 212 })
220 }) 213 })
221 214
@@ -242,7 +235,7 @@ describe('Test blocklist', function () {
242 it('Should block an account', async function () { 235 it('Should block an account', async function () {
243 this.timeout(10000) 236 this.timeout(10000)
244 237
245 await addServerToServerBlocklist(servers[0].url, servers[0].accessToken, servers[1].host) 238 await servers[0].blocklistCommand.addToServerBlocklist({ server: servers[1].host })
246 await waitJobs(servers) 239 await waitJobs(servers)
247 }) 240 })
248 241
diff --git a/server/tests/api/moderation/blocklist.ts b/server/tests/api/moderation/blocklist.ts
index 9ca6324c2..1b8860571 100644
--- a/server/tests/api/moderation/blocklist.ts
+++ b/server/tests/api/moderation/blocklist.ts
@@ -3,46 +3,27 @@
3import 'mocha' 3import 'mocha'
4import * as chai from 'chai' 4import * as chai from 'chai'
5import { 5import {
6 addAccountToAccountBlocklist,
7 addAccountToServerBlocklist,
8 addServerToAccountBlocklist,
9 addServerToServerBlocklist,
10 addVideoCommentReply, 6 addVideoCommentReply,
11 addVideoCommentThread, 7 addVideoCommentThread,
8 BlocklistCommand,
12 cleanupTests, 9 cleanupTests,
13 createUser, 10 createUser,
14 deleteVideoComment, 11 deleteVideoComment,
15 doubleFollow, 12 doubleFollow,
16 findCommentId, 13 findCommentId,
17 flushAndRunMultipleServers, 14 flushAndRunMultipleServers,
18 getAccountBlocklistByAccount,
19 getAccountBlocklistByServer,
20 getServerBlocklistByAccount,
21 getServerBlocklistByServer,
22 getUserNotifications, 15 getUserNotifications,
23 getVideoCommentThreads, 16 getVideoCommentThreads,
24 getVideosList, 17 getVideosList,
25 getVideosListWithToken, 18 getVideosListWithToken,
26 getVideoThreadComments, 19 getVideoThreadComments,
27 removeAccountFromAccountBlocklist,
28 removeAccountFromServerBlocklist,
29 removeServerFromAccountBlocklist,
30 removeServerFromServerBlocklist,
31 ServerInfo, 20 ServerInfo,
32 setAccessTokensToServers, 21 setAccessTokensToServers,
33 uploadVideo, 22 uploadVideo,
34 userLogin, 23 userLogin,
35 waitJobs 24 waitJobs
36} from '@shared/extra-utils' 25} from '@shared/extra-utils'
37import { 26import { UserNotification, UserNotificationType, Video, VideoComment, VideoCommentThreadTree } from '@shared/models'
38 AccountBlock,
39 ServerBlock,
40 UserNotification,
41 UserNotificationType,
42 Video,
43 VideoComment,
44 VideoCommentThreadTree
45} from '@shared/models'
46 27
47const expect = chai.expect 28const expect = chai.expect
48 29
@@ -108,6 +89,8 @@ describe('Test blocklist', function () {
108 let userModeratorToken: string 89 let userModeratorToken: string
109 let userToken2: string 90 let userToken2: string
110 91
92 let command: BlocklistCommand
93
111 before(async function () { 94 before(async function () {
112 this.timeout(120000) 95 this.timeout(120000)
113 96
@@ -167,6 +150,8 @@ describe('Test blocklist', function () {
167 } 150 }
168 151
169 await waitJobs(servers) 152 await waitJobs(servers)
153
154 command = servers[0].blocklistCommand
170 }) 155 })
171 156
172 describe('User blocklist', function () { 157 describe('User blocklist', function () {
@@ -181,7 +166,7 @@ describe('Test blocklist', function () {
181 }) 166 })
182 167
183 it('Should block a remote account', async function () { 168 it('Should block a remote account', async function () {
184 await addAccountToAccountBlocklist(servers[0].url, servers[0].accessToken, 'user2@localhost:' + servers[1].port) 169 await command.addToMyBlocklist({ account: 'user2@localhost:' + servers[1].port })
185 }) 170 })
186 171
187 it('Should hide its videos', async function () { 172 it('Should hide its videos', async function () {
@@ -195,7 +180,7 @@ describe('Test blocklist', function () {
195 }) 180 })
196 181
197 it('Should block a local account', async function () { 182 it('Should block a local account', async function () {
198 await addAccountToAccountBlocklist(servers[0].url, servers[0].accessToken, 'user1') 183 await command.addToMyBlocklist({ account: 'user1' })
199 }) 184 })
200 185
201 it('Should hide its videos', async function () { 186 it('Should hide its videos', async function () {
@@ -251,12 +236,10 @@ describe('Test blocklist', function () {
251 236
252 it('Should list blocked accounts', async function () { 237 it('Should list blocked accounts', async function () {
253 { 238 {
254 const res = await getAccountBlocklistByAccount(servers[0].url, servers[0].accessToken, 0, 1, 'createdAt') 239 const body = await command.listMyAccountBlocklist({ start: 0, count: 1, sort: 'createdAt' })
255 const blocks: AccountBlock[] = res.body.data 240 expect(body.total).to.equal(2)
256 241
257 expect(res.body.total).to.equal(2) 242 const block = body.data[0]
258
259 const block = blocks[0]
260 expect(block.byAccount.displayName).to.equal('root') 243 expect(block.byAccount.displayName).to.equal('root')
261 expect(block.byAccount.name).to.equal('root') 244 expect(block.byAccount.name).to.equal('root')
262 expect(block.blockedAccount.displayName).to.equal('user2') 245 expect(block.blockedAccount.displayName).to.equal('user2')
@@ -265,12 +248,10 @@ describe('Test blocklist', function () {
265 } 248 }
266 249
267 { 250 {
268 const res = await getAccountBlocklistByAccount(servers[0].url, servers[0].accessToken, 1, 2, 'createdAt') 251 const body = await command.listMyAccountBlocklist({ start: 1, count: 2, sort: 'createdAt' })
269 const blocks: AccountBlock[] = res.body.data 252 expect(body.total).to.equal(2)
270
271 expect(res.body.total).to.equal(2)
272 253
273 const block = blocks[0] 254 const block = body.data[0]
274 expect(block.byAccount.displayName).to.equal('root') 255 expect(block.byAccount.displayName).to.equal('root')
275 expect(block.byAccount.name).to.equal('root') 256 expect(block.byAccount.name).to.equal('root')
276 expect(block.blockedAccount.displayName).to.equal('user1') 257 expect(block.blockedAccount.displayName).to.equal('user1')
@@ -335,7 +316,7 @@ describe('Test blocklist', function () {
335 }) 316 })
336 317
337 it('Should unblock the remote account', async function () { 318 it('Should unblock the remote account', async function () {
338 await removeAccountFromAccountBlocklist(servers[0].url, servers[0].accessToken, 'user2@localhost:' + servers[1].port) 319 await command.removeFromMyBlocklist({ account: 'user2@localhost:' + servers[1].port })
339 }) 320 })
340 321
341 it('Should display its videos', async function () { 322 it('Should display its videos', async function () {
@@ -374,7 +355,7 @@ describe('Test blocklist', function () {
374 }) 355 })
375 356
376 it('Should unblock the local account', async function () { 357 it('Should unblock the local account', async function () {
377 await removeAccountFromAccountBlocklist(servers[0].url, servers[0].accessToken, 'user1') 358 await command.removeFromMyBlocklist({ account: 'user1' })
378 }) 359 })
379 360
380 it('Should display its comments', function () { 361 it('Should display its comments', function () {
@@ -402,6 +383,7 @@ describe('Test blocklist', function () {
402 }) 383 })
403 384
404 describe('When managing server blocklist', function () { 385 describe('When managing server blocklist', function () {
386
405 it('Should list all videos', function () { 387 it('Should list all videos', function () {
406 return checkAllVideos(servers[0].url, servers[0].accessToken) 388 return checkAllVideos(servers[0].url, servers[0].accessToken)
407 }) 389 })
@@ -411,7 +393,7 @@ describe('Test blocklist', function () {
411 }) 393 })
412 394
413 it('Should block a remote server', async function () { 395 it('Should block a remote server', async function () {
414 await addServerToAccountBlocklist(servers[0].url, servers[0].accessToken, 'localhost:' + servers[1].port) 396 await command.addToMyBlocklist({ server: 'localhost:' + servers[1].port })
415 }) 397 })
416 398
417 it('Should hide its videos', async function () { 399 it('Should hide its videos', async function () {
@@ -464,19 +446,17 @@ describe('Test blocklist', function () {
464 }) 446 })
465 447
466 it('Should list blocked servers', async function () { 448 it('Should list blocked servers', async function () {
467 const res = await getServerBlocklistByAccount(servers[0].url, servers[0].accessToken, 0, 1, 'createdAt') 449 const body = await command.listMyServerBlocklist({ start: 0, count: 1, sort: 'createdAt' })
468 const blocks: ServerBlock[] = res.body.data 450 expect(body.total).to.equal(1)
469
470 expect(res.body.total).to.equal(1)
471 451
472 const block = blocks[0] 452 const block = body.data[0]
473 expect(block.byAccount.displayName).to.equal('root') 453 expect(block.byAccount.displayName).to.equal('root')
474 expect(block.byAccount.name).to.equal('root') 454 expect(block.byAccount.name).to.equal('root')
475 expect(block.blockedServer.host).to.equal('localhost:' + servers[1].port) 455 expect(block.blockedServer.host).to.equal('localhost:' + servers[1].port)
476 }) 456 })
477 457
478 it('Should unblock the remote server', async function () { 458 it('Should unblock the remote server', async function () {
479 await removeServerFromAccountBlocklist(servers[0].url, servers[0].accessToken, 'localhost:' + servers[1].port) 459 await command.removeFromMyBlocklist({ server: 'localhost:' + servers[1].port })
480 }) 460 })
481 461
482 it('Should display its videos', function () { 462 it('Should display its videos', function () {
@@ -524,7 +504,7 @@ describe('Test blocklist', function () {
524 }) 504 })
525 505
526 it('Should block a remote account', async function () { 506 it('Should block a remote account', async function () {
527 await addAccountToServerBlocklist(servers[0].url, servers[0].accessToken, 'user2@localhost:' + servers[1].port) 507 await command.addToServerBlocklist({ account: 'user2@localhost:' + servers[1].port })
528 }) 508 })
529 509
530 it('Should hide its videos', async function () { 510 it('Should hide its videos', async function () {
@@ -540,7 +520,7 @@ describe('Test blocklist', function () {
540 }) 520 })
541 521
542 it('Should block a local account', async function () { 522 it('Should block a local account', async function () {
543 await addAccountToServerBlocklist(servers[0].url, servers[0].accessToken, 'user1') 523 await command.addToServerBlocklist({ account: 'user1' })
544 }) 524 })
545 525
546 it('Should hide its videos', async function () { 526 it('Should hide its videos', async function () {
@@ -598,12 +578,10 @@ describe('Test blocklist', function () {
598 578
599 it('Should list blocked accounts', async function () { 579 it('Should list blocked accounts', async function () {
600 { 580 {
601 const res = await getAccountBlocklistByServer(servers[0].url, servers[0].accessToken, 0, 1, 'createdAt') 581 const body = await command.listServerAccountBlocklist({ start: 0, count: 1, sort: 'createdAt' })
602 const blocks: AccountBlock[] = res.body.data 582 expect(body.total).to.equal(2)
603
604 expect(res.body.total).to.equal(2)
605 583
606 const block = blocks[0] 584 const block = body.data[0]
607 expect(block.byAccount.displayName).to.equal('peertube') 585 expect(block.byAccount.displayName).to.equal('peertube')
608 expect(block.byAccount.name).to.equal('peertube') 586 expect(block.byAccount.name).to.equal('peertube')
609 expect(block.blockedAccount.displayName).to.equal('user2') 587 expect(block.blockedAccount.displayName).to.equal('user2')
@@ -612,12 +590,10 @@ describe('Test blocklist', function () {
612 } 590 }
613 591
614 { 592 {
615 const res = await getAccountBlocklistByServer(servers[0].url, servers[0].accessToken, 1, 2, 'createdAt') 593 const body = await command.listServerAccountBlocklist({ start: 1, count: 2, sort: 'createdAt' })
616 const blocks: AccountBlock[] = res.body.data 594 expect(body.total).to.equal(2)
617 595
618 expect(res.body.total).to.equal(2) 596 const block = body.data[0]
619
620 const block = blocks[0]
621 expect(block.byAccount.displayName).to.equal('peertube') 597 expect(block.byAccount.displayName).to.equal('peertube')
622 expect(block.byAccount.name).to.equal('peertube') 598 expect(block.byAccount.name).to.equal('peertube')
623 expect(block.blockedAccount.displayName).to.equal('user1') 599 expect(block.blockedAccount.displayName).to.equal('user1')
@@ -627,7 +603,7 @@ describe('Test blocklist', function () {
627 }) 603 })
628 604
629 it('Should unblock the remote account', async function () { 605 it('Should unblock the remote account', async function () {
630 await removeAccountFromServerBlocklist(servers[0].url, servers[0].accessToken, 'user2@localhost:' + servers[1].port) 606 await command.removeFromServerBlocklist({ account: 'user2@localhost:' + servers[1].port })
631 }) 607 })
632 608
633 it('Should display its videos', async function () { 609 it('Should display its videos', async function () {
@@ -643,7 +619,7 @@ describe('Test blocklist', function () {
643 }) 619 })
644 620
645 it('Should unblock the local account', async function () { 621 it('Should unblock the local account', async function () {
646 await removeAccountFromServerBlocklist(servers[0].url, servers[0].accessToken, 'user1') 622 await command.removeFromServerBlocklist({ account: 'user1' })
647 }) 623 })
648 624
649 it('Should display its comments', async function () { 625 it('Should display its comments', async function () {
@@ -686,7 +662,7 @@ describe('Test blocklist', function () {
686 }) 662 })
687 663
688 it('Should block a remote server', async function () { 664 it('Should block a remote server', async function () {
689 await addServerToServerBlocklist(servers[0].url, servers[0].accessToken, 'localhost:' + servers[1].port) 665 await command.addToServerBlocklist({ server: 'localhost:' + servers[1].port })
690 }) 666 })
691 667
692 it('Should hide its videos', async function () { 668 it('Should hide its videos', async function () {
@@ -758,19 +734,17 @@ describe('Test blocklist', function () {
758 }) 734 })
759 735
760 it('Should list blocked servers', async function () { 736 it('Should list blocked servers', async function () {
761 const res = await getServerBlocklistByServer(servers[0].url, servers[0].accessToken, 0, 1, 'createdAt') 737 const body = await command.listServerServerBlocklist({ start: 0, count: 1, sort: 'createdAt' })
762 const blocks: ServerBlock[] = res.body.data 738 expect(body.total).to.equal(1)
763
764 expect(res.body.total).to.equal(1)
765 739
766 const block = blocks[0] 740 const block = body.data[0]
767 expect(block.byAccount.displayName).to.equal('peertube') 741 expect(block.byAccount.displayName).to.equal('peertube')
768 expect(block.byAccount.name).to.equal('peertube') 742 expect(block.byAccount.name).to.equal('peertube')
769 expect(block.blockedServer.host).to.equal('localhost:' + servers[1].port) 743 expect(block.blockedServer.host).to.equal('localhost:' + servers[1].port)
770 }) 744 })
771 745
772 it('Should unblock the remote server', async function () { 746 it('Should unblock the remote server', async function () {
773 await removeServerFromServerBlocklist(servers[0].url, servers[0].accessToken, 'localhost:' + servers[1].port) 747 await command.removeFromServerBlocklist({ server: 'localhost:' + servers[1].port })
774 }) 748 })
775 749
776 it('Should list all videos', async function () { 750 it('Should list all videos', async function () {
diff --git a/server/tests/api/notifications/comments-notifications.ts b/server/tests/api/notifications/comments-notifications.ts
index d2badf237..13fcee843 100644
--- a/server/tests/api/notifications/comments-notifications.ts
+++ b/server/tests/api/notifications/comments-notifications.ts
@@ -3,7 +3,6 @@
3import 'mocha' 3import 'mocha'
4import * as chai from 'chai' 4import * as chai from 'chai'
5import { 5import {
6 addAccountToAccountBlocklist,
7 addVideoCommentReply, 6 addVideoCommentReply,
8 addVideoCommentThread, 7 addVideoCommentThread,
9 checkCommentMention, 8 checkCommentMention,
@@ -14,7 +13,6 @@ import {
14 getVideoThreadComments, 13 getVideoThreadComments,
15 MockSmtpServer, 14 MockSmtpServer,
16 prepareNotificationsTest, 15 prepareNotificationsTest,
17 removeAccountFromAccountBlocklist,
18 ServerInfo, 16 ServerInfo,
19 updateMyUser, 17 updateMyUser,
20 uploadVideo, 18 uploadVideo,
@@ -86,7 +84,7 @@ describe('Test comments notifications', function () {
86 it('Should not send a new comment notification if the account is muted', async function () { 84 it('Should not send a new comment notification if the account is muted', async function () {
87 this.timeout(20000) 85 this.timeout(20000)
88 86
89 await addAccountToAccountBlocklist(servers[0].url, userAccessToken, 'root') 87 await servers[0].blocklistCommand.addToMyBlocklist({ token: userAccessToken, account: 'root' })
90 88
91 const resVideo = await uploadVideo(servers[0].url, userAccessToken, { name: 'super video' }) 89 const resVideo = await uploadVideo(servers[0].url, userAccessToken, { name: 'super video' })
92 const uuid = resVideo.body.video.uuid 90 const uuid = resVideo.body.video.uuid
@@ -97,7 +95,7 @@ describe('Test comments notifications', function () {
97 await waitJobs(servers) 95 await waitJobs(servers)
98 await checkNewCommentOnMyVideo(baseParams, uuid, commentId, commentId, 'absence') 96 await checkNewCommentOnMyVideo(baseParams, uuid, commentId, commentId, 'absence')
99 97
100 await removeAccountFromAccountBlocklist(servers[0].url, userAccessToken, 'root') 98 await servers[0].blocklistCommand.removeFromMyBlocklist({ token: userAccessToken, account: 'root' })
101 }) 99 })
102 100
103 it('Should send a new comment notification after a local comment on my video', async function () { 101 it('Should send a new comment notification after a local comment on my video', async function () {
@@ -244,7 +242,7 @@ describe('Test comments notifications', function () {
244 it('Should not send a new mention notification if the account is muted', async function () { 242 it('Should not send a new mention notification if the account is muted', async function () {
245 this.timeout(10000) 243 this.timeout(10000)
246 244
247 await addAccountToAccountBlocklist(servers[0].url, userAccessToken, 'root') 245 await servers[0].blocklistCommand.addToMyBlocklist({ token: userAccessToken, account: 'root' })
248 246
249 const resVideo = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'super video' }) 247 const resVideo = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'super video' })
250 const uuid = resVideo.body.video.uuid 248 const uuid = resVideo.body.video.uuid
@@ -255,7 +253,7 @@ describe('Test comments notifications', function () {
255 await waitJobs(servers) 253 await waitJobs(servers)
256 await checkCommentMention(baseParams, uuid, commentId, commentId, 'super root name', 'absence') 254 await checkCommentMention(baseParams, uuid, commentId, commentId, 'super root name', 'absence')
257 255
258 await removeAccountFromAccountBlocklist(servers[0].url, userAccessToken, 'root') 256 await servers[0].blocklistCommand.removeFromMyBlocklist({ token: userAccessToken, account: 'root' })
259 }) 257 })
260 258
261 it('Should not send a new mention notification if the remote account mention a local account', async function () { 259 it('Should not send a new mention notification if the remote account mention a local account', async function () {
diff --git a/server/tests/api/videos/video-playlists.ts b/server/tests/api/videos/video-playlists.ts
index 28f68dcfe..90189721a 100644
--- a/server/tests/api/videos/video-playlists.ts
+++ b/server/tests/api/videos/video-playlists.ts
@@ -4,10 +4,6 @@ import 'mocha'
4import * as chai from 'chai' 4import * as chai from 'chai'
5import { HttpStatusCode } from '@shared/core-utils' 5import { HttpStatusCode } from '@shared/core-utils'
6import { 6import {
7 addAccountToAccountBlocklist,
8 addAccountToServerBlocklist,
9 addServerToAccountBlocklist,
10 addServerToServerBlocklist,
11 addVideoChannel, 7 addVideoChannel,
12 addVideoInPlaylist, 8 addVideoInPlaylist,
13 addVideoToBlacklist, 9 addVideoToBlacklist,
@@ -31,10 +27,6 @@ import {
31 getVideoPlaylistPrivacies, 27 getVideoPlaylistPrivacies,
32 getVideoPlaylistsList, 28 getVideoPlaylistsList,
33 getVideoPlaylistWithToken, 29 getVideoPlaylistWithToken,
34 removeAccountFromAccountBlocklist,
35 removeAccountFromServerBlocklist,
36 removeServerFromAccountBlocklist,
37 removeServerFromServerBlocklist,
38 removeUser, 30 removeUser,
39 removeVideoFromBlacklist, 31 removeVideoFromBlacklist,
40 removeVideoFromPlaylist, 32 removeVideoFromPlaylist,
@@ -760,56 +752,58 @@ describe('Test video playlists', function () {
760 it('Should update the element type if the account or server of the video is blocked', async function () { 752 it('Should update the element type if the account or server of the video is blocked', async function () {
761 this.timeout(90000) 753 this.timeout(90000)
762 754
755 const command = servers[0].blocklistCommand
756
763 const name = 'video 90' 757 const name = 'video 90'
764 const position = 2 758 const position = 2
765 759
766 { 760 {
767 await addAccountToAccountBlocklist(servers[0].url, userAccessTokenServer1, 'root@localhost:' + servers[1].port) 761 await command.addToMyBlocklist({ token: userAccessTokenServer1, account: 'root@localhost:' + servers[1].port })
768 await waitJobs(servers) 762 await waitJobs(servers)
769 763
770 await checkPlaylistElementType(groupUser1, playlistServer1UUID2, VideoPlaylistElementType.UNAVAILABLE, position, name, 3) 764 await checkPlaylistElementType(groupUser1, playlistServer1UUID2, VideoPlaylistElementType.UNAVAILABLE, position, name, 3)
771 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3) 765 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3)
772 766
773 await removeAccountFromAccountBlocklist(servers[0].url, userAccessTokenServer1, 'root@localhost:' + servers[1].port) 767 await command.removeFromMyBlocklist({ token: userAccessTokenServer1, account: 'root@localhost:' + servers[1].port })
774 await waitJobs(servers) 768 await waitJobs(servers)
775 769
776 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3) 770 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3)
777 } 771 }
778 772
779 { 773 {
780 await addServerToAccountBlocklist(servers[0].url, userAccessTokenServer1, 'localhost:' + servers[1].port) 774 await command.addToMyBlocklist({ token: userAccessTokenServer1, server: 'localhost:' + servers[1].port })
781 await waitJobs(servers) 775 await waitJobs(servers)
782 776
783 await checkPlaylistElementType(groupUser1, playlistServer1UUID2, VideoPlaylistElementType.UNAVAILABLE, position, name, 3) 777 await checkPlaylistElementType(groupUser1, playlistServer1UUID2, VideoPlaylistElementType.UNAVAILABLE, position, name, 3)
784 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3) 778 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3)
785 779
786 await removeServerFromAccountBlocklist(servers[0].url, userAccessTokenServer1, 'localhost:' + servers[1].port) 780 await command.removeFromMyBlocklist({ token: userAccessTokenServer1, server: 'localhost:' + servers[1].port })
787 await waitJobs(servers) 781 await waitJobs(servers)
788 782
789 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3) 783 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3)
790 } 784 }
791 785
792 { 786 {
793 await addAccountToServerBlocklist(servers[0].url, servers[0].accessToken, 'root@localhost:' + servers[1].port) 787 await command.addToServerBlocklist({ account: 'root@localhost:' + servers[1].port })
794 await waitJobs(servers) 788 await waitJobs(servers)
795 789
796 await checkPlaylistElementType(groupUser1, playlistServer1UUID2, VideoPlaylistElementType.UNAVAILABLE, position, name, 3) 790 await checkPlaylistElementType(groupUser1, playlistServer1UUID2, VideoPlaylistElementType.UNAVAILABLE, position, name, 3)
797 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3) 791 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3)
798 792
799 await removeAccountFromServerBlocklist(servers[0].url, servers[0].accessToken, 'root@localhost:' + servers[1].port) 793 await command.removeFromServerBlocklist({ account: 'root@localhost:' + servers[1].port })
800 await waitJobs(servers) 794 await waitJobs(servers)
801 795
802 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3) 796 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3)
803 } 797 }
804 798
805 { 799 {
806 await addServerToServerBlocklist(servers[0].url, servers[0].accessToken, 'localhost:' + servers[1].port) 800 await command.addToServerBlocklist({ server: 'localhost:' + servers[1].port })
807 await waitJobs(servers) 801 await waitJobs(servers)
808 802
809 await checkPlaylistElementType(groupUser1, playlistServer1UUID2, VideoPlaylistElementType.UNAVAILABLE, position, name, 3) 803 await checkPlaylistElementType(groupUser1, playlistServer1UUID2, VideoPlaylistElementType.UNAVAILABLE, position, name, 3)
810 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3) 804 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3)
811 805
812 await removeServerFromServerBlocklist(servers[0].url, servers[0].accessToken, 'localhost:' + servers[1].port) 806 await command.removeFromServerBlocklist({ server: 'localhost:' + servers[1].port })
813 await waitJobs(servers) 807 await waitJobs(servers)
814 808
815 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3) 809 await checkPlaylistElementType(group2, playlistServer1UUID2, VideoPlaylistElementType.REGULAR, position, name, 3)
diff --git a/server/tests/api/videos/videos-overview.ts b/server/tests/api/videos/videos-overview.ts
index b3ab9e070..ccbc6f4a4 100644
--- a/server/tests/api/videos/videos-overview.ts
+++ b/server/tests/api/videos/videos-overview.ts
@@ -3,7 +3,6 @@
3import 'mocha' 3import 'mocha'
4import * as chai from 'chai' 4import * as chai from 'chai'
5import { 5import {
6 addAccountToAccountBlocklist,
7 cleanupTests, 6 cleanupTests,
8 flushAndRunServer, 7 flushAndRunServer,
9 generateUserAccessToken, 8 generateUserAccessToken,
@@ -115,7 +114,7 @@ describe('Test a videos overview', function () {
115 it('Should hide muted accounts', async function () { 114 it('Should hide muted accounts', async function () {
116 const token = await generateUserAccessToken(server, 'choco') 115 const token = await generateUserAccessToken(server, 'choco')
117 116
118 await addAccountToAccountBlocklist(server.url, token, 'root@' + server.host) 117 await server.blocklistCommand.addToMyBlocklist({ token, account: 'root@' + server.host })
119 118
120 { 119 {
121 const body = await server.overviewsCommand.getVideos({ page: 1 }) 120 const body = await server.overviewsCommand.getVideos({ page: 1 })
diff --git a/server/tests/external-plugins/auto-mute.ts b/server/tests/external-plugins/auto-mute.ts
index 8fcf94452..f86c83808 100644
--- a/server/tests/external-plugins/auto-mute.ts
+++ b/server/tests/external-plugins/auto-mute.ts
@@ -4,8 +4,6 @@ import 'mocha'
4import { expect } from 'chai' 4import { expect } from 'chai'
5import { HttpStatusCode } from '@shared/core-utils' 5import { HttpStatusCode } from '@shared/core-utils'
6import { 6import {
7 addAccountToServerBlocklist,
8 addServerToAccountBlocklist,
9 cleanupTests, 7 cleanupTests,
10 doubleFollow, 8 doubleFollow,
11 flushAndRunMultipleServers, 9 flushAndRunMultipleServers,
@@ -13,7 +11,6 @@ import {
13 killallServers, 11 killallServers,
14 makeGetRequest, 12 makeGetRequest,
15 MockBlocklist, 13 MockBlocklist,
16 removeAccountFromServerBlocklist,
17 reRunServer, 14 reRunServer,
18 ServerInfo, 15 ServerInfo,
19 setAccessTokensToServers, 16 setAccessTokensToServers,
@@ -147,7 +144,7 @@ describe('Official plugin auto-mute', function () {
147 expect(res.body.total).to.equal(1) 144 expect(res.body.total).to.equal(1)
148 } 145 }
149 146
150 await removeAccountFromServerBlocklist(servers[0].url, servers[0].accessToken, account) 147 await servers[0].blocklistCommand.removeFromServerBlocklist({ account })
151 148
152 { 149 {
153 const res = await getVideosList(servers[0].url) 150 const res = await getVideosList(servers[0].url)
@@ -201,8 +198,8 @@ describe('Official plugin auto-mute', function () {
201 } 198 }
202 }) 199 })
203 200
204 await addAccountToServerBlocklist(servers[0].url, servers[0].accessToken, 'root@localhost:' + servers[1].port) 201 await servers[0].blocklistCommand.addToServerBlocklist({ account: 'root@localhost:' + servers[1].port })
205 await addServerToAccountBlocklist(servers[0].url, servers[0].accessToken, 'localhost:' + servers[1].port) 202 await servers[0].blocklistCommand.addToMyBlocklist({ server: 'localhost:' + servers[1].port })
206 203
207 const res = await makeGetRequest({ 204 const res = await makeGetRequest({
208 url: servers[0].url, 205 url: servers[0].url,
diff --git a/server/tests/feeds/feeds.ts b/server/tests/feeds/feeds.ts
index 4d29a2e39..17efc666d 100644
--- a/server/tests/feeds/feeds.ts
+++ b/server/tests/feeds/feeds.ts
@@ -3,16 +3,10 @@
3import 'mocha' 3import 'mocha'
4import * as chai from 'chai' 4import * as chai from 'chai'
5import * as xmlParser from 'fast-xml-parser' 5import * as xmlParser from 'fast-xml-parser'
6import { HttpStatusCode } from '@shared/core-utils'
6import { 7import {
7 addAccountToAccountBlocklist, 8 addUserSubscription,
8 addAccountToServerBlocklist, 9 addVideoCommentThread,
9 removeAccountFromServerBlocklist
10} from '@shared/extra-utils/users/blocklist'
11import { addUserSubscription, listUserSubscriptionVideos } from '@shared/extra-utils/users/user-subscriptions'
12import { VideoPrivacy } from '@shared/models'
13import { ScopedToken } from '@shared/models/users/user-scoped-token'
14import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
15import {
16 cleanupTests, 10 cleanupTests,
17 createUser, 11 createUser,
18 doubleFollow, 12 doubleFollow,
@@ -20,16 +14,17 @@ import {
20 flushAndRunServer, 14 flushAndRunServer,
21 getMyUserInformation, 15 getMyUserInformation,
22 getUserScopedTokens, 16 getUserScopedTokens,
17 listUserSubscriptionVideos,
23 renewUserScopedTokens, 18 renewUserScopedTokens,
24 ServerInfo, 19 ServerInfo,
25 setAccessTokensToServers, 20 setAccessTokensToServers,
26 uploadVideo, 21 uploadVideo,
27 uploadVideoAndGetId, 22 uploadVideoAndGetId,
28 userLogin 23 userLogin,
29} from '../../../shared/extra-utils' 24 waitJobs
30import { waitJobs } from '../../../shared/extra-utils/server/jobs' 25} from '@shared/extra-utils'
31import { addVideoCommentThread } from '../../../shared/extra-utils/videos/video-comments' 26import { User, VideoPrivacy } from '@shared/models'
32import { User } from '../../../shared/models/users' 27import { ScopedToken } from '@shared/models/users/user-scoped-token'
33 28
34chai.use(require('chai-xml')) 29chai.use(require('chai-xml'))
35chai.use(require('chai-json-schema')) 30chai.use(require('chai-json-schema'))
@@ -271,7 +266,7 @@ describe('Test syndication feeds', () => {
271 266
272 const remoteHandle = 'root@localhost:' + servers[0].port 267 const remoteHandle = 'root@localhost:' + servers[0].port
273 268
274 await addAccountToServerBlocklist(servers[1].url, servers[1].accessToken, remoteHandle) 269 await servers[1].blocklistCommand.addToServerBlocklist({ account: remoteHandle })
275 270
276 { 271 {
277 const json = await servers[1].feedCommand.getJSON({ feed: 'video-comments', query: { version: 2 } }) 272 const json = await servers[1].feedCommand.getJSON({ feed: 'video-comments', query: { version: 2 } })
@@ -279,7 +274,7 @@ describe('Test syndication feeds', () => {
279 expect(jsonObj.items.length).to.be.equal(0) 274 expect(jsonObj.items.length).to.be.equal(0)
280 } 275 }
281 276
282 await removeAccountFromServerBlocklist(servers[1].url, servers[1].accessToken, remoteHandle) 277 await servers[1].blocklistCommand.removeFromServerBlocklist({ account: remoteHandle })
283 278
284 { 279 {
285 const videoUUID = (await uploadVideoAndGetId({ server: servers[1], videoName: 'server 2' })).uuid 280 const videoUUID = (await uploadVideoAndGetId({ server: servers[1], videoName: 'server 2' })).uuid
@@ -292,7 +287,7 @@ describe('Test syndication feeds', () => {
292 expect(jsonObj.items.length).to.be.equal(3) 287 expect(jsonObj.items.length).to.be.equal(3)
293 } 288 }
294 289
295 await addAccountToAccountBlocklist(servers[1].url, servers[1].accessToken, remoteHandle) 290 await servers[1].blocklistCommand.addToMyBlocklist({ account: remoteHandle })
296 291
297 { 292 {
298 const json = await servers[1].feedCommand.getJSON({ feed: 'video-comments', query: { version: 4 } }) 293 const json = await servers[1].feedCommand.getJSON({ feed: 'video-comments', query: { version: 4 } })
diff --git a/shared/extra-utils/server/servers.ts b/shared/extra-utils/server/servers.ts
index c2cab9818..3c709666d 100644
--- a/shared/extra-utils/server/servers.ts
+++ b/shared/extra-utils/server/servers.ts
@@ -17,7 +17,7 @@ import { OverviewsCommand } from '../overviews'
17import { makeGetRequest } from '../requests/requests' 17import { makeGetRequest } from '../requests/requests'
18import { SearchCommand } from '../search' 18import { SearchCommand } from '../search'
19import { SocketIOCommand } from '../socket' 19import { SocketIOCommand } from '../socket'
20import { AccountsCommand } from '../users' 20import { AccountsCommand, BlocklistCommand } from '../users'
21import { ConfigCommand } from './config-command' 21import { ConfigCommand } from './config-command'
22import { ContactFormCommand } from './contact-form-command' 22import { ContactFormCommand } from './contact-form-command'
23import { DebugCommand } from './debug-command' 23import { DebugCommand } from './debug-command'
@@ -97,6 +97,7 @@ interface ServerInfo {
97 configCommand?: ConfigCommand 97 configCommand?: ConfigCommand
98 socketIOCommand?: SocketIOCommand 98 socketIOCommand?: SocketIOCommand
99 accountsCommand?: AccountsCommand 99 accountsCommand?: AccountsCommand
100 blocklistCommand?: BlocklistCommand
100} 101}
101 102
102function parallelTests () { 103function parallelTests () {
@@ -320,6 +321,7 @@ async function runServer (server: ServerInfo, configOverrideArg?: any, args = []
320 server.configCommand = new ConfigCommand(server) 321 server.configCommand = new ConfigCommand(server)
321 server.socketIOCommand = new SocketIOCommand(server) 322 server.socketIOCommand = new SocketIOCommand(server)
322 server.accountsCommand = new AccountsCommand(server) 323 server.accountsCommand = new AccountsCommand(server)
324 server.blocklistCommand = new BlocklistCommand(server)
323 325
324 res(server) 326 res(server)
325 }) 327 })
diff --git a/shared/extra-utils/socket/socket-io-command.ts b/shared/extra-utils/socket/socket-io-command.ts
index 545561bed..c277ead28 100644
--- a/shared/extra-utils/socket/socket-io-command.ts
+++ b/shared/extra-utils/socket/socket-io-command.ts
@@ -5,7 +5,7 @@ export class SocketIOCommand extends AbstractCommand {
5 5
6 getUserNotificationSocket (options: OverrideCommandOptions = {}) { 6 getUserNotificationSocket (options: OverrideCommandOptions = {}) {
7 return io(this.server.url + '/user-notifications', { 7 return io(this.server.url + '/user-notifications', {
8 query: { accessToken: this.server.accessToken } 8 query: { accessToken: options.token ?? this.server.accessToken }
9 }) 9 })
10 } 10 }
11 11
diff --git a/shared/extra-utils/users/blocklist-command.ts b/shared/extra-utils/users/blocklist-command.ts
new file mode 100644
index 000000000..96afdc3fd
--- /dev/null
+++ b/shared/extra-utils/users/blocklist-command.ts
@@ -0,0 +1,135 @@
1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
2
3import { HttpStatusCode } from '@shared/core-utils'
4import { AccountBlock, ResultList, ServerBlock } from '@shared/models'
5import { AbstractCommand, OverrideCommandOptions } from '../shared'
6
7type ListBlocklistOptions = OverrideCommandOptions & {
8 start: number
9 count: number
10 sort: string // default -createdAt
11}
12
13export class BlocklistCommand extends AbstractCommand {
14
15 listMyAccountBlocklist (options: ListBlocklistOptions) {
16 const path = '/api/v1/users/me/blocklist/accounts'
17
18 return this.listBlocklist<AccountBlock>(options, path)
19 }
20
21 listMyServerBlocklist (options: ListBlocklistOptions) {
22 const path = '/api/v1/users/me/blocklist/servers'
23
24 return this.listBlocklist<ServerBlock>(options, path)
25 }
26
27 listServerAccountBlocklist (options: ListBlocklistOptions) {
28 const path = '/api/v1/server/blocklist/accounts'
29
30 return this.listBlocklist<AccountBlock>(options, path)
31 }
32
33 listServerServerBlocklist (options: ListBlocklistOptions) {
34 const path = '/api/v1/server/blocklist/servers'
35
36 return this.listBlocklist<ServerBlock>(options, path)
37 }
38
39 // ---------------------------------------------------------------------------
40
41 addToMyBlocklist (options: OverrideCommandOptions & {
42 account?: string
43 server?: string
44 }) {
45 const { account, server } = options
46
47 const path = account
48 ? '/api/v1/users/me/blocklist/accounts'
49 : '/api/v1/users/me/blocklist/servers'
50
51 return this.postBodyRequest({
52 ...options,
53
54 path,
55 fields: {
56 accountName: account,
57 host: server
58 },
59 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
60 })
61 }
62
63 addToServerBlocklist (options: OverrideCommandOptions & {
64 account?: string
65 server?: string
66 }) {
67 const { account, server } = options
68
69 const path = account
70 ? '/api/v1/server/blocklist/accounts'
71 : '/api/v1/server/blocklist/servers'
72
73 return this.postBodyRequest({
74 ...options,
75
76 path,
77 fields: {
78 accountName: account,
79 host: server
80 },
81 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
82 })
83 }
84
85 // ---------------------------------------------------------------------------
86
87 removeFromMyBlocklist (options: OverrideCommandOptions & {
88 account?: string
89 server?: string
90 }) {
91 const { account, server } = options
92
93 const path = account
94 ? '/api/v1/users/me/blocklist/accounts/' + account
95 : '/api/v1/users/me/blocklist/servers/' + server
96
97 return this.deleteRequest({
98 ...options,
99
100 path,
101 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
102 })
103 }
104
105 removeFromServerBlocklist (options: OverrideCommandOptions & {
106 account?: string
107 server?: string
108 }) {
109 const { account, server } = options
110
111 const path = account
112 ? '/api/v1/server/blocklist/accounts/' + account
113 : '/api/v1/server/blocklist/servers/' + server
114
115 return this.deleteRequest({
116 ...options,
117
118 path,
119 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
120 })
121 }
122
123 private listBlocklist <T> (options: ListBlocklistOptions, path: string) {
124 const { start, count, sort = '-createdAt' } = options
125
126 return this.getRequestBody<ResultList<T>>({
127 ...options,
128
129 path,
130 query: { start, count, sort },
131 defaultExpectedStatus: HttpStatusCode.OK_200
132 })
133 }
134
135}
diff --git a/shared/extra-utils/users/blocklist.ts b/shared/extra-utils/users/blocklist.ts
deleted file mode 100644
index bdf7ee58a..000000000
--- a/shared/extra-utils/users/blocklist.ts
+++ /dev/null
@@ -1,238 +0,0 @@
1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
2
3import { makeGetRequest, makeDeleteRequest, makePostBodyRequest } from '../requests/requests'
4import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
5
6function getAccountBlocklistByAccount (
7 url: string,
8 token: string,
9 start: number,
10 count: number,
11 sort = '-createdAt',
12 statusCodeExpected = HttpStatusCode.OK_200
13) {
14 const path = '/api/v1/users/me/blocklist/accounts'
15
16 return makeGetRequest({
17 url,
18 token,
19 query: { start, count, sort },
20 path,
21 statusCodeExpected
22 })
23}
24
25function addAccountToAccountBlocklist (
26 url: string,
27 token: string,
28 accountToBlock: string,
29 statusCodeExpected = HttpStatusCode.NO_CONTENT_204
30) {
31 const path = '/api/v1/users/me/blocklist/accounts'
32
33 return makePostBodyRequest({
34 url,
35 path,
36 token,
37 fields: {
38 accountName: accountToBlock
39 },
40 statusCodeExpected
41 })
42}
43
44function removeAccountFromAccountBlocklist (
45 url: string,
46 token: string,
47 accountToUnblock: string,
48 statusCodeExpected = HttpStatusCode.NO_CONTENT_204
49) {
50 const path = '/api/v1/users/me/blocklist/accounts/' + accountToUnblock
51
52 return makeDeleteRequest({
53 url,
54 path,
55 token,
56 statusCodeExpected
57 })
58}
59
60function getServerBlocklistByAccount (
61 url: string,
62 token: string,
63 start: number,
64 count: number,
65 sort = '-createdAt',
66 statusCodeExpected = HttpStatusCode.OK_200
67) {
68 const path = '/api/v1/users/me/blocklist/servers'
69
70 return makeGetRequest({
71 url,
72 token,
73 query: { start, count, sort },
74 path,
75 statusCodeExpected
76 })
77}
78
79function addServerToAccountBlocklist (
80 url: string,
81 token: string,
82 serverToBlock: string,
83 statusCodeExpected = HttpStatusCode.NO_CONTENT_204
84) {
85 const path = '/api/v1/users/me/blocklist/servers'
86
87 return makePostBodyRequest({
88 url,
89 path,
90 token,
91 fields: {
92 host: serverToBlock
93 },
94 statusCodeExpected
95 })
96}
97
98function removeServerFromAccountBlocklist (
99 url: string,
100 token: string,
101 serverToBlock: string,
102 statusCodeExpected = HttpStatusCode.NO_CONTENT_204
103) {
104 const path = '/api/v1/users/me/blocklist/servers/' + serverToBlock
105
106 return makeDeleteRequest({
107 url,
108 path,
109 token,
110 statusCodeExpected
111 })
112}
113
114function getAccountBlocklistByServer (
115 url: string,
116 token: string,
117 start: number,
118 count: number,
119 sort = '-createdAt',
120 statusCodeExpected = HttpStatusCode.OK_200
121) {
122 const path = '/api/v1/server/blocklist/accounts'
123
124 return makeGetRequest({
125 url,
126 token,
127 query: { start, count, sort },
128 path,
129 statusCodeExpected
130 })
131}
132
133function addAccountToServerBlocklist (
134 url: string,
135 token: string,
136 accountToBlock: string,
137 statusCodeExpected = HttpStatusCode.NO_CONTENT_204
138) {
139 const path = '/api/v1/server/blocklist/accounts'
140
141 return makePostBodyRequest({
142 url,
143 path,
144 token,
145 fields: {
146 accountName: accountToBlock
147 },
148 statusCodeExpected
149 })
150}
151
152function removeAccountFromServerBlocklist (
153 url: string,
154 token: string,
155 accountToUnblock: string,
156 statusCodeExpected = HttpStatusCode.NO_CONTENT_204
157) {
158 const path = '/api/v1/server/blocklist/accounts/' + accountToUnblock
159
160 return makeDeleteRequest({
161 url,
162 path,
163 token,
164 statusCodeExpected
165 })
166}
167
168function getServerBlocklistByServer (
169 url: string,
170 token: string,
171 start: number,
172 count: number,
173 sort = '-createdAt',
174 statusCodeExpected = HttpStatusCode.OK_200
175) {
176 const path = '/api/v1/server/blocklist/servers'
177
178 return makeGetRequest({
179 url,
180 token,
181 query: { start, count, sort },
182 path,
183 statusCodeExpected
184 })
185}
186
187function addServerToServerBlocklist (
188 url: string,
189 token: string,
190 serverToBlock: string,
191 statusCodeExpected = HttpStatusCode.NO_CONTENT_204
192) {
193 const path = '/api/v1/server/blocklist/servers'
194
195 return makePostBodyRequest({
196 url,
197 path,
198 token,
199 fields: {
200 host: serverToBlock
201 },
202 statusCodeExpected
203 })
204}
205
206function removeServerFromServerBlocklist (
207 url: string,
208 token: string,
209 serverToBlock: string,
210 statusCodeExpected = HttpStatusCode.NO_CONTENT_204
211) {
212 const path = '/api/v1/server/blocklist/servers/' + serverToBlock
213
214 return makeDeleteRequest({
215 url,
216 path,
217 token,
218 statusCodeExpected
219 })
220}
221
222// ---------------------------------------------------------------------------
223
224export {
225 getAccountBlocklistByAccount,
226 addAccountToAccountBlocklist,
227 removeAccountFromAccountBlocklist,
228 getServerBlocklistByAccount,
229 addServerToAccountBlocklist,
230 removeServerFromAccountBlocklist,
231
232 getAccountBlocklistByServer,
233 addAccountToServerBlocklist,
234 removeAccountFromServerBlocklist,
235 getServerBlocklistByServer,
236 addServerToServerBlocklist,
237 removeServerFromServerBlocklist
238}
diff --git a/shared/extra-utils/users/index.ts b/shared/extra-utils/users/index.ts
index b3387ed8a..ea5dbbf14 100644
--- a/shared/extra-utils/users/index.ts
+++ b/shared/extra-utils/users/index.ts
@@ -1,7 +1,7 @@
1export * from './accounts'
2export * from './accounts-command' 1export * from './accounts-command'
2export * from './accounts'
3export * from './blocklist-command'
3 4
4export * from './blocklist'
5export * from './login' 5export * from './login'
6export * from './user-notifications' 6export * from './user-notifications'
7export * from './user-subscriptions' 7export * from './user-subscriptions'