]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tests/utils/follows.ts
Add follow tests
[github/Chocobozzz/PeerTube.git] / server / tests / utils / follows.ts
CommitLineData
4610bc5b 1import * as request from 'supertest'
4610bc5b 2import { wait } from './miscs'
afffe988 3import { ServerInfo } from './servers'
4610bc5b
C
4
5function getFollowersListPaginationAndSort (url: string, start: number, count: number, sort: string) {
afffe988 6 const path = '/api/v1/server/followers'
4610bc5b
C
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
18function getFollowingListPaginationAndSort (url: string, start: number, count: number, sort: string) {
afffe988 19 const path = '/api/v1/server/following'
4610bc5b
C
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
31async function follow (follower: string, following: string[], accessToken: string, expectedStatus = 204) {
9a27cdc2 32 const path = '/api/v1/server/following'
4610bc5b 33
afffe988 34 const followingHosts = following.map(f => f.replace(/^http:\/\//, ''))
4610bc5b
C
35 const res = await request(follower)
36 .post(path)
37 .set('Accept', 'application/json')
38 .set('Authorization', 'Bearer ' + accessToken)
afffe988 39 .send({ 'hosts': followingHosts })
4610bc5b
C
40 .expect(expectedStatus)
41
4610bc5b
C
42 return res
43}
44
0f91ae62
C
45async function unfollow (url: string, accessToken: string, id: number, expectedStatus = 204) {
46 const path = '/api/v1/server/following/' + id
47
48 const res = await request(url)
49 .delete(path)
50 .set('Accept', 'application/json')
51 .set('Authorization', 'Bearer ' + accessToken)
52 .expect(expectedStatus)
53
54 return res
55}
56
afffe988
C
57async function doubleFollow (server1: ServerInfo, server2: ServerInfo) {
58 await Promise.all([
59 follow(server1.url, [ server2.url ], server1.accessToken),
60 follow(server2.url, [ server1.url ], server2.accessToken)
61 ])
62
572f8d3d
C
63 // Wait request propagation
64 await wait(20000)
65
afffe988
C
66 return true
67}
68
4610bc5b
C
69// ---------------------------------------------------------------------------
70
71export {
72 getFollowersListPaginationAndSort,
73 getFollowingListPaginationAndSort,
0f91ae62 74 unfollow,
afffe988
C
75 follow,
76 doubleFollow
4610bc5b 77}