UNPKG

@webda/core

Version:

Expose API with Lambda

147 lines 6.79 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { suite, test } from "@testdeck/mocha"; import * as assert from "assert"; import { mkdirSync, unlinkSync } from "fs"; import pkg from "fs-extra"; import * as path from "path"; import { stub } from "sinon"; import { KubernetesConfigurationService } from "...js"; import { WebdaTest } from "../test.js"; import { getCommonJS } from "../utils/esm.js"; const { emptyDirSync, ensureSymlinkSync, outputFileSync } = pkg; const { __dirname } = getCommonJS(import.meta.url); class AbstractKubernetesConfigurationServiceTest extends WebdaTest { constructor() { super(...arguments); this.folder = __dirname + "/../../test/kube"; this.content = { "webda.json": JSON.stringify({ services: { Authentication: { providers: { email: { text: "Plop1" } } }, "Authentication.providers.email.text2": "Plop6" } }, undefined, 2) }; } getTestConfiguration() { return __dirname + "/../../test/config-kube-reload.json"; } async before(create = false) { emptyDirSync(this.folder); // Empty the kube directory if (create) { this.createConfigMap(); } await super.before(); } createConfigMap() { this.dataFolder = `..${Date.now()}`; mkdirSync(path.join(this.folder, this.dataFolder)); ensureSymlinkSync(path.join(this.folder, this.dataFolder), path.join(this.folder, "..data")); Object.keys(this.content).forEach(f => { outputFileSync(path.join(this.folder, this.dataFolder, f), this.content[f]); ensureSymlinkSync(path.join(this.folder, "..data", f), path.join(this.folder, f)); }); } updateConfigMap(content) { this.dataFolder = `..${Date.now()}`; this.content = content; mkdirSync(path.join(this.folder, this.dataFolder)); Object.keys(this.content).forEach(f => { outputFileSync(path.join(this.folder, this.dataFolder, f), this.content[f]); }); unlinkSync(path.join(this.folder, "..data")); ensureSymlinkSync(path.join(this.folder, this.dataFolder), path.join(this.folder, "..data")); } } let KubernetesConfigurationServiceTest = class KubernetesConfigurationServiceTest extends AbstractKubernetesConfigurationServiceTest { async before() { await super.before(true); } async cov() { let serv = new KubernetesConfigurationService(this.webda, "t", {}); serv.getParameters().source = undefined; assert.rejects(() => serv.init(), /Need a source for KubernetesConfigurationService/); serv.getParameters().source = "/notexisting"; assert.rejects(() => serv.init(), /Need a source for KubernetesConfigurationService/); let mock = stub(serv, "loadAndStoreConfiguration").resolves(); await serv.initConfiguration(); assert.strictEqual(mock.callCount, 1); } async updatedConfigMap() { assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Plop1"); assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text2, "Plop6"); assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.mailer, "DefinedMailer"); await new Promise(resolve => { this.webda.getService("KubernetesConfigurationService").on("Configuration.Applied", resolve); this.updateConfigMap({ ...this.content, "webda.json": JSON.stringify({ services: { Authentication: { providers: { email: { text: "Plop2" } } } } }) }); }); assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Plop2"); assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.mailer, "DefinedMailer"); await new Promise(resolve => { this.webda.getService("KubernetesConfigurationService").on("Configuration.Applied", resolve); this.updateConfigMap({ ...this.content, "webda.json": JSON.stringify({ services: { Authentication: { providers: { email: { text: "Plop3" } } } } }) }); }); assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Plop3"); assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.mailer, "DefinedMailer"); } }; __decorate([ test ], KubernetesConfigurationServiceTest.prototype, "cov", null); __decorate([ test ], KubernetesConfigurationServiceTest.prototype, "updatedConfigMap", null); KubernetesConfigurationServiceTest = __decorate([ suite ], KubernetesConfigurationServiceTest); let EmptyKubernetesConfigurationServiceTest = class EmptyKubernetesConfigurationServiceTest extends AbstractKubernetesConfigurationServiceTest { async unmountedConfigMap() { assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.text, "Plop0"); assert.strictEqual(this.webda.getConfiguration().services.Authentication.providers.email.mailer, "DefinedMailer"); } }; __decorate([ test ], EmptyKubernetesConfigurationServiceTest.prototype, "unmountedConfigMap", null); EmptyKubernetesConfigurationServiceTest = __decorate([ suite ], EmptyKubernetesConfigurationServiceTest); //# sourceMappingURL=kubernetesconfiguration.spec.js.map