UNPKG

expresser

Version:

A ready to use Node.js web app wrapper, built on top of Express.

105 lines (81 loc) 3.34 kB
// TEST: SETTINGS require("coffee-script/register"); var chai = require("chai"); chai.should(); describe("Settings Tests", function() { var env = process.env; if (!env.NODE_ENV || env.NODE_ENV == "") env.NODE_ENV = "test"; var settings = require("../lib/settings.coffee"); settings.loadFromJson("settings.test.json"); var fs = require("fs"); var utils = null; // TESTS STARTS HERE!!! // ---------------------------------------------------------------------------------- before(function() { utils = require("../lib/utils.coffee"); }); it("Is single instance", function() { settings.singleInstance = true; var settings2 = require("../lib/settings.coffee"); settings.singleInstance.should.equal(settings2.singleInstance); }); it("Settings file watchers properly working", function(done) { this.timeout(10000); var filename = "./settings.test.json"; if (process.versions.node.indexOf(".10.") > 0) { var originalJson = fs.readFileSync(filename, {encoding: "utf8"}); } else { var originalJson = fs.readFileSync(filename, "utf8"); } var newJson = utils.minifyJson(originalJson); var callback = function() { if (process.versions.node.indexOf(".10.") > 0) { fs.writeFileSync(filename, originalJson, {encoding: "utf8"}); } else { fs.writeFileSync(filename, originalJson, "utf8"); } unwatch(); done(); }; var unwatch = function() { settings.watch(false, callback); }; settings.watch(true, callback); newJson.testingFileWatcher = true; try { fs.writeFileSync(filename, JSON.stringify(newJson, null, 4)); } catch (ex) { done(ex); } }); it("Encrypt and decrypt settings data", function(done) { this.timeout(10000); var filename = "./settings.test.crypt.json"; if (process.versions.node.indexOf(".10.") > 0) { var originalJson = fs.readFileSync(filename, {encoding: "utf8"}); } else { var originalJson = fs.readFileSync(filename, "utf8"); } var callback = function(err) { if (err) done(err); else done(); }; if (!settings.encrypt(filename)) { return callback("Could not encrypt properties of settings.test.json file.") } var encrypted = JSON.parse(fs.readFileSync(filename, {encoding: "utf8"})); if (!encrypted.encrypted) { return callback("Property 'encrypted' was not properly set.") } else if (encrypted.app.title == "Expresser Settings Encryption") { return callback("Encryption failed, settings.general.appTitle is still set as 'Expresser'.") } settings.decrypt(filename); var decrypted = JSON.parse(fs.readFileSync(filename, {encoding: "utf8"})); if (decrypted.encrypted) { return callback("Property 'encrypted' was not unset / deleted.") } if (decrypted.app.title != "Expresser Settings Encryption") { return callback("Decryption failed, settings.app.title is still encrypted.") } callback(); }); });