slack-mock-typed
Version:
Slack API mocker written in TypeScript
54 lines (53 loc) • 1.77 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const logger_1 = require("./logger");
const allResponses = new Map();
allResponses.set("incoming-webhooks", new Map());
allResponses.set("web", new Map());
function set(type, opts) {
const typeResponses = allResponses.get(type);
if (!opts.url) {
opts.url = "any";
}
let urlResponses = typeResponses.get(opts.url);
if (!urlResponses) {
urlResponses = [];
typeResponses.set(opts.url, urlResponses);
}
logger_1.logger.debug(`added response for ${type}`, opts);
urlResponses.push({
statusCode: opts.statusCode || 200,
body: opts.body || (type === "web" ? { ok: true } : "OK"),
headers: opts.headers || {}
});
}
exports.set = set;
function get(type, url) {
const defaultResponse = { statusCode: 200, body: "OK", headers: {} };
let response = defaultResponse;
if (type === "web") {
defaultResponse.body = JSON.stringify({ ok: true });
}
let urlResponses = allResponses.get(type).get(url);
if (!urlResponses) {
urlResponses = allResponses.get(type).get("any");
}
if (urlResponses && urlResponses.length) {
response = urlResponses.shift();
logger_1.logger.debug(`responding to ${type} with override`, response);
}
return [response.statusCode, response.body, response.headers];
}
exports.get = get;
function reset(type) {
logger_1.logger.debug(`clearing responses for ${type}`);
allResponses.get(type).clear();
}
exports.reset = reset;
function resetAll() {
for (const key of allResponses.keys()) {
logger_1.logger.debug(`clearing responses for ${key}`);
allResponses.get(key).clear();
}
}
exports.resetAll = resetAll;
;