@versatiles/google-cloud
Version:
A server for VersaTiles in Google Cloud Run
39 lines (38 loc) • 1.31 kB
JavaScript
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;
}