+ makeActivityPubGetRequest,
+ unwrapBody,
+ unwrapText
+}
+
+// ---------------------------------------------------------------------------
+
+function buildRequest (req: request.Test, options: CommonRequestParams) {
+ if (options.contentType) req.set('Accept', options.contentType)
+ if (options.token) req.set('Authorization', 'Bearer ' + options.token)
+ if (options.range) req.set('Range', options.range)
+ if (options.accept) req.set('Accept', options.accept)
+ if (options.host) req.set('Host', options.host)
+ if (options.redirects) req.redirects(options.redirects)
+ if (options.expectedStatus) req.expect(options.expectedStatus)
+ if (options.xForwardedFor) req.set('X-Forwarded-For', options.xForwardedFor)
+ if (options.type) req.type(options.type)
+
+ Object.keys(options.headers || {}).forEach(name => {
+ req.set(name, options.headers[name])
+ })
+
+ return req
+}
+
+function buildFields (req: request.Test, fields: { [ fieldName: string ]: any }, namespace?: string) {
+ if (!fields) return
+
+ let formKey: string
+
+ for (const key of Object.keys(fields)) {
+ if (namespace) formKey = `${namespace}[${key}]`
+ else formKey = key
+
+ if (fields[key] === undefined) continue
+
+ if (Array.isArray(fields[key]) && fields[key].length === 0) {
+ req.field(key, null)
+ continue
+ }
+
+ if (fields[key] !== null && typeof fields[key] === 'object') {
+ buildFields(req, fields[key], formKey)
+ } else {
+ req.field(formKey, fields[key])
+ }
+ }