overleaf/services/web/test/acceptance/src/helpers/MockFileStoreApi.js

86 lines
2.4 KiB
JavaScript
Raw Normal View History

/* eslint-disable
camelcase,
max-len,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
let MockFileStoreApi
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
module.exports = MockFileStoreApi = {
files: {},
run() {
app.post('/project/:project_id/file/:file_id', (req, res, next) => {
const chunks = []
req.on('data', chunk => chunks.push(chunk))
return req.on('end', () => {
const content = Buffer.concat(chunks).toString()
const { project_id, file_id } = req.params
if (this.files[project_id] == null) {
this.files[project_id] = {}
}
this.files[project_id][file_id] = { content }
return res.sendStatus(200)
})
})
app.get('/project/:project_id/file/:file_id', (req, res, next) => {
const { project_id, file_id } = req.params
const { content } = this.files[project_id][file_id]
return res.send(content)
})
// handle file copying
app.put(
'/project/:project_id/file/:file_id',
bodyParser.json(),
(req, res, next) => {
const { project_id, file_id } = req.params
const { source } = req.body
const { content } =
this.files[source.project_id] != null
? this.files[source.project_id][source.file_id]
: undefined
if (content == null) {
return res.sendStatus(500)
} else {
if (this.files[project_id] == null) {
this.files[project_id] = {}
}
this.files[project_id][file_id] = { content }
return res.sendStatus(200)
}
}
)
app.delete('/project/:projectId', (req, res) => {
const { projectId } = req.params
delete this.files[projectId]
res.sendStatus(204)
})
return app
.listen(3009, error => {
if (error != null) {
throw error
}
})
.on('error', error => {
console.error('error starting MockFileStoreApi:', error.message)
return process.exit(1)
})
}
}
MockFileStoreApi.run()