/* eslint-disable @typescript-eslint/no-floating-promises */
import { decode } from 'querystring'
-import * as request from 'supertest'
+import request from 'supertest'
import { URL } from 'url'
import { HttpStatusCode } from '@shared/models'
import { buildAbsoluteFixturePath } from '../miscs/tests'
function makeGetRequest (options: CommonRequestParams & {
query?: any
+ rawQuery?: string
}) {
const req = request(options.url).get(options.path)
- .query(options.query)
+
+ if (options.query) req.query(options.query)
+ if (options.rawQuery) req.query(options.rawQuery)
return buildRequest(req, { contentType: 'application/json', expectedStatus: HttpStatusCode.BAD_REQUEST_400, ...options })
}
})
}
-function makeDeleteRequest (options: CommonRequestParams) {
+function makeDeleteRequest (options: CommonRequestParams & {
+ query?: any
+ rawQuery?: string
+}) {
const req = request(options.url).delete(options.path)
+ if (options.query) req.query(options.query)
+ if (options.rawQuery) req.query(options.rawQuery)
+
return buildRequest(req, { accept: 'application/json', expectedStatus: HttpStatusCode.BAD_REQUEST_400, ...options })
}
return test.then(res => res.text)
}
+function unwrapBodyOrDecodeToJSON <T> (test: request.Test): Promise<T> {
+ return test.then(res => {
+ if (res.body instanceof Buffer) {
+ return JSON.parse(new TextDecoder().decode(res.body))
+ }
+
+ return res.body
+ })
+}
+
+function unwrapTextOrDecode (test: request.Test): Promise<string> {
+ return test.then(res => res.text || new TextDecoder().decode(res.body))
+}
+
// ---------------------------------------------------------------------------
export {
makeRawRequest,
makeActivityPubGetRequest,
unwrapBody,
+ unwrapTextOrDecode,
+ unwrapBodyOrDecodeToJSON,
unwrapText
}
if (fields[key] === undefined) continue
if (Array.isArray(fields[key]) && fields[key].length === 0) {
- req.field(key, null)
+ req.field(key, [])
continue
}