]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - shared/utils/users/accounts.ts
Add /accounts/:username/ratings endpoint (#1756)
[github/Chocobozzz/PeerTube.git] / shared / utils / users / accounts.ts
1 /* tslint:disable:no-unused-expression */
2
3 import * as request from 'supertest'
4 import { expect } from 'chai'
5 import { existsSync, readdir } from 'fs-extra'
6 import { join } from 'path'
7 import { Account } from '../../models/actors'
8 import { root } from '../miscs/miscs'
9 import { makeGetRequest } from '../requests/requests'
10
11 function getAccountsList (url: string, sort = '-createdAt', statusCodeExpected = 200) {
12 const path = '/api/v1/accounts'
13
14 return makeGetRequest({
15 url,
16 query: { sort },
17 path,
18 statusCodeExpected
19 })
20 }
21
22 function getAccount (url: string, accountName: string, statusCodeExpected = 200) {
23 const path = '/api/v1/accounts/' + accountName
24
25 return makeGetRequest({
26 url,
27 path,
28 statusCodeExpected
29 })
30 }
31
32 async function expectAccountFollows (url: string, nameWithDomain: string, followersCount: number, followingCount: number) {
33 const res = await getAccountsList(url)
34 const account = res.body.data.find((a: Account) => a.name + '@' + a.host === nameWithDomain)
35
36 const message = `${nameWithDomain} on ${url}`
37 expect(account.followersCount).to.equal(followersCount, message)
38 expect(account.followingCount).to.equal(followingCount, message)
39 }
40
41 async function checkActorFilesWereRemoved (actorUUID: string, serverNumber: number) {
42 const testDirectory = 'test' + serverNumber
43
44 for (const directory of [ 'avatars' ]) {
45 const directoryPath = join(root(), testDirectory, directory)
46
47 const directoryExists = existsSync(directoryPath)
48 expect(directoryExists).to.be.true
49
50 const files = await readdir(directoryPath)
51 for (const file of files) {
52 expect(file).to.not.contain(actorUUID)
53 }
54 }
55 }
56
57 function getAccountRatings (url: string, accountName: string, accessToken: string, statusCodeExpected = 200, query = {}) {
58 const path = '/api/v1/accounts/' + accountName + '/ratings'
59
60 return request(url)
61 .get(path)
62 .query(query)
63 .set('Accept', 'application/json')
64 .set('Authorization', 'Bearer ' + accessToken)
65 .expect(statusCodeExpected)
66 .expect('Content-Type', /json/)
67 }
68
69 // ---------------------------------------------------------------------------
70
71 export {
72 getAccount,
73 expectAccountFollows,
74 getAccountsList,
75 checkActorFilesWereRemoved,
76 getAccountRatings
77 }