aboutsummaryrefslogtreecommitdiffhomepage
path: root/server
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2019-09-04 11:39:25 +0200
committerChocobozzz <chocobozzz@cpy.re>2019-09-04 16:24:58 +0200
commit10a105f0c8620b2742eb357b69dd516a9ddf5798 (patch)
tree9bb8547f659ff37b2579e88849ba9fe12332a0dd /server
parent6f1b4fa417786c2015f16b435e872aa65378efd7 (diff)
downloadPeerTube-10a105f0c8620b2742eb357b69dd516a9ddf5798.tar.gz
PeerTube-10a105f0c8620b2742eb357b69dd516a9ddf5798.tar.zst
PeerTube-10a105f0c8620b2742eb357b69dd516a9ddf5798.zip
Add notification on auto follow index
Diffstat (limited to 'server')
-rw-r--r--server/models/activitypub/actor-follow.ts6
-rw-r--r--server/tests/api/notifications/user-notifications.ts47
-rw-r--r--server/typings/utils.ts2
3 files changed, 46 insertions, 9 deletions
diff --git a/server/models/activitypub/actor-follow.ts b/server/models/activitypub/actor-follow.ts
index 0833b9a93..8498692f0 100644
--- a/server/models/activitypub/actor-follow.ts
+++ b/server/models/activitypub/actor-follow.ts
@@ -439,13 +439,13 @@ export class ActorFollowModel extends Model<ActorFollowModel> {
439 const followerId = (await getServerActor()).id 439 const followerId = (await getServerActor()).id
440 440
441 const query = { 441 const query = {
442 attributes: [], 442 attributes: [ 'id' ],
443 where: { 443 where: {
444 actorId: followerId 444 actorId: followerId
445 }, 445 },
446 include: [ 446 include: [
447 { 447 {
448 attributes: [ ], 448 attributes: [ 'id' ],
449 model: ActorModel.unscoped(), 449 model: ActorModel.unscoped(),
450 required: true, 450 required: true,
451 as: 'ActorFollowing', 451 as: 'ActorFollowing',
@@ -469,7 +469,7 @@ export class ActorFollowModel extends Model<ActorFollowModel> {
469 } 469 }
470 470
471 const res = await ActorFollowModel.findAll(query) 471 const res = await ActorFollowModel.findAll(query)
472 const followedHosts = res.map(res => res.ActorFollowing.Server.host) 472 const followedHosts = res.map(row => row.ActorFollowing.Server.host)
473 473
474 return difference(hosts, followedHosts) 474 return difference(hosts, followedHosts)
475 } 475 }
diff --git a/server/tests/api/notifications/user-notifications.ts b/server/tests/api/notifications/user-notifications.ts
index 62b797b47..15a34f5aa 100644
--- a/server/tests/api/notifications/user-notifications.ts
+++ b/server/tests/api/notifications/user-notifications.ts
@@ -14,10 +14,13 @@ import {
14 getVideoCommentThreads, 14 getVideoCommentThreads,
15 getVideoThreadComments, 15 getVideoThreadComments,
16 immutableAssign, 16 immutableAssign,
17 MockInstancesIndex,
17 registerUser, 18 registerUser,
18 removeVideoFromBlacklist, 19 removeVideoFromBlacklist,
19 reportVideoAbuse, unfollow, 20 reportVideoAbuse,
20 updateCustomConfig, updateCustomSubConfig, 21 unfollow,
22 updateCustomConfig,
23 updateCustomSubConfig,
21 updateMyUser, 24 updateMyUser,
22 updateVideo, 25 updateVideo,
23 updateVideoChannel, 26 updateVideoChannel,
@@ -29,6 +32,7 @@ import { setAccessTokensToServers } from '../../../../shared/extra-utils/users/l
29import { waitJobs } from '../../../../shared/extra-utils/server/jobs' 32import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
30import { getUserNotificationSocket } from '../../../../shared/extra-utils/socket/socket-io' 33import { getUserNotificationSocket } from '../../../../shared/extra-utils/socket/socket-io'
31import { 34import {
35 checkAutoInstanceFollowing,
32 checkCommentMention, 36 checkCommentMention,
33 CheckerBaseParams, 37 CheckerBaseParams,
34 checkMyVideoImportIsFinished, 38 checkMyVideoImportIsFinished,
@@ -45,8 +49,7 @@ import {
45 getUserNotifications, 49 getUserNotifications,
46 markAsReadAllNotifications, 50 markAsReadAllNotifications,
47 markAsReadNotifications, 51 markAsReadNotifications,
48 updateMyNotificationSettings, 52 updateMyNotificationSettings
49 checkAutoInstanceFollowing
50} from '../../../../shared/extra-utils/users/user-notifications' 53} from '../../../../shared/extra-utils/users/user-notifications'
51import { 54import {
52 User, 55 User,
@@ -875,7 +878,18 @@ describe('Test users notifications', function () {
875 }) 878 })
876 }) 879 })
877 880
878 describe('New instance follower', function () { 881 describe('New instance follows', function () {
882 const instanceIndexServer = new MockInstancesIndex()
883 const config = {
884 followings: {
885 instance: {
886 autoFollowIndex: {
887 indexUrl: 'http://localhost:42100',
888 enabled: true
889 }
890 }
891 }
892 }
879 let baseParams: CheckerBaseParams 893 let baseParams: CheckerBaseParams
880 894
881 before(async () => { 895 before(async () => {
@@ -885,6 +899,9 @@ describe('Test users notifications', function () {
885 socketNotifications: adminNotifications, 899 socketNotifications: adminNotifications,
886 token: servers[0].accessToken 900 token: servers[0].accessToken
887 } 901 }
902
903 await instanceIndexServer.initialize()
904 instanceIndexServer.addInstance(servers[1].host)
888 }) 905 })
889 906
890 it('Should send a notification only to admin when there is a new instance follower', async function () { 907 it('Should send a notification only to admin when there is a new instance follower', async function () {
@@ -928,6 +945,26 @@ describe('Test users notifications', function () {
928 945
929 config.followings.instance.autoFollowBack.enabled = false 946 config.followings.instance.autoFollowBack.enabled = false
930 await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config) 947 await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
948 await unfollow(servers[0].url, servers[0].accessToken, servers[2])
949 await unfollow(servers[2].url, servers[2].accessToken, servers[0])
950 })
951
952 it('Should send a notification on auto instances index follow', async function () {
953 this.timeout(30000)
954 await unfollow(servers[0].url, servers[0].accessToken, servers[1])
955
956 await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
957
958 await wait(5000)
959 await waitJobs(servers)
960
961 const followerHost = servers[0].host
962 const followingHost = servers[1].host
963 await checkAutoInstanceFollowing(baseParams, followerHost, followingHost, 'presence')
964
965 config.followings.instance.autoFollowIndex.enabled = false
966 await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
967 await unfollow(servers[0].url, servers[0].accessToken, servers[1])
931 }) 968 })
932 }) 969 })
933 970
diff --git a/server/typings/utils.ts b/server/typings/utils.ts
index 1abb4f73e..24d43b258 100644
--- a/server/typings/utils.ts
+++ b/server/typings/utils.ts
@@ -19,4 +19,4 @@ export type DeepPartial<T> = {
19 : T[P] extends ReadonlyArray<infer U> 19 : T[P] extends ReadonlyArray<infer U>
20 ? ReadonlyArray<DeepPartial<U>> 20 ? ReadonlyArray<DeepPartial<U>>
21 : DeepPartial<T[P]> 21 : DeepPartial<T[P]>
22}; 22}