]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/tests/utils/login.ts
Convert tests to typescript
[github/Chocobozzz/PeerTube.git] / server / tests / utils / login.ts
1 import * as request from 'supertest'
2
3 import { ServerInfo } from './servers'
4
5 type Client = { id: string, secret: string }
6 type User = { username: string, password: string }
7 type Server = { url: string, client: Client, user: User }
8
9 function login (url: string, client: Client, user: User, expectedStatus = 200) {
10 const path = '/api/v1/users/token'
11
12 const body = {
13 client_id: client.id,
14 client_secret: client.secret,
15 username: user.username,
16 password: user.password,
17 response_type: 'code',
18 grant_type: 'password',
19 scope: 'upload'
20 }
21
22 return request(url)
23 .post(path)
24 .type('form')
25 .send(body)
26 .expect(expectedStatus)
27 }
28
29 async function loginAndGetAccessToken (server: Server) {
30 const res = await login(server.url, server.client, server.user, 200)
31
32 return res.body.access_token as string
33 }
34
35 async function getUserAccessToken (server, user) {
36 const res = await login(server.url, server.client, user, 200)
37
38 return res.body.access_token as string
39 }
40
41 function setAccessTokensToServers (servers: ServerInfo[]) {
42 const tasks: Promise<any>[] = []
43
44 for (const server of servers) {
45 const p = loginAndGetAccessToken(server).then(t => server.accessToken = t)
46 tasks.push(p)
47 }
48
49 return Promise.all(tasks)
50 }
51
52 // ---------------------------------------------------------------------------
53
54 export {
55 login,
56 loginAndGetAccessToken,
57 getUserAccessToken,
58 setAccessTokensToServers
59 }