]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/extra-utils/users/login.ts
Translated using Weblate (Kabyle)
[github/Chocobozzz/PeerTube.git] / shared / extra-utils / users / login.ts
index 4fe54a74a5f86db964b8e45b9eed532208b063db..39e1a2747d0e93ccd39ab549e9b58885b8928bbc 100644 (file)
@@ -2,12 +2,13 @@ import * as request from 'supertest'
 
 import { ServerInfo } from '../server/servers'
 import { getClient } from '../server/clients'
+import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
 
 type Client = { id: string, secret: string }
 type User = { username: string, password: string }
 type Server = { url: string, client: Client, user: User }
 
-function login (url: string, client: Client, user: User, expectedStatus = 200) {
+function login (url: string, client: Client, user: User, expectedStatus = HttpStatusCode.OK_200) {
   const path = '/api/v1/users/token'
 
   const body = {
@@ -27,13 +28,41 @@ function login (url: string, client: Client, user: User, expectedStatus = 200) {
           .expect(expectedStatus)
 }
 
+function logout (url: string, token: string, expectedStatus = HttpStatusCode.OK_200) {
+  const path = '/api/v1/users/revoke-token'
+
+  return request(url)
+    .post(path)
+    .set('Authorization', 'Bearer ' + token)
+    .type('form')
+    .expect(expectedStatus)
+}
+
 async function serverLogin (server: Server) {
-  const res = await login(server.url, server.client, server.user, 200)
+  const res = await login(server.url, server.client, server.user, HttpStatusCode.OK_200)
 
   return res.body.access_token as string
 }
 
-async function userLogin (server: Server, user: User, expectedStatus = 200) {
+function refreshToken (server: ServerInfo, refreshToken: string, expectedStatus = HttpStatusCode.OK_200) {
+  const path = '/api/v1/users/token'
+
+  const body = {
+    client_id: server.client.id,
+    client_secret: server.client.secret,
+    refresh_token: refreshToken,
+    response_type: 'code',
+    grant_type: 'refresh_token'
+  }
+
+  return request(server.url)
+    .post(path)
+    .type('form')
+    .send(body)
+    .expect(expectedStatus)
+}
+
+async function userLogin (server: Server, user: User, expectedStatus = HttpStatusCode.OK_200) {
   const res = await login(server.url, server.client, user, expectedStatus)
 
   return res.body.access_token as string
@@ -67,15 +96,38 @@ function setAccessTokensToServers (servers: ServerInfo[]) {
   return Promise.all(tasks)
 }
 
+function loginUsingExternalToken (server: Server, username: string, externalAuthToken: string, expectedStatus = HttpStatusCode.OK_200) {
+  const path = '/api/v1/users/token'
+
+  const body = {
+    client_id: server.client.id,
+    client_secret: server.client.secret,
+    username: username,
+    response_type: 'code',
+    grant_type: 'password',
+    scope: 'upload',
+    externalAuthToken
+  }
+
+  return request(server.url)
+          .post(path)
+          .type('form')
+          .send(body)
+          .expect(expectedStatus)
+}
+
 // ---------------------------------------------------------------------------
 
 export {
   login,
+  logout,
   serverLogin,
+  refreshToken,
   userLogin,
   getAccessToken,
   setAccessTokensToServers,
   Server,
   Client,
-  User
+  User,
+  loginUsingExternalToken
 }