aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/tests/utils/users/login.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/tests/utils/users/login.ts')
-rw-r--r--server/tests/utils/users/login.ts59
1 files changed, 59 insertions, 0 deletions
diff --git a/server/tests/utils/users/login.ts b/server/tests/utils/users/login.ts
new file mode 100644
index 000000000..855c4828d
--- /dev/null
+++ b/server/tests/utils/users/login.ts
@@ -0,0 +1,59 @@
1import * as request from 'supertest'
2
3import { ServerInfo } from '../server/servers'
4
5type Client = { id: string, secret: string }
6type User = { username: string, password: string }
7type Server = { url: string, client: Client, user: User }
8
9function 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
29async 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
35async function getUserAccessToken (server: Server, user: User) {
36 const res = await login(server.url, server.client, user, 200)
37
38 return res.body.access_token as string
39}
40
41function 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
54export {
55 login,
56 loginAndGetAccessToken,
57 getUserAccessToken,
58 setAccessTokensToServers
59}