mock-request.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.mockRequest = mockRequest;
  6. var _stream = _interopRequireDefault(require("stream"));
  7. function _interopRequireDefault(obj) {
  8. return obj && obj.__esModule ? obj : {
  9. default: obj
  10. };
  11. }
  12. function mockRequest(requestUrl, requestHeaders, requestMethod, requestConnection) {
  13. const resBuffers = [];
  14. const mockRes = new _stream.default.Writable();
  15. const isStreamFinished = new Promise(function(resolve, reject) {
  16. mockRes.on("finish", ()=>resolve(true));
  17. mockRes.on("end", ()=>resolve(true));
  18. mockRes.on("error", (err)=>reject(err));
  19. });
  20. mockRes.write = (chunk)=>{
  21. resBuffers.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
  22. };
  23. mockRes._write = (chunk, _encoding, callback)=>{
  24. mockRes.write(chunk);
  25. // According to Node.js documentation, the callback MUST be invoked to signal that
  26. // the write completed successfully. If this callback is not invoked, the 'finish' event
  27. // will not be emitted.
  28. // https://nodejs.org/docs/latest-v16.x/api/stream.html#writable_writechunk-encoding-callback
  29. callback();
  30. };
  31. const mockHeaders = {};
  32. mockRes.writeHead = (_status, _headers)=>Object.assign(mockHeaders, _headers);
  33. mockRes.getHeader = (name)=>mockHeaders[name.toLowerCase()];
  34. mockRes.getHeaders = ()=>mockHeaders;
  35. mockRes.getHeaderNames = ()=>Object.keys(mockHeaders);
  36. mockRes.setHeader = (name, value)=>mockHeaders[name.toLowerCase()] = value;
  37. mockRes.removeHeader = (name)=>{
  38. delete mockHeaders[name.toLowerCase()];
  39. };
  40. mockRes._implicitHeader = ()=>{};
  41. mockRes.connection = requestConnection;
  42. mockRes.finished = false;
  43. mockRes.statusCode = 200;
  44. const mockReq = new _stream.default.Readable();
  45. mockReq._read = ()=>{
  46. mockReq.emit("end");
  47. mockReq.emit("close");
  48. return Buffer.from("");
  49. };
  50. mockReq.headers = requestHeaders;
  51. mockReq.method = requestMethod;
  52. mockReq.url = requestUrl;
  53. mockReq.connection = requestConnection;
  54. return {
  55. resBuffers,
  56. req: mockReq,
  57. res: mockRes,
  58. streamPromise: isStreamFinished
  59. };
  60. }
  61. //# sourceMappingURL=mock-request.js.map