X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fextra-utils%2Frequests%2Frequests.ts;h=8c26a3699f99b84dc6e9b6bd862692e3c5ea2573;hb=c1bc8ee4783d6ce3102524e6c2a02b2f0f6aab6d;hp=61167f212db424cfab522c6f478d79fa5f25eb6d;hpb=2ad9dcda240ee843c5e4a5b98cc94f7b2aab2c89;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/extra-utils/requests/requests.ts b/shared/extra-utils/requests/requests.ts index 61167f212..8c26a3699 100644 --- a/shared/extra-utils/requests/requests.ts +++ b/shared/extra-utils/requests/requests.ts @@ -4,12 +4,14 @@ import * as request from 'supertest' import { buildAbsoluteFixturePath, root } from '../miscs/miscs' import { isAbsolute, join } from 'path' import { URL } from 'url' +import { decode } from 'querystring' +import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' function get4KFileUrl () { return 'https://download.cpy.re/peertube/4k_file.txt' } -function makeRawRequest (url: string, statusCodeExpected?: number, range?: string) { +function makeRawRequest (url: string, statusCodeExpected?: HttpStatusCode, range?: string) { const { host, protocol, pathname } = new URL(url) return makeGetRequest({ url: `${protocol}//${host}`, path: pathname, statusCodeExpected, range }) @@ -20,11 +22,13 @@ function makeGetRequest (options: { path?: string query?: any token?: string - statusCodeExpected?: number + statusCodeExpected?: HttpStatusCode contentType?: string range?: string + redirects?: number + accept?: string }) { - if (!options.statusCodeExpected) options.statusCodeExpected = 400 + if (!options.statusCodeExpected) options.statusCodeExpected = HttpStatusCode.BAD_REQUEST_400 if (options.contentType === undefined) options.contentType = 'application/json' const req = request(options.url).get(options.path) @@ -33,6 +37,8 @@ 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.accept) req.set('Accept', options.accept) + if (options.redirects) req.redirects(options.redirects) return req.expect(options.statusCodeExpected) } @@ -41,9 +47,9 @@ function makeDeleteRequest (options: { url: string path: string token?: string - statusCodeExpected?: number + statusCodeExpected?: HttpStatusCode }) { - if (!options.statusCodeExpected) options.statusCodeExpected = 400 + if (!options.statusCodeExpected) options.statusCodeExpected = HttpStatusCode.BAD_REQUEST_400 const req = request(options.url) .delete(options.path) @@ -60,10 +66,10 @@ function makeUploadRequest (options: { path: string token?: string fields: { [ fieldName: string ]: any } - attaches: { [ attachName: string ]: any | any[] } - statusCodeExpected?: number + attaches?: { [ attachName: string ]: any | any[] } + statusCodeExpected?: HttpStatusCode }) { - if (!options.statusCodeExpected) options.statusCodeExpected = 400 + if (!options.statusCodeExpected) options.statusCodeExpected = HttpStatusCode.BAD_REQUEST_400 let req: request.Test if (options.method === 'PUT') { @@ -90,7 +96,7 @@ function makeUploadRequest (options: { } }) - Object.keys(options.attaches).forEach(attach => { + Object.keys(options.attaches || {}).forEach(attach => { const value = options.attaches[attach] if (Array.isArray(value)) { req.attach(attach, buildAbsoluteFixturePath(value[0]), value[1]) @@ -107,10 +113,10 @@ function makePostBodyRequest (options: { path: string token?: string fields?: { [ fieldName: string ]: any } - statusCodeExpected?: number + statusCodeExpected?: HttpStatusCode }) { if (!options.fields) options.fields = {} - if (!options.statusCodeExpected) options.statusCodeExpected = 400 + if (!options.statusCodeExpected) options.statusCodeExpected = HttpStatusCode.BAD_REQUEST_400 const req = request(options.url) .post(options.path) @@ -127,9 +133,9 @@ function makePutBodyRequest (options: { path: string token?: string fields: { [ fieldName: string ]: any } - statusCodeExpected?: number + statusCodeExpected?: HttpStatusCode }) { - if (!options.statusCodeExpected) options.statusCodeExpected = 400 + if (!options.statusCodeExpected) options.statusCodeExpected = HttpStatusCode.BAD_REQUEST_400 const req = request(options.url) .put(options.path) @@ -145,14 +151,15 @@ function makeHTMLRequest (url: string, path: string) { return request(url) .get(path) .set('Accept', 'text/html') - .expect(200) + .expect(HttpStatusCode.OK_200) } -function updateAvatarRequest (options: { +function updateImageRequest (options: { url: string path: string accessToken: string fixture: string + fieldname: string }) { let filePath = '' if (isAbsolute(options.fixture)) { @@ -166,21 +173,36 @@ function updateAvatarRequest (options: { path: options.path, token: options.accessToken, fields: {}, - attaches: { avatarfile: filePath }, - statusCodeExpected: 200 + attaches: { [options.fieldname]: filePath }, + statusCodeExpected: HttpStatusCode.OK_200 }) } +function decodeQueryString (path: string) { + return decode(path.split('?')[1]) +} + +function unwrapBody (test: request.Test): Promise { + return test.then(res => res.body) +} + +function unwrapText (test: request.Test): Promise { + return test.then(res => res.text) +} + // --------------------------------------------------------------------------- export { get4KFileUrl, makeHTMLRequest, makeGetRequest, + decodeQueryString, makeUploadRequest, makePostBodyRequest, makePutBodyRequest, makeDeleteRequest, makeRawRequest, - updateAvatarRequest + unwrapBody, + unwrapText, + updateImageRequest }