From 9107d791e2eef9a1b24b0499dac8b9dbba8a792f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 29 Apr 2020 09:04:42 +0200 Subject: Add external login tests --- shared/extra-utils/requests/requests.ts | 8 ++++++++ shared/extra-utils/server/plugins.ts | 24 +++++++++++++++++++++++- shared/extra-utils/users/login.ts | 23 ++++++++++++++++++++++- 3 files changed, 53 insertions(+), 2 deletions(-) (limited to 'shared/extra-utils') diff --git a/shared/extra-utils/requests/requests.ts b/shared/extra-utils/requests/requests.ts index 61167f212..0e9d67f0b 100644 --- a/shared/extra-utils/requests/requests.ts +++ b/shared/extra-utils/requests/requests.ts @@ -4,6 +4,7 @@ import * as request from 'supertest' import { buildAbsoluteFixturePath, root } from '../miscs/miscs' import { isAbsolute, join } from 'path' import { URL } from 'url' +import { decode } from 'querystring' function get4KFileUrl () { return 'https://download.cpy.re/peertube/4k_file.txt' @@ -23,6 +24,7 @@ function makeGetRequest (options: { statusCodeExpected?: number contentType?: string range?: string + redirects?: number }) { if (!options.statusCodeExpected) options.statusCodeExpected = 400 if (options.contentType === undefined) options.contentType = 'application/json' @@ -33,6 +35,7 @@ function makeGetRequest (options: { if (options.token) req.set('Authorization', 'Bearer ' + options.token) if (options.query) req.query(options.query) if (options.range) req.set('Range', options.range) + if (options.redirects) req.redirects(options.redirects) return req.expect(options.statusCodeExpected) } @@ -171,12 +174,17 @@ function updateAvatarRequest (options: { }) } +function decodeQueryString (path: string) { + return decode(path.split('?')[1]) +} + // --------------------------------------------------------------------------- export { get4KFileUrl, makeHTMLRequest, makeGetRequest, + decodeQueryString, makeUploadRequest, makePostBodyRequest, makePutBodyRequest, diff --git a/shared/extra-utils/server/plugins.ts b/shared/extra-utils/server/plugins.ts index 2d02d823d..b6b5e3958 100644 --- a/shared/extra-utils/server/plugins.ts +++ b/shared/extra-utils/server/plugins.ts @@ -235,6 +235,27 @@ function getPluginTestPath (suffix = '') { return join(root(), 'server', 'tests', 'fixtures', 'peertube-plugin-test' + suffix) } +function getExternalAuth (options: { + url: string + npmName: string + npmVersion: string + authName: string + query?: any + statusCodeExpected?: number +}) { + const { url, npmName, npmVersion, authName, statusCodeExpected, query } = options + + const path = '/plugins/' + npmName + '/' + npmVersion + '/auth/' + authName + + return makeGetRequest({ + url, + path, + query, + statusCodeExpected: statusCodeExpected || 200, + redirects: 0 + }) +} + export { listPlugins, listAvailablePlugins, @@ -250,5 +271,6 @@ export { updatePluginPackageJSON, getPluginPackageJSON, getPluginTestPath, - getPublicSettings + getPublicSettings, + getExternalAuth } diff --git a/shared/extra-utils/users/login.ts b/shared/extra-utils/users/login.ts index b12b51b8c..275bb0826 100644 --- a/shared/extra-utils/users/login.ts +++ b/shared/extra-utils/users/login.ts @@ -95,6 +95,26 @@ function setAccessTokensToServers (servers: ServerInfo[]) { return Promise.all(tasks) } +function loginUsingExternalToken (server: Server, username: string, externalAuthToken: string, expectedStatus = 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 { @@ -107,5 +127,6 @@ export { setAccessTokensToServers, Server, Client, - User + User, + loginUsingExternalToken } -- cgit v1.2.3