UNPKG

4.15 kBJavaScriptView Raw
1/**
2 * Kettle Initialisation Tests
3 *
4 * Copyright 2013 OCAD University
5 * Copyright 2012-2015 Raising the Floor - International
6 *
7 * Licensed under the New BSD license. You may not use this file except in
8 * compliance with this License.
9 *
10 * You may obtain a copy of the License at
11 * https://github.com/fluid-project/kettle/blob/master/LICENSE.txt
12 */
13
14"use strict";
15
16var fluid = require("infusion"),
17 kettle = require("../kettle.js"),
18 jqUnit = fluid.require("node-jqunit", null, "jqUnit");
19
20
21fluid.defaults("kettle.tests.init.server", {
22 gradeNames: ["kettle.server"],
23 members: {
24 fireRecord: []
25 },
26 listeners: {
27 onListen: {
28 priority: "last",
29 funcName: "kettle.tests.init.assertAndCleanup",
30 args: "{that}"
31 },
32 onContributeMiddleware: {
33 funcName: "kettle.tests.init.record",
34 args: ["{that}", "onContributeMiddleware"]
35 },
36 onContributeRouteHandlers: {
37 funcName: "kettle.tests.init.record",
38 args: ["{that}", "onContributeRouteHandlers"]
39 },
40 onCreate: {
41 priority: "first",
42 funcName: "kettle.tests.init.record",
43 args: ["{that}", "onCreate"]
44 }
45 }
46});
47
48kettle.tests.init.record = function (that, name) {
49 that.fireRecord.push(name);
50};
51
52kettle.tests.init.assertAndCleanup = function (that) {
53 jqUnit.assertDeepEq("Expected init event sequence", ["onCreate", "onContributeMiddleware", "onContributeRouteHandlers"], that.fireRecord);
54 that.stop();
55 jqUnit.start();
56};
57
58jqUnit.asyncTest("Kettle server initialisation test", function () {
59 jqUnit.expect(1);
60
61 kettle.tests.init.server({});
62});
63
64require("./shared/HTTPMethodsTestDefs.js");
65
66kettle.tests.init.envTest = function (options) {
67 jqUnit.asyncTest(options.message, function () {
68 jqUnit.expect(2);
69 var oldArgv = process.argv;
70 var oldEnv = process.env.NODE_ENV;
71 process.argv = options.argv;
72 process.env.NODE_ENV = options.nodeEnv;
73 var server = kettle.config.initCLI();
74 var request = kettle.test.request.http({
75 listeners: {
76 onComplete: function (data) {
77 kettle.tests.HTTPMethods.get.testResponse(data);
78 server.destroy();
79 jqUnit.start();
80 process.argv = oldArgv;
81 process.env.NODE_ENV = oldEnv;
82 }
83 }
84 });
85 request.send();
86 });
87};
88
89kettle.tests.init.badEnvTest = function (options) {
90 jqUnit.test(options.message, function () {
91 jqUnit.expectFrameworkDiagnostic(options.message, function () {
92 var oldArgv = process.argv;
93 var oldEnv = process.env.NODE_ENV;
94 process.argv = options.argv;
95 if (options.nodeEnv) {
96 process.env.NODE_ENV = options.nodeEnv;
97 } else { // assigning `undefined` will call toString on it!
98 delete process.env.NODE_ENV;
99 }
100 try {
101 kettle.config.initCLI();
102 } catch (e) {
103 process.argv = oldArgv;
104 process.env.NODE_ENV = oldEnv;
105 throw e;
106 }
107 }, options.errorTexts);
108 });
109};
110
111kettle.tests.init.envTest({
112 message: "Kettle server initialisation test via init.js and args",
113 argv: ["node.exe", "init.js", fluid.module.resolvePath("%kettle/tests/configs"), "kettle.tests.HTTPMethods.config"]
114});
115
116kettle.tests.init.envTest({
117 message: "Kettle server initialisation test via init.js and NODE_ENV",
118 argv: ["node.exe", "init.js", "%kettle/tests/configs"],
119 nodeEnv: "kettle.tests.HTTPMethods.config"
120});
121
122kettle.tests.init.badEnvTest({
123 message: "Kettle server initialisation test via init.js without config name",
124 argv: ["node.exe", "init.js", "%kettle/tests/configs"],
125 errorTexts: "No configuration"
126});
127
128kettle.tests.init.badEnvTest({
129 message: "Kettle server initialisation test via init.js without config path",
130 argv: ["node.exe", "init.js"],
131 errorTexts: "Config path"
132});