getVideoCommentThreads,
getVideoThreadComments,
immutableAssign,
+ MockInstancesIndex,
registerUser,
removeVideoFromBlacklist,
reportVideoAbuse,
+ unfollow,
updateCustomConfig,
+ updateCustomSubConfig,
updateMyUser,
updateVideo,
updateVideoChannel,
import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
import { getUserNotificationSocket } from '../../../../shared/extra-utils/socket/socket-io'
import {
+ checkAutoInstanceFollowing,
checkCommentMention,
CheckerBaseParams,
checkMyVideoImportIsFinished,
commentMention: UserNotificationSettingValue.WEB | UserNotificationSettingValue.EMAIL,
newFollow: UserNotificationSettingValue.WEB | UserNotificationSettingValue.EMAIL,
newUserRegistration: UserNotificationSettingValue.WEB | UserNotificationSettingValue.EMAIL,
- newInstanceFollower: UserNotificationSettingValue.WEB | UserNotificationSettingValue.EMAIL
+ newInstanceFollower: UserNotificationSettingValue.WEB | UserNotificationSettingValue.EMAIL,
+ autoInstanceFollowing: UserNotificationSettingValue.WEB | UserNotificationSettingValue.EMAIL
}
before(async function () {
it('Should not send a notification before the video is published', async function () {
this.timeout(20000)
- let updateAt = new Date(new Date().getTime() + 100000)
+ let updateAt = new Date(new Date().getTime() + 1000000)
const data = {
privacy: VideoPrivacy.PRIVATE,
})
})
- describe('New instance follower', function () {
+ describe('New instance follows', function () {
+ const instanceIndexServer = new MockInstancesIndex()
+ const config = {
+ followings: {
+ instance: {
+ autoFollowIndex: {
+ indexUrl: 'http://localhost:42100',
+ enabled: true
+ }
+ }
+ }
+ }
let baseParams: CheckerBaseParams
before(async () => {
socketNotifications: adminNotifications,
token: servers[0].accessToken
}
+
+ await instanceIndexServer.initialize()
+ instanceIndexServer.addInstance(servers[1].host)
})
it('Should send a notification only to admin when there is a new instance follower', async function () {
const userOverride = { socketNotifications: userNotifications, token: userAccessToken, check: { web: true, mail: false } }
await checkNewInstanceFollower(immutableAssign(baseParams, userOverride), 'localhost:' + servers[2].port, 'absence')
})
+
+ it('Should send a notification on auto follow back', async function () {
+ this.timeout(40000)
+
+ await unfollow(servers[2].url, servers[2].accessToken, servers[0])
+ await waitJobs(servers)
+
+ const config = {
+ followings: {
+ instance: {
+ autoFollowBack: { enabled: true }
+ }
+ }
+ }
+ await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+
+ await follow(servers[2].url, [ servers[0].url ], servers[2].accessToken)
+
+ await waitJobs(servers)
+
+ const followerHost = servers[0].host
+ const followingHost = servers[2].host
+ await checkAutoInstanceFollowing(baseParams, followerHost, followingHost, 'presence')
+
+ const userOverride = { socketNotifications: userNotifications, token: userAccessToken, check: { web: true, mail: false } }
+ await checkAutoInstanceFollowing(immutableAssign(baseParams, userOverride), followerHost, followingHost, 'absence')
+
+ config.followings.instance.autoFollowBack.enabled = false
+ await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+ await unfollow(servers[0].url, servers[0].accessToken, servers[2])
+ await unfollow(servers[2].url, servers[2].accessToken, servers[0])
+ })
+
+ it('Should send a notification on auto instances index follow', async function () {
+ this.timeout(30000)
+ await unfollow(servers[0].url, servers[0].accessToken, servers[1])
+
+ await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+
+ await wait(5000)
+ await waitJobs(servers)
+
+ const followerHost = servers[0].host
+ const followingHost = servers[1].host
+ await checkAutoInstanceFollowing(baseParams, followerHost, followingHost, 'presence')
+
+ config.followings.instance.autoFollowIndex.enabled = false
+ await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+ await unfollow(servers[0].url, servers[0].accessToken, servers[1])
+ })
})
describe('New actor follow', function () {
it('Should send unblacklist but not published/subscription notes after unblacklisted if scheduled update pending', async function () {
this.timeout(20000)
- let updateAt = new Date(new Date().getTime() + 100000)
+ let updateAt = new Date(new Date().getTime() + 1000000)
const name = 'video with auto-blacklist and future schedule ' + uuidv4()