diff options
Diffstat (limited to 'server/tests/api/search/search-activitypub-video-channels.ts')
-rw-r--r-- | server/tests/api/search/search-activitypub-video-channels.ts | 171 |
1 files changed, 87 insertions, 84 deletions
diff --git a/server/tests/api/search/search-activitypub-video-channels.ts b/server/tests/api/search/search-activitypub-video-channels.ts index e83eb7171..426cbc8e1 100644 --- a/server/tests/api/search/search-activitypub-video-channels.ts +++ b/server/tests/api/search/search-activitypub-video-channels.ts | |||
@@ -1,69 +1,63 @@ | |||
1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ | 1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ |
2 | 2 | ||
3 | import * as chai from 'chai' | ||
4 | import 'mocha' | 3 | import 'mocha' |
4 | import * as chai from 'chai' | ||
5 | import { | 5 | import { |
6 | addVideoChannel, | ||
7 | cleanupTests, | 6 | cleanupTests, |
8 | createUser, | 7 | createMultipleServers, |
9 | deleteVideoChannel, | 8 | PeerTubeServer, |
10 | flushAndRunMultipleServers, | 9 | SearchCommand, |
11 | getVideoChannelsList, | ||
12 | getVideoChannelVideos, | ||
13 | ServerInfo, | ||
14 | setAccessTokensToServers, | 10 | setAccessTokensToServers, |
15 | updateMyUser, | 11 | wait, |
16 | updateVideo, | 12 | waitJobs |
17 | updateVideoChannel, | 13 | } from '@shared/extra-utils' |
18 | uploadVideo, | 14 | import { VideoChannel } from '@shared/models' |
19 | userLogin, | ||
20 | wait | ||
21 | } from '../../../../shared/extra-utils' | ||
22 | import { waitJobs } from '../../../../shared/extra-utils/server/jobs' | ||
23 | import { VideoChannel } from '../../../../shared/models/videos' | ||
24 | import { searchVideoChannel } from '../../../../shared/extra-utils/search/video-channels' | ||
25 | 15 | ||
26 | const expect = chai.expect | 16 | const expect = chai.expect |
27 | 17 | ||
28 | describe('Test ActivityPub video channels search', function () { | 18 | describe('Test ActivityPub video channels search', function () { |
29 | let servers: ServerInfo[] | 19 | let servers: PeerTubeServer[] |
30 | let userServer2Token: string | 20 | let userServer2Token: string |
31 | let videoServer2UUID: string | 21 | let videoServer2UUID: string |
32 | let channelIdServer2: number | 22 | let channelIdServer2: number |
23 | let command: SearchCommand | ||
33 | 24 | ||
34 | before(async function () { | 25 | before(async function () { |
35 | this.timeout(120000) | 26 | this.timeout(120000) |
36 | 27 | ||
37 | servers = await flushAndRunMultipleServers(2) | 28 | servers = await createMultipleServers(2) |
38 | 29 | ||
39 | await setAccessTokensToServers(servers) | 30 | await setAccessTokensToServers(servers) |
40 | 31 | ||
41 | { | 32 | { |
42 | await createUser({ url: servers[0].url, accessToken: servers[0].accessToken, username: 'user1_server1', password: 'password' }) | 33 | await servers[0].users.create({ username: 'user1_server1', password: 'password' }) |
43 | const channel = { | 34 | const channel = { |
44 | name: 'channel1_server1', | 35 | name: 'channel1_server1', |
45 | displayName: 'Channel 1 server 1' | 36 | displayName: 'Channel 1 server 1' |
46 | } | 37 | } |
47 | await addVideoChannel(servers[0].url, servers[0].accessToken, channel) | 38 | await servers[0].channels.create({ attributes: channel }) |
48 | } | 39 | } |
49 | 40 | ||
50 | { | 41 | { |
51 | const user = { username: 'user1_server2', password: 'password' } | 42 | const user = { username: 'user1_server2', password: 'password' } |
52 | await createUser({ url: servers[1].url, accessToken: servers[1].accessToken, username: user.username, password: user.password }) | 43 | await servers[1].users.create({ username: user.username, password: user.password }) |
53 | userServer2Token = await userLogin(servers[1], user) | 44 | userServer2Token = await servers[1].login.getAccessToken(user) |
54 | 45 | ||
55 | const channel = { | 46 | const channel = { |
56 | name: 'channel1_server2', | 47 | name: 'channel1_server2', |
57 | displayName: 'Channel 1 server 2' | 48 | displayName: 'Channel 1 server 2' |
58 | } | 49 | } |
59 | const resChannel = await addVideoChannel(servers[1].url, userServer2Token, channel) | 50 | const created = await servers[1].channels.create({ token: userServer2Token, attributes: channel }) |
60 | channelIdServer2 = resChannel.body.videoChannel.id | 51 | channelIdServer2 = created.id |
61 | 52 | ||
62 | const res = await uploadVideo(servers[1].url, userServer2Token, { name: 'video 1 server 2', channelId: channelIdServer2 }) | 53 | const attributes = { name: 'video 1 server 2', channelId: channelIdServer2 } |
63 | videoServer2UUID = res.body.video.uuid | 54 | const { uuid } = await servers[1].videos.upload({ token: userServer2Token, attributes }) |
55 | videoServer2UUID = uuid | ||
64 | } | 56 | } |
65 | 57 | ||
66 | await waitJobs(servers) | 58 | await waitJobs(servers) |
59 | |||
60 | command = servers[0].search | ||
67 | }) | 61 | }) |
68 | 62 | ||
69 | it('Should not find a remote video channel', async function () { | 63 | it('Should not find a remote video channel', async function () { |
@@ -71,21 +65,21 @@ describe('Test ActivityPub video channels search', function () { | |||
71 | 65 | ||
72 | { | 66 | { |
73 | const search = 'http://localhost:' + servers[1].port + '/video-channels/channel1_server3' | 67 | const search = 'http://localhost:' + servers[1].port + '/video-channels/channel1_server3' |
74 | const res = await searchVideoChannel(servers[0].url, search, servers[0].accessToken) | 68 | const body = await command.searchChannels({ search, token: servers[0].accessToken }) |
75 | 69 | ||
76 | expect(res.body.total).to.equal(0) | 70 | expect(body.total).to.equal(0) |
77 | expect(res.body.data).to.be.an('array') | 71 | expect(body.data).to.be.an('array') |
78 | expect(res.body.data).to.have.lengthOf(0) | 72 | expect(body.data).to.have.lengthOf(0) |
79 | } | 73 | } |
80 | 74 | ||
81 | { | 75 | { |
82 | // Without token | 76 | // Without token |
83 | const search = 'http://localhost:' + servers[1].port + '/video-channels/channel1_server2' | 77 | const search = 'http://localhost:' + servers[1].port + '/video-channels/channel1_server2' |
84 | const res = await searchVideoChannel(servers[0].url, search) | 78 | const body = await command.searchChannels({ search }) |
85 | 79 | ||
86 | expect(res.body.total).to.equal(0) | 80 | expect(body.total).to.equal(0) |
87 | expect(res.body.data).to.be.an('array') | 81 | expect(body.data).to.be.an('array') |
88 | expect(res.body.data).to.have.lengthOf(0) | 82 | expect(body.data).to.have.lengthOf(0) |
89 | } | 83 | } |
90 | }) | 84 | }) |
91 | 85 | ||
@@ -96,13 +90,13 @@ describe('Test ActivityPub video channels search', function () { | |||
96 | ] | 90 | ] |
97 | 91 | ||
98 | for (const search of searches) { | 92 | for (const search of searches) { |
99 | const res = await searchVideoChannel(servers[0].url, search) | 93 | const body = await command.searchChannels({ search }) |
100 | 94 | ||
101 | expect(res.body.total).to.equal(1) | 95 | expect(body.total).to.equal(1) |
102 | expect(res.body.data).to.be.an('array') | 96 | expect(body.data).to.be.an('array') |
103 | expect(res.body.data).to.have.lengthOf(1) | 97 | expect(body.data).to.have.lengthOf(1) |
104 | expect(res.body.data[0].name).to.equal('channel1_server1') | 98 | expect(body.data[0].name).to.equal('channel1_server1') |
105 | expect(res.body.data[0].displayName).to.equal('Channel 1 server 1') | 99 | expect(body.data[0].displayName).to.equal('Channel 1 server 1') |
106 | } | 100 | } |
107 | }) | 101 | }) |
108 | 102 | ||
@@ -110,13 +104,13 @@ describe('Test ActivityPub video channels search', function () { | |||
110 | const search = 'http://localhost:' + servers[0].port + '/c/channel1_server1' | 104 | const search = 'http://localhost:' + servers[0].port + '/c/channel1_server1' |
111 | 105 | ||
112 | for (const token of [ undefined, servers[0].accessToken ]) { | 106 | for (const token of [ undefined, servers[0].accessToken ]) { |
113 | const res = await searchVideoChannel(servers[0].url, search, token) | 107 | const body = await command.searchChannels({ search, token }) |
114 | 108 | ||
115 | expect(res.body.total).to.equal(1) | 109 | expect(body.total).to.equal(1) |
116 | expect(res.body.data).to.be.an('array') | 110 | expect(body.data).to.be.an('array') |
117 | expect(res.body.data).to.have.lengthOf(1) | 111 | expect(body.data).to.have.lengthOf(1) |
118 | expect(res.body.data[0].name).to.equal('channel1_server1') | 112 | expect(body.data[0].name).to.equal('channel1_server1') |
119 | expect(res.body.data[0].displayName).to.equal('Channel 1 server 1') | 113 | expect(body.data[0].displayName).to.equal('Channel 1 server 1') |
120 | } | 114 | } |
121 | }) | 115 | }) |
122 | 116 | ||
@@ -129,23 +123,23 @@ describe('Test ActivityPub video channels search', function () { | |||
129 | ] | 123 | ] |
130 | 124 | ||
131 | for (const search of searches) { | 125 | for (const search of searches) { |
132 | const res = await searchVideoChannel(servers[0].url, search, servers[0].accessToken) | 126 | const body = await command.searchChannels({ search, token: servers[0].accessToken }) |
133 | 127 | ||
134 | expect(res.body.total).to.equal(1) | 128 | expect(body.total).to.equal(1) |
135 | expect(res.body.data).to.be.an('array') | 129 | expect(body.data).to.be.an('array') |
136 | expect(res.body.data).to.have.lengthOf(1) | 130 | expect(body.data).to.have.lengthOf(1) |
137 | expect(res.body.data[0].name).to.equal('channel1_server2') | 131 | expect(body.data[0].name).to.equal('channel1_server2') |
138 | expect(res.body.data[0].displayName).to.equal('Channel 1 server 2') | 132 | expect(body.data[0].displayName).to.equal('Channel 1 server 2') |
139 | } | 133 | } |
140 | }) | 134 | }) |
141 | 135 | ||
142 | it('Should not list this remote video channel', async function () { | 136 | it('Should not list this remote video channel', async function () { |
143 | const res = await getVideoChannelsList(servers[0].url, 0, 5) | 137 | const body = await servers[0].channels.list() |
144 | expect(res.body.total).to.equal(3) | 138 | expect(body.total).to.equal(3) |
145 | expect(res.body.data).to.have.lengthOf(3) | 139 | expect(body.data).to.have.lengthOf(3) |
146 | expect(res.body.data[0].name).to.equal('channel1_server1') | 140 | expect(body.data[0].name).to.equal('channel1_server1') |
147 | expect(res.body.data[1].name).to.equal('user1_server1_channel') | 141 | expect(body.data[1].name).to.equal('user1_server1_channel') |
148 | expect(res.body.data[2].name).to.equal('root_channel') | 142 | expect(body.data[2].name).to.equal('root_channel') |
149 | }) | 143 | }) |
150 | 144 | ||
151 | it('Should list video channel videos of server 2 without token', async function () { | 145 | it('Should list video channel videos of server 2 without token', async function () { |
@@ -153,34 +147,43 @@ describe('Test ActivityPub video channels search', function () { | |||
153 | 147 | ||
154 | await waitJobs(servers) | 148 | await waitJobs(servers) |
155 | 149 | ||
156 | const res = await getVideoChannelVideos(servers[0].url, null, 'channel1_server2@localhost:' + servers[1].port, 0, 5) | 150 | const { total, data } = await servers[0].videos.listByChannel({ |
157 | expect(res.body.total).to.equal(0) | 151 | token: null, |
158 | expect(res.body.data).to.have.lengthOf(0) | 152 | handle: 'channel1_server2@localhost:' + servers[1].port |
153 | }) | ||
154 | expect(total).to.equal(0) | ||
155 | expect(data).to.have.lengthOf(0) | ||
159 | }) | 156 | }) |
160 | 157 | ||
161 | it('Should list video channel videos of server 2 with token', async function () { | 158 | it('Should list video channel videos of server 2 with token', async function () { |
162 | const res = await getVideoChannelVideos(servers[0].url, servers[0].accessToken, 'channel1_server2@localhost:' + servers[1].port, 0, 5) | 159 | const { total, data } = await servers[0].videos.listByChannel({ |
160 | handle: 'channel1_server2@localhost:' + servers[1].port | ||
161 | }) | ||
163 | 162 | ||
164 | expect(res.body.total).to.equal(1) | 163 | expect(total).to.equal(1) |
165 | expect(res.body.data[0].name).to.equal('video 1 server 2') | 164 | expect(data[0].name).to.equal('video 1 server 2') |
166 | }) | 165 | }) |
167 | 166 | ||
168 | it('Should update video channel of server 2, and refresh it on server 1', async function () { | 167 | it('Should update video channel of server 2, and refresh it on server 1', async function () { |
169 | this.timeout(60000) | 168 | this.timeout(60000) |
170 | 169 | ||
171 | await updateVideoChannel(servers[1].url, userServer2Token, 'channel1_server2', { displayName: 'channel updated' }) | 170 | await servers[1].channels.update({ |
172 | await updateMyUser({ url: servers[1].url, accessToken: userServer2Token, displayName: 'user updated' }) | 171 | token: userServer2Token, |
172 | channelName: 'channel1_server2', | ||
173 | attributes: { displayName: 'channel updated' } | ||
174 | }) | ||
175 | await servers[1].users.updateMe({ token: userServer2Token, displayName: 'user updated' }) | ||
173 | 176 | ||
174 | await waitJobs(servers) | 177 | await waitJobs(servers) |
175 | // Expire video channel | 178 | // Expire video channel |
176 | await wait(10000) | 179 | await wait(10000) |
177 | 180 | ||
178 | const search = 'http://localhost:' + servers[1].port + '/video-channels/channel1_server2' | 181 | const search = 'http://localhost:' + servers[1].port + '/video-channels/channel1_server2' |
179 | const res = await searchVideoChannel(servers[0].url, search, servers[0].accessToken) | 182 | const body = await command.searchChannels({ search, token: servers[0].accessToken }) |
180 | expect(res.body.total).to.equal(1) | 183 | expect(body.total).to.equal(1) |
181 | expect(res.body.data).to.have.lengthOf(1) | 184 | expect(body.data).to.have.lengthOf(1) |
182 | 185 | ||
183 | const videoChannel: VideoChannel = res.body.data[0] | 186 | const videoChannel: VideoChannel = body.data[0] |
184 | expect(videoChannel.displayName).to.equal('channel updated') | 187 | expect(videoChannel.displayName).to.equal('channel updated') |
185 | 188 | ||
186 | // We don't return the owner account for now | 189 | // We don't return the owner account for now |
@@ -190,8 +193,8 @@ describe('Test ActivityPub video channels search', function () { | |||
190 | it('Should update and add a video on server 2, and update it on server 1 after a search', async function () { | 193 | it('Should update and add a video on server 2, and update it on server 1 after a search', async function () { |
191 | this.timeout(60000) | 194 | this.timeout(60000) |
192 | 195 | ||
193 | await updateVideo(servers[1].url, userServer2Token, videoServer2UUID, { name: 'video 1 updated' }) | 196 | await servers[1].videos.update({ token: userServer2Token, id: videoServer2UUID, attributes: { name: 'video 1 updated' } }) |
194 | await uploadVideo(servers[1].url, userServer2Token, { name: 'video 2 server 2', channelId: channelIdServer2 }) | 197 | await servers[1].videos.upload({ token: userServer2Token, attributes: { name: 'video 2 server 2', channelId: channelIdServer2 } }) |
195 | 198 | ||
196 | await waitJobs(servers) | 199 | await waitJobs(servers) |
197 | 200 | ||
@@ -199,31 +202,31 @@ describe('Test ActivityPub video channels search', function () { | |||
199 | await wait(10000) | 202 | await wait(10000) |
200 | 203 | ||
201 | const search = 'http://localhost:' + servers[1].port + '/video-channels/channel1_server2' | 204 | const search = 'http://localhost:' + servers[1].port + '/video-channels/channel1_server2' |
202 | await searchVideoChannel(servers[0].url, search, servers[0].accessToken) | 205 | await command.searchChannels({ search, token: servers[0].accessToken }) |
203 | 206 | ||
204 | await waitJobs(servers) | 207 | await waitJobs(servers) |
205 | 208 | ||
206 | const videoChannelName = 'channel1_server2@localhost:' + servers[1].port | 209 | const handle = 'channel1_server2@localhost:' + servers[1].port |
207 | const res = await getVideoChannelVideos(servers[0].url, servers[0].accessToken, videoChannelName, 0, 5, '-createdAt') | 210 | const { total, data } = await servers[0].videos.listByChannel({ handle, sort: '-createdAt' }) |
208 | 211 | ||
209 | expect(res.body.total).to.equal(2) | 212 | expect(total).to.equal(2) |
210 | expect(res.body.data[0].name).to.equal('video 2 server 2') | 213 | expect(data[0].name).to.equal('video 2 server 2') |
211 | expect(res.body.data[1].name).to.equal('video 1 updated') | 214 | expect(data[1].name).to.equal('video 1 updated') |
212 | }) | 215 | }) |
213 | 216 | ||
214 | it('Should delete video channel of server 2, and delete it on server 1', async function () { | 217 | it('Should delete video channel of server 2, and delete it on server 1', async function () { |
215 | this.timeout(60000) | 218 | this.timeout(60000) |
216 | 219 | ||
217 | await deleteVideoChannel(servers[1].url, userServer2Token, 'channel1_server2') | 220 | await servers[1].channels.delete({ token: userServer2Token, channelName: 'channel1_server2' }) |
218 | 221 | ||
219 | await waitJobs(servers) | 222 | await waitJobs(servers) |
220 | // Expire video | 223 | // Expire video |
221 | await wait(10000) | 224 | await wait(10000) |
222 | 225 | ||
223 | const search = 'http://localhost:' + servers[1].port + '/video-channels/channel1_server2' | 226 | const search = 'http://localhost:' + servers[1].port + '/video-channels/channel1_server2' |
224 | const res = await searchVideoChannel(servers[0].url, search, servers[0].accessToken) | 227 | const body = await command.searchChannels({ search, token: servers[0].accessToken }) |
225 | expect(res.body.total).to.equal(0) | 228 | expect(body.total).to.equal(0) |
226 | expect(res.body.data).to.have.lengthOf(0) | 229 | expect(body.data).to.have.lengthOf(0) |
227 | }) | 230 | }) |
228 | 231 | ||
229 | after(async function () { | 232 | after(async function () { |