import * as request from 'supertest'
+import { buildAbsoluteFixturePath } from '../miscs/miscs'
-function makeGetRequest (url: string, path: string) {
- return request(url)
- .get(path)
+function makeGetRequest (options: {
+ url: string,
+ path: string,
+ query?: any,
+ token?: string,
+ statusCodeExpected?: number
+}) {
+ if (!options.statusCodeExpected) options.statusCodeExpected = 400
+
+ const req = request(options.url)
+ .get(options.path)
.set('Accept', 'application/json')
- .expect(200)
+
+ if (options.token) req.set('Authorization', 'Bearer ' + options.token)
+ if (options.query) req.query(options.query)
+
+ return req
.expect('Content-Type', /json/)
+ .expect(options.statusCodeExpected)
}
-function makePostUploadRequest (options: {
+function makeDeleteRequest (options: {
url: string,
path: string,
+ token?: string,
+ statusCodeExpected?: number
+}) {
+ if (!options.statusCodeExpected) options.statusCodeExpected = 400
+
+ const req = request(options.url)
+ .delete(options.path)
+ .set('Accept', 'application/json')
+
+ if (options.token) req.set('Authorization', 'Bearer ' + options.token)
+
+ return req
+ .expect('Content-Type', /json/)
+ .expect(options.statusCodeExpected)
+}
+
+function makeUploadRequest (options: {
+ url: string,
+ method?: 'POST' | 'PUT',
+ path: string,
token: string,
fields: { [ fieldName: string ]: any },
attaches: { [ attachName: string ]: any },
}) {
if (!options.statusCodeExpected) options.statusCodeExpected = 400
- const req = request(options.url)
- .post(options.path)
- .set('Accept', 'application/json')
+ let req: request.Test
+ if (options.method === 'PUT') {
+ req = request(options.url).put(options.path)
+ } else {
+ req = request(options.url).post(options.path)
+ }
+
+ req.set('Accept', 'application/json')
if (options.token) req.set('Authorization', 'Bearer ' + options.token)
Object.keys(options.attaches).forEach(attach => {
const value = options.attaches[attach]
- req.attach(attach, value)
+ req.attach(attach, buildAbsoluteFixturePath(value))
})
return req.expect(options.statusCodeExpected)
url: string,
path: string,
token?: string,
- fields: { [ fieldName: string ]: any },
+ fields?: { [ fieldName: string ]: any },
statusCodeExpected?: number
}) {
+ if (!options.fields) options.fields = {}
if (!options.statusCodeExpected) options.statusCodeExpected = 400
const req = request(options.url)
function makePutBodyRequest (options: {
url: string,
path: string,
- token: string,
+ token?: string,
fields: { [ fieldName: string ]: any },
statusCodeExpected?: number
}) {
export {
makeGetRequest,
- makePostUploadRequest,
+ makeUploadRequest,
makePostBodyRequest,
- makePutBodyRequest
+ makePutBodyRequest,
+ makeDeleteRequest
}