import * as request from 'supertest'
+import { buildAbsoluteFixturePath } from '../miscs/miscs'
+import { isAbsolute, join } from 'path'
-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,
- fields: { [ fieldName: string ]: any },
- attaches: { [ attachName: string ]: any },
+ token?: string,
statusCodeExpected?: number
}) {
if (!options.statusCodeExpected) options.statusCodeExpected = 400
const req = request(options.url)
- .post(options.path)
- .set('Accept', 'application/json')
+ .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 | any[] },
+ statusCodeExpected?: number
+}) {
+ if (!options.statusCodeExpected) options.statusCodeExpected = 400
+
+ 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)
+ if (Array.isArray(value)) {
+ req.attach(attach, buildAbsoluteFixturePath(value[0]), value[1])
+ } else {
+ 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
}) {
.expect(options.statusCodeExpected)
}
+function makeHTMLRequest (url: string, path: string) {
+ return request(url)
+ .get(path)
+ .set('Accept', 'text/html')
+ .expect(200)
+}
+
+function updateAvatarRequest (options: {
+ url: string,
+ path: string,
+ accessToken: string,
+ fixture: string
+}) {
+ let filePath = ''
+ if (isAbsolute(options.fixture)) {
+ filePath = options.fixture
+ } else {
+ filePath = join(__dirname, '..', '..', 'fixtures', options.fixture)
+ }
+
+ return makeUploadRequest({
+ url: options.url,
+ path: options.path,
+ token: options.accessToken,
+ fields: {},
+ attaches: { avatarfile: filePath },
+ statusCodeExpected: 200
+ })
+}
+
// ---------------------------------------------------------------------------
export {
+ makeHTMLRequest,
makeGetRequest,
- makePostUploadRequest,
+ makeUploadRequest,
makePostBodyRequest,
- makePutBodyRequest
+ makePutBodyRequest,
+ makeDeleteRequest,
+ updateAvatarRequest
}