drone/web/cypress/server.js

62 lines
1.6 KiB
JavaScript

/*
* Copyright 2023 Harness, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const express = require('express')
const fs = require('fs')
const app = express()
const path = require('path')
const PORT = 8080
function checkFileExistsSync(filepath) {
let flag = true
try {
fs.accessSync(filepath, fs.constants.F_OK)
} catch (e) {
flag = false
}
return flag
}
function getFile(req) {
const url = req.url.split('?')[0].replace(/^\/gateway/, '')
return path.resolve(__dirname, `fixtures${url}${req.method === 'POST' ? '.post' : ''}.json`)
}
app.all('*', (req, res) => {
if (req.get('Content-Type') === 'text/plain') {
res.setHeader('Content-Type', 'text/plain')
} else {
res.setHeader('Content-Type', 'application/json')
}
const file = getFile(req)
if (['POST', 'GET', 'PUT'].indexOf(req.method) > -1 && checkFileExistsSync(file)) {
res.end(fs.readFileSync(file))
} else {
res.end(
JSON.stringify({
correlationId: '',
data: {},
status: 'SUCCESS'
})
)
}
})
app.listen(PORT, () => {
console.log(`⚡️[server]: Server is running at http://localhost:${PORT}`)
})