UNPKG

serverless-spy

Version:

CDK-based library for writing elegant integration tests on AWS serverless architecture and an additional web console to monitor events in real time.

54 lines (53 loc) 1.7 kB
export class HttpRequest { constructor(options) { this.method = options.method || "GET"; this.hostname = options.hostname || "localhost"; this.port = options.port; this.query = options.query || {}; this.headers = options.headers || {}; this.body = options.body; this.protocol = options.protocol ? options.protocol.slice(-1) !== ":" ? `${options.protocol}:` : options.protocol : "https:"; this.path = options.path ? (options.path.charAt(0) !== "/" ? `/${options.path}` : options.path) : "/"; this.username = options.username; this.password = options.password; this.fragment = options.fragment; } static clone(request) { const cloned = new HttpRequest({ ...request, headers: { ...request.headers }, }); if (cloned.query) { cloned.query = cloneQuery(cloned.query); } return cloned; } static isInstance(request) { if (!request) { return false; } const req = request; return ("method" in req && "protocol" in req && "hostname" in req && "path" in req && typeof req["query"] === "object" && typeof req["headers"] === "object"); } clone() { return HttpRequest.clone(this); } } function cloneQuery(query) { return Object.keys(query).reduce((carry, paramName) => { const param = query[paramName]; return { ...carry, [paramName]: Array.isArray(param) ? [...param] : param, }; }, {}); }