1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | "use strict";
|
15 |
|
16 | var fluid = require("infusion"),
|
17 | kettle = require("../kettle.js"),
|
18 | jqUnit = fluid.require("node-jqunit", null, "jqUnit");
|
19 |
|
20 |
|
21 | fluid.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 |
|
48 | kettle.tests.init.record = function (that, name) {
|
49 | that.fireRecord.push(name);
|
50 | };
|
51 |
|
52 | kettle.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 |
|
58 | jqUnit.asyncTest("Kettle server initialisation test", function () {
|
59 | jqUnit.expect(1);
|
60 |
|
61 | kettle.tests.init.server({});
|
62 | });
|
63 |
|
64 | require("./shared/HTTPMethodsTestDefs.js");
|
65 |
|
66 | kettle.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 |
|
89 | kettle.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 {
|
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 |
|
111 | kettle.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 |
|
116 | kettle.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 |
|
122 | kettle.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 |
|
128 | kettle.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 | });
|