UNPKG

node-microsvc-lib

Version:
203 lines 9.16 kB
/** * Created by pedrosousabarreto@gmail.com on 01/Feb/2019. */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("mocha"); const chai_1 = require("chai"); const http = require('http'); const index_1 = require("../index"); const health_check_1 = require("./factories/health_check"); const bunyan_logger_1 = require("../bunyan_logger"); const console_logger_1 = require("../console_logger"); const json_logger_1 = require("../json_logger"); const service_params_1 = require("../service_params"); process.env["TEST_PARAM"] = "env_var_value"; process.env["APP_ENV"] = "stage"; describe('main', () => { let logger; let app; let configs; const start_time = Date.now(); configs = require("./config/config"); logger = new console_logger_1.ConsoleLogger(); //logger = new BunyanLogger(configs, "./log/sub/tests.log"); // create microservice app, no init yet const app_without_logger = new index_1.Microservice(configs); // for test coverage only app = new index_1.Microservice(configs, logger); app.register_dependency("logger", logger); app.register_dependency("test_dep", { key: "abc", value: 123 }); // register factories, order matters // app.register_factory("request_logger", RequestLogger); app.register_factory("health_check", health_check_1.HealthCheck); process.on("uncaughtException", (err) => { logger.fatal(err); }); before((done) => { app.init().catch((err) => { done(err); }).then(() => { done(); }); }); after((done) => { app.destroy().catch((err) => { done(err); }).then(() => { console.log("---all destroys done"); done(); }); }); describe("di container", () => { it("dependency exists", (done) => { const test_dep = app.get("test_dep"); const logger_dep = app.get("logger"); chai_1.expect(test_dep).to.exist; chai_1.expect(logger_dep).to.exist; done(); }); it("dependency does not exist", (done) => { try { const non_existing_dep = app.get("non_existing_dep"); chai_1.expect(non_existing_dep).to.not.exist; } catch (e) { chai_1.expect(e).to.exist; } done(); }); it("duplicate name", () => { // expect(app.register_dependency.bind(app,"logger", {})).to.throw; try { app.register_dependency("logger", {}); } catch (err) { chai_1.expect(err); } }); }); describe("express app", () => { it("heath_check", (done) => { http.get('http://localhost:3000/_health_check', (res) => { chai_1.expect(res.statusCode).to.be.eq(200); done(); }); }); it("non existent path", (done) => { http.get('http://localhost:3000/non_existing', (res) => { chai_1.expect(res.statusCode).to.be.eq(404); done(); }); }); }); describe("Loggers", () => { it("console logger", () => { const logger = new console_logger_1.ConsoleLogger(); logger.debug("debug test"); logger.info("info test"); logger.warn("warn test"); logger.error(new Error("new error for error test"), "desc for error test"); logger.fatal("fatal test"); }); it("bunyan logger", () => { const logger = new bunyan_logger_1.BunyanLogger(configs, "./log/sub/tests.log"); logger.create_child({ "test_child_attr": "test_child_attr_value" }); logger.debug("debug test"); logger.info("info test"); logger.warn("warn test"); logger.error(new Error("new error for error test"), "desc for error test"); logger.fatal("fatal test"); logger.create_child(); }); it("JSON logger", () => { const logger = new json_logger_1.JSONLogger(configs); logger.debug("debug test"); logger.info("info test"); logger.warn("warn test"); logger.error(new Error("new error for error test"), "desc for error test"); logger.fatal("fatal test"); }); }); describe("object_utils", () => { it("ToCamelCase log", () => { const src = { my_key: "my_value" }; const dst = index_1.ObjectUtils.ToCamelCase(src); chai_1.expect(dst).to.haveOwnProperty("myKey"); chai_1.expect(dst).to.not.haveOwnProperty("my_key"); }); it("ToSnakeCase log", () => { const src = { myKey: "my_value" }; const dst = index_1.ObjectUtils.ToSnakeCase(src); chai_1.expect(dst).to.haveOwnProperty("my_key"); chai_1.expect(dst).to.not.haveOwnProperty("myKey"); }); }); describe("configs", () => { it("fixed configs", () => { chai_1.expect(configs.env).to.eq(process.env["APP_ENV"]); chai_1.expect(configs.solution_name).to.eq("my_solution"); chai_1.expect(configs.app_name).to.eq("my_app"); chai_1.expect(configs.app_version).to.eq("0.0.1"); chai_1.expect(configs.app_api_prefix).to.eq(""); chai_1.expect(configs.app_api_version).to.eq("1"); }); it("computed configs", () => { chai_1.expect(configs.dev_mode).to.eq(false); chai_1.expect(configs.app_full_name).to.eq(configs.solution_name + "__" + configs.env + "__" + configs.app_name); chai_1.expect(configs.app_full_name_version).to.eq(configs.app_full_name + "__" + configs.app_version); chai_1.expect(configs.app_base_url).to.eq("/"); chai_1.expect(configs.instance_id).to.be.not.null; chai_1.expect(configs.instance_name).to.be.eq(configs.app_full_name_version + "__" + configs.instance_id); }); }); describe("params", () => { it("override from param file with env name", () => { const param_val = configs.get_param_value("kafka_conn_string"); chai_1.expect(param_val).be.equal("stage:9092"); }); it("override from env_vars", () => { const param_val = configs.get_param_value("test_param"); chai_1.expect(param_val).be.equal("env_var_value"); }); it("override from service provider", () => { const secret_val = configs.get_secret_value("secret1"); chai_1.expect(secret_val).be.equal("my_secret1_value"); }); it("duplicate param detection", () => { let params = new service_params_1.ServiceParams(); params.add_param("dupe_test_param", service_params_1.ParamTypes.STRING, "dupe_test_param_val", "dupe_test_param param to test duplicate check"); chai_1.expect(params.add_param.bind(params, "dupe_test_param", service_params_1.ParamTypes.STRING, "dupe_test_param_val", "dupe_test_param param to test duplicate check")).to.throw(); }); it("get param", () => { let params = new service_params_1.ServiceParams(); params.add_param("get_param", service_params_1.ParamTypes.STRING, "value", "get_param param to test get check"); const param = params.get_param("get_param"); chai_1.expect(param === null || param === void 0 ? void 0 : param.default_value).to.eq("value"); const not_param = params.get_param("not_found"); chai_1.expect(not_param).to.be.null; }); it("get feature flag", () => { let params = new service_params_1.ServiceParams(); params.add_feature_flag("flag1", true, "test feature flag"); const feature_flag = params.get_feature_flag("flag1"); chai_1.expect(feature_flag === null || feature_flag === void 0 ? void 0 : feature_flag.default_value).to.eq(true); const not_feature_flag = params.get_feature_flag("not_found"); chai_1.expect(not_feature_flag).to.be.null; }); it("get secret", () => { let params = new service_params_1.ServiceParams(); params.add_secret("secret1", "ultra_top_max_secret", "test secrets"); const secret = params.get_secret("secret1"); chai_1.expect(secret === null || secret === void 0 ? void 0 : secret.default_value).to.eq("ultra_top_max_secret"); }); it("get secret", () => { let params = new service_params_1.ServiceParams(); params.add_secret("secret2", null, "test secrets"); const secret = params.get_secret("secret2"); chai_1.expect(secret === null || secret === void 0 ? void 0 : secret.default_value).to.null; const not_found_secret = params.get_secret("not_found_secret"); chai_1.expect(not_found_secret).to.be.null; }); }); }); //# sourceMappingURL=index.js.map