UNPKG

@versatiles/google-cloud

Version:
39 lines (38 loc) 1.31 kB
import { Writable } from 'stream'; import { Responder } from './responder.js'; import { vi } from 'vitest'; export function getResponseSink() { class ResponseSink extends Writable { #buffers = Array(); _write(chunk, encoding, callback) { this.#buffers.push(chunk); callback(); } getBuffer() { if (this.#buffers.length === 1) { return this.#buffers[0]; } return Buffer.concat(this.#buffers); } } const response = new ResponseSink(); vi.spyOn(response, 'end'); response.writeHead = vi.fn(() => response); return response; } export function getMockedResponder(options) { options ??= {}; const response = getResponseSink(); const responder = new Responder({ fastRecompression: options.fastRecompression ?? false, requestHeaders: options.requestHeaders ?? { 'accept-encoding': 'gzip, br' }, requestNo: options.requestNo ?? 5, response, verbose: options.verbose ?? false, }); responder.response = response; const responseHeaders = options.responseHeaders ?? { 'content-type': 'text/plain' }; for (const key in responseHeaders) responder.headers.set(key, responseHeaders[key]); return responder; }