]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/tests/utils/follows.ts
Speed up activity pub http requests
[github/Chocobozzz/PeerTube.git] / server / tests / utils / follows.ts
1 import * as request from 'supertest'
2 import { wait } from './miscs'
3 import { ServerInfo } from './servers'
4
5 function getFollowersListPaginationAndSort (url: string, start: number, count: number, sort: string) {
6 const path = '/api/v1/server/followers'
7
8 return request(url)
9 .get(path)
10 .query({ start })
11 .query({ count })
12 .query({ sort })
13 .set('Accept', 'application/json')
14 .expect(200)
15 .expect('Content-Type', /json/)
16 }
17
18 function getFollowingListPaginationAndSort (url: string, start: number, count: number, sort: string) {
19 const path = '/api/v1/server/following'
20
21 return request(url)
22 .get(path)
23 .query({ start })
24 .query({ count })
25 .query({ sort })
26 .set('Accept', 'application/json')
27 .expect(200)
28 .expect('Content-Type', /json/)
29 }
30
31 async function follow (follower: string, following: string[], accessToken: string, expectedStatus = 204) {
32 const path = '/api/v1/server/follow'
33
34 const followingHosts = following.map(f => f.replace(/^http:\/\//, ''))
35 const res = await request(follower)
36 .post(path)
37 .set('Accept', 'application/json')
38 .set('Authorization', 'Bearer ' + accessToken)
39 .send({ 'hosts': followingHosts })
40 .expect(expectedStatus)
41
42 // Wait request propagation
43 await wait(20000)
44
45 return res
46 }
47
48 async function doubleFollow (server1: ServerInfo, server2: ServerInfo) {
49 await Promise.all([
50 follow(server1.url, [ server2.url ], server1.accessToken),
51 follow(server2.url, [ server1.url ], server2.accessToken)
52 ])
53
54 return true
55 }
56
57 // ---------------------------------------------------------------------------
58
59 export {
60 getFollowersListPaginationAndSort,
61 getFollowingListPaginationAndSort,
62 follow,
63 doubleFollow
64 }