Files
bruno/packages/bruno-tests/src/echo/index.js
ramki-bruno 8cf8321087 Added test requests for cookies and related changes in testbench server
In bruno-testbench(packages/bruno-tests) server
- Added support for customising response status-code in
`POST /api/echo/custom` API using `statusCode` field
- Added `/api/echo/trace` API which returns all the request details as
  an JSON response
- Added SSL support for `localhost` in dev env to test HTTPS requests
2025-05-27 14:23:47 +05:30

94 lines
2.1 KiB
JavaScript

const express = require('express');
const router = express.Router();
router.post('/json', (req, res) => {
return res.json(req.body);
});
router.post('/text', (req, res) => {
res.setHeader('Content-Type', 'text/plain');
return res.send(req.body);
});
router.post('/xml-parsed', (req, res) => {
return res.send(req.body);
});
router.post('/xml-raw', (req, res) => {
res.setHeader('Content-Type', 'application/xml');
return res.send(req.rawBody);
});
router.post('/bin', (req, res) => {
const rawBody = req.body;
if (!rawBody || rawBody.length === 0) {
return res.status(400).send('No data received');
}
res.set('Content-Type', req.headers['content-type'] || 'application/octet-stream');
res.send(rawBody);
});
router.get('/bom-json-test', (req, res) => {
const jsonData = {
message: 'Hello!',
success: true
};
const jsonString = JSON.stringify(jsonData);
const bom = '\uFEFF';
const jsonWithBom = bom + jsonString;
res.set('Content-Type', 'application/json; charset=utf-8');
return res.send(jsonWithBom);
});
router.get('/iso-enc', (req, res) => {
res.set('Content-Type', 'text/plain; charset=ISO-8859-1');
const responseText = 'éçà';
return res.send(Buffer.from(responseText, 'latin1'));
});
router.post("/custom", (req, res) => {
const { headers, content, contentBase64, contentJSON, type, statusCode } = req.body || {};
res._headers = {};
if (statusCode) {
res.status(statusCode);
}
if (type) {
res.setHeader('Content-Type', type);
}
if (headers && typeof headers === 'object') {
Object.entries(headers).forEach(([key, value]) => {
res.setHeader(key, value);
});
}
if (contentBase64) {
res.write(Buffer.from(contentBase64, 'base64'));
} else if (contentJSON !== undefined) {
res.write(JSON.stringify(contentJSON));
} else if (content !== undefined) {
res.write(content);
}
return res.end();
});
router.all('/trace', (req, res) => {
const requestDetails = {
url: req.url,
method: req.method,
query: req.query,
headers: req.headers,
body: req.body,
rawBody: req.rawBody
};
res.json(requestDetails);
});
module.exports = router;