From 1297eb5db651a230474670c5da1517862fb9cc3e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 22 Aug 2018 16:15:35 +0200 Subject: Add refresh video on search --- server/tests/api/index-1.ts | 2 + server/tests/api/index-2.ts | 2 + server/tests/api/index-3.ts | 1 + server/tests/api/index-fast.ts | 18 --- server/tests/api/index-slow.ts | 12 -- server/tests/api/index.ts | 5 +- server/tests/api/search/index.ts | 2 + .../tests/api/search/search-activitypub-videos.ts | 161 +++++++++++++++++++++ server/tests/api/server/index.ts | 8 + server/tests/api/users/index.ts | 3 + server/tests/api/videos/index.ts | 15 ++ server/tests/feeds/index.ts | 1 + server/tests/index.ts | 3 +- 13 files changed, 200 insertions(+), 33 deletions(-) create mode 100644 server/tests/api/index-1.ts create mode 100644 server/tests/api/index-2.ts create mode 100644 server/tests/api/index-3.ts delete mode 100644 server/tests/api/index-fast.ts delete mode 100644 server/tests/api/index-slow.ts create mode 100644 server/tests/api/search/index.ts create mode 100644 server/tests/api/search/search-activitypub-videos.ts create mode 100644 server/tests/api/server/index.ts create mode 100644 server/tests/api/users/index.ts create mode 100644 server/tests/api/videos/index.ts create mode 100644 server/tests/feeds/index.ts (limited to 'server/tests') diff --git a/server/tests/api/index-1.ts b/server/tests/api/index-1.ts new file mode 100644 index 000000000..80d752f42 --- /dev/null +++ b/server/tests/api/index-1.ts @@ -0,0 +1,2 @@ +import './check-params' +import './search' diff --git a/server/tests/api/index-2.ts b/server/tests/api/index-2.ts new file mode 100644 index 000000000..ed93faa91 --- /dev/null +++ b/server/tests/api/index-2.ts @@ -0,0 +1,2 @@ +import './server' +import './users' diff --git a/server/tests/api/index-3.ts b/server/tests/api/index-3.ts new file mode 100644 index 000000000..39823b82c --- /dev/null +++ b/server/tests/api/index-3.ts @@ -0,0 +1 @@ +import './videos' diff --git a/server/tests/api/index-fast.ts b/server/tests/api/index-fast.ts deleted file mode 100644 index 02ffdd4f1..000000000 --- a/server/tests/api/index-fast.ts +++ /dev/null @@ -1,18 +0,0 @@ -// Order of the tests we want to execute -import './server/stats' -import './check-params' -import './users/users' -import './videos/single-server' -import './videos/video-abuse' -import './videos/video-captions' -import './videos/video-blacklist' -import './videos/video-blacklist-management' -import './videos/video-description' -import './videos/video-nsfw' -import './videos/video-privacy' -import './videos/services' -import './server/email' -import './server/config' -import './server/reverse-proxy' -import './search/search-videos' -import './server/tracker' diff --git a/server/tests/api/index-slow.ts b/server/tests/api/index-slow.ts deleted file mode 100644 index e24a7b664..000000000 --- a/server/tests/api/index-slow.ts +++ /dev/null @@ -1,12 +0,0 @@ -// Order of the tests we want to execute -import './videos/video-channels' -import './videos/video-transcoder' -import './videos/multiple-servers' -import './server/follows' -import './server/jobs' -import './videos/video-comments' -import './users/users-multiple-servers' -import './users/user-subscriptions' -import './server/handle-down' -import './videos/video-schedule-update' -import './videos/video-imports' diff --git a/server/tests/api/index.ts b/server/tests/api/index.ts index 258502d26..2d996dbf9 100644 --- a/server/tests/api/index.ts +++ b/server/tests/api/index.ts @@ -1,3 +1,4 @@ // Order of the tests we want to execute -import './index-fast' -import './index-slow' +import './index-1' +import './index-2' +import './index-3' diff --git a/server/tests/api/search/index.ts b/server/tests/api/search/index.ts new file mode 100644 index 000000000..64b3d0910 --- /dev/null +++ b/server/tests/api/search/index.ts @@ -0,0 +1,2 @@ +import './search-activitypub-videos' +import './search-videos' diff --git a/server/tests/api/search/search-activitypub-videos.ts b/server/tests/api/search/search-activitypub-videos.ts new file mode 100644 index 000000000..6dc792696 --- /dev/null +++ b/server/tests/api/search/search-activitypub-videos.ts @@ -0,0 +1,161 @@ +/* tslint:disable:no-unused-expression */ + +import * as chai from 'chai' +import 'mocha' +import { + addVideoChannel, + flushAndRunMultipleServers, + flushTests, + getVideosList, + killallServers, + removeVideo, + searchVideoWithToken, + ServerInfo, + setAccessTokensToServers, + updateVideo, + uploadVideo, + wait, + searchVideo +} from '../../utils' +import { waitJobs } from '../../utils/server/jobs' +import { Video, VideoPrivacy } from '../../../../shared/models/videos' + +const expect = chai.expect + +describe('Test a ActivityPub videos search', function () { + let servers: ServerInfo[] + let videoServer1UUID: string + let videoServer2UUID: string + + before(async function () { + this.timeout(120000) + + await flushTests() + + servers = await flushAndRunMultipleServers(2) + + await setAccessTokensToServers(servers) + + { + const res = await uploadVideo(servers[ 0 ].url, servers[ 0 ].accessToken, { name: 'video 1 on server 1' }) + videoServer1UUID = res.body.video.uuid + } + + { + const res = await uploadVideo(servers[ 1 ].url, servers[ 1 ].accessToken, { name: 'video 1 on server 2' }) + videoServer2UUID = res.body.video.uuid + } + + await waitJobs(servers) + }) + + it('Should not find a remote video', async function () { + { + const res = await searchVideoWithToken(servers[ 0 ].url, 'http://localhost:9002/videos/watch/43', servers[ 0 ].accessToken) + + expect(res.body.total).to.equal(0) + expect(res.body.data).to.be.an('array') + expect(res.body.data).to.have.lengthOf(0) + } + + { + const res = await searchVideo(servers[0].url, 'http://localhost:9002/videos/watch/' + videoServer2UUID) + + expect(res.body.total).to.equal(0) + expect(res.body.data).to.be.an('array') + expect(res.body.data).to.have.lengthOf(0) + } + }) + + it('Should search a local video', async function () { + const res = await searchVideo(servers[0].url, 'http://localhost:9001/videos/watch/' + videoServer1UUID) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.be.an('array') + expect(res.body.data).to.have.lengthOf(1) + expect(res.body.data[0].name).to.equal('video 1 on server 1') + }) + + it('Should search a remote video', async function () { + const res = await searchVideoWithToken(servers[0].url, 'http://localhost:9002/videos/watch/' + videoServer2UUID, servers[0].accessToken) + + expect(res.body.total).to.equal(1) + expect(res.body.data).to.be.an('array') + expect(res.body.data).to.have.lengthOf(1) + expect(res.body.data[0].name).to.equal('video 1 on server 2') + }) + + it('Should not list this remote video', async function () { + const res = await getVideosList(servers[0].url) + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + expect(res.body.data[0].name).to.equal('video 1 on server 1') + }) + + it('Should update video of server 2, and refresh it on server 1', async function () { + this.timeout(60000) + + const channelAttributes = { + name: 'super_channel', + displayName: 'super channel' + } + const resChannel = await addVideoChannel(servers[1].url, servers[1].accessToken, channelAttributes) + const videoChannelId = resChannel.body.videoChannel.id + + const attributes = { + name: 'updated', + tag: [ 'tag1', 'tag2' ], + privacy: VideoPrivacy.UNLISTED, + channelId: videoChannelId + } + await updateVideo(servers[1].url, servers[1].accessToken, videoServer2UUID, attributes) + + await waitJobs(servers) + // Expire video + await wait(10000) + + // Will run refresh async + await searchVideoWithToken(servers[0].url, 'http://localhost:9002/videos/watch/' + videoServer2UUID, servers[0].accessToken) + + // Wait refresh + await wait(5000) + + const res = await searchVideoWithToken(servers[0].url, 'http://localhost:9002/videos/watch/' + videoServer2UUID, servers[0].accessToken) + expect(res.body.total).to.equal(1) + expect(res.body.data).to.have.lengthOf(1) + + const video: Video = res.body.data[0] + expect(video.name).to.equal('updated') + expect(video.channel.name).to.equal('super_channel') + expect(video.privacy.id).to.equal(VideoPrivacy.UNLISTED) + }) + + it('Should delete video of server 2, and delete it on server 1', async function () { + this.timeout(60000) + + await removeVideo(servers[1].url, servers[1].accessToken, videoServer2UUID) + + await waitJobs(servers) + // Expire video + await wait(10000) + + // Will run refresh async + await searchVideoWithToken(servers[0].url, 'http://localhost:9002/videos/watch/' + videoServer2UUID, servers[0].accessToken) + + // Wait refresh + await wait(5000) + + const res = await searchVideoWithToken(servers[0].url, 'http://localhost:9002/videos/watch/' + videoServer2UUID, servers[0].accessToken) + expect(res.body.total).to.equal(0) + expect(res.body.data).to.have.lengthOf(0) + }) + + after(async function () { + killallServers(servers) + + // Keep the logs if the test failed + if (this['ok']) { + await flushTests() + } + }) +}) diff --git a/server/tests/api/server/index.ts b/server/tests/api/server/index.ts new file mode 100644 index 000000000..eeb8b7a28 --- /dev/null +++ b/server/tests/api/server/index.ts @@ -0,0 +1,8 @@ +import './config' +import './email' +import './follows' +import './handle-down' +import './jobs' +import './reverse-proxy' +import './stats' +import './tracker' diff --git a/server/tests/api/users/index.ts b/server/tests/api/users/index.ts new file mode 100644 index 000000000..4ce87fb91 --- /dev/null +++ b/server/tests/api/users/index.ts @@ -0,0 +1,3 @@ +import './user-subscriptions' +import './users' +import './users-multiple-servers' diff --git a/server/tests/api/videos/index.ts b/server/tests/api/videos/index.ts new file mode 100644 index 000000000..9f1230767 --- /dev/null +++ b/server/tests/api/videos/index.ts @@ -0,0 +1,15 @@ +import './multiple-servers' +import './services' +import './single-server' +import './video-abuse' +import './video-blacklist' +import './video-blacklist-management' +import './video-captions' +import './video-channels' +import './video-comme' +import './video-description' +import './video-impo' +import './video-nsfw' +import './video-privacy' +import './video-schedule-update' +import './video-transcoder' diff --git a/server/tests/feeds/index.ts b/server/tests/feeds/index.ts new file mode 100644 index 000000000..aa6236a91 --- /dev/null +++ b/server/tests/feeds/index.ts @@ -0,0 +1 @@ +import './feeds' diff --git a/server/tests/index.ts b/server/tests/index.ts index 755fb2604..e659fd3df 100644 --- a/server/tests/index.ts +++ b/server/tests/index.ts @@ -1,5 +1,6 @@ // Order of the tests we want to execute import './client' import './activitypub' -import './api/' +import './feeds/' import './cli/' +import './api/' -- cgit v1.2.3