]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/tests/utils/requests/requests.ts
b6195089dd169e95711b4e46474fc2e473a7865e
[github/Chocobozzz/PeerTube.git] / server / tests / utils / requests / requests.ts
1 import * as request from 'supertest'
2 import { buildAbsoluteFixturePath } from '../miscs/miscs'
3
4 function makeGetRequest (options: {
5 url: string,
6 path: string,
7 query?: any,
8 token?: string,
9 statusCodeExpected?: number
10 }) {
11 if (!options.statusCodeExpected) options.statusCodeExpected = 400
12
13 const req = request(options.url)
14 .get(options.path)
15 .set('Accept', 'application/json')
16
17 if (options.token) req.set('Authorization', 'Bearer ' + options.token)
18 if (options.query) req.query(options.query)
19
20 return req
21 .expect('Content-Type', /json/)
22 .expect(options.statusCodeExpected)
23 }
24
25 function makeDeleteRequest (options: {
26 url: string,
27 path: string,
28 token?: string,
29 statusCodeExpected?: number
30 }) {
31 if (!options.statusCodeExpected) options.statusCodeExpected = 400
32
33 const req = request(options.url)
34 .delete(options.path)
35 .set('Accept', 'application/json')
36
37 if (options.token) req.set('Authorization', 'Bearer ' + options.token)
38
39 return req
40 .expect('Content-Type', /json/)
41 .expect(options.statusCodeExpected)
42 }
43
44 function makeUploadRequest (options: {
45 url: string,
46 method?: 'POST' | 'PUT',
47 path: string,
48 token: string,
49 fields: { [ fieldName: string ]: any },
50 attaches: { [ attachName: string ]: any },
51 statusCodeExpected?: number
52 }) {
53 if (!options.statusCodeExpected) options.statusCodeExpected = 400
54
55 let req: request.Test
56 if (options.method === 'PUT') {
57 req = request(options.url).put(options.path)
58 } else {
59 req = request(options.url).post(options.path)
60 }
61
62 req.set('Accept', 'application/json')
63
64 if (options.token) req.set('Authorization', 'Bearer ' + options.token)
65
66 Object.keys(options.fields).forEach(field => {
67 const value = options.fields[field]
68
69 if (Array.isArray(value)) {
70 for (let i = 0; i < value.length; i++) {
71 req.field(field + '[' + i + ']', value[i])
72 }
73 } else {
74 req.field(field, value)
75 }
76 })
77
78 Object.keys(options.attaches).forEach(attach => {
79 const value = options.attaches[attach]
80 req.attach(attach, buildAbsoluteFixturePath(value))
81 })
82
83 return req.expect(options.statusCodeExpected)
84 }
85
86 function makePostBodyRequest (options: {
87 url: string,
88 path: string,
89 token?: string,
90 fields?: { [ fieldName: string ]: any },
91 statusCodeExpected?: number
92 }) {
93 if (!options.fields) options.fields = {}
94 if (!options.statusCodeExpected) options.statusCodeExpected = 400
95
96 const req = request(options.url)
97 .post(options.path)
98 .set('Accept', 'application/json')
99
100 if (options.token) req.set('Authorization', 'Bearer ' + options.token)
101
102 return req.send(options.fields)
103 .expect(options.statusCodeExpected)
104 }
105
106 function makePutBodyRequest (options: {
107 url: string,
108 path: string,
109 token?: string,
110 fields: { [ fieldName: string ]: any },
111 statusCodeExpected?: number
112 }) {
113 if (!options.statusCodeExpected) options.statusCodeExpected = 400
114
115 const req = request(options.url)
116 .put(options.path)
117 .set('Accept', 'application/json')
118
119 if (options.token) req.set('Authorization', 'Bearer ' + options.token)
120
121 return req.send(options.fields)
122 .expect(options.statusCodeExpected)
123 }
124
125 // ---------------------------------------------------------------------------
126
127 export {
128 makeGetRequest,
129 makeUploadRequest,
130 makePostBodyRequest,
131 makePutBodyRequest,
132 makeDeleteRequest
133 }