Skip to content

Commit 5d064aa

Browse files
committed
Fixup all the tests
1 parent 34832d5 commit 5d064aa

50 files changed

Lines changed: 3465 additions & 1747 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

red/api/admin/flows.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
**/
1616

1717
var runtimeAPI;
18+
var apiUtils = require("../util");
1819

1920
module.exports = {
2021
init: function(_runtimeAPI) {
@@ -23,7 +24,7 @@ module.exports = {
2324
get: function(req,res) {
2425
var version = req.get("Node-RED-API-Version")||"v1";
2526
if (!/^v[12]$/.test(version)) {
26-
return res.status(500).json({code:"invalid_api_version", message:"Invalid API Version requested"});
27+
return res.status(400).json({code:"invalid_api_version", message:"Invalid API Version requested"});
2728
}
2829
var opts = {
2930
user: req.user
@@ -41,7 +42,7 @@ module.exports = {
4142
post: function(req,res) {
4243
var version = req.get("Node-RED-API-Version")||"v1";
4344
if (!/^v[12]$/.test(version)) {
44-
return res.status(500).json({code:"invalid_api_version", message:"Invalid API Version requested"});
45+
return res.status(400).json({code:"invalid_api_version", message:"Invalid API Version requested"});
4546
}
4647
var opts = {
4748
user: req.user,

red/api/admin/nodes.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ module.exports = {
5656
user: req.user,
5757
module: req.params[0]
5858
}
59-
runtimeAPI.nodes.removeModule(opts).then(function(info) {
59+
runtimeAPI.nodes.removeModule(opts).then(function() {
6060
res.status(204).end();
6161
}).catch(function(err) {
6262
apiUtils.rejectHandler(req,res,err);
@@ -77,7 +77,7 @@ module.exports = {
7777
} else {
7878
opts.lang = apiUtils.determineLangFromHeaders(req.acceptsLanguages());
7979
runtimeAPI.nodes.getNodeConfig(opts).then(function(result) {
80-
return res.json(result);
80+
return res.send(result);
8181
}).catch(function(err) {
8282
apiUtils.rejectHandler(req,res,err);
8383
})
@@ -100,7 +100,7 @@ module.exports = {
100100
var body = req.body;
101101
if (!body.hasOwnProperty("enabled")) {
102102
// log.audit({event: "nodes.module.set",error:"invalid_request"},req);
103-
res.status(400).json({error:"invalid_request", message:"Invalid request"});
103+
res.status(400).json({code:"invalid_request", message:"Invalid request"});
104104
return;
105105
}
106106
var opts = {
@@ -119,7 +119,7 @@ module.exports = {
119119
var body = req.body;
120120
if (!body.hasOwnProperty("enabled")) {
121121
// log.audit({event: "nodes.module.set",error:"invalid_request"},req);
122-
res.status(400).json({error:"invalid_request", message:"Invalid request"});
122+
res.status(400).json({code:"invalid_request", message:"Invalid request"});
123123
return;
124124
}
125125
var opts = {

red/api/editor/comms.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ var runtimeAPI;
2828
var wsServer;
2929
var activeConnections = [];
3030

31+
var anonymousUser;
32+
3133
var retained = {};
3234

3335
var heartbeatTimer;
@@ -173,7 +175,8 @@ CommsConnection.prototype.subscribe = function(topic) {
173175

174176
function start() {
175177
if (!settings.disableEditor) {
176-
Users.default().then(function(anonymousUser) {
178+
Users.default().then(function(_anonymousUser) {
179+
anonymousUser = _anonymousUser;
177180
var webSocketKeepAliveTime = settings.webSocketKeepAliveTime || 15000;
178181
var path = settings.httpAdminRoot || "/";
179182
path = (path.slice(0,1) != "/" ? "/":"") + path + (path.slice(-1) == "/" ? "":"/") + "comms";

red/api/editor/index.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ module.exports = {
8989
// Library
9090
var library = require("./library");
9191
library.init(runtimeAPI);
92-
9392
editorApp.get("/library/flows",needsPermission("library.read"),library.getAll,apiUtil.errorHandler);
9493
editorApp.get(/library\/([^\/]+)(?:$|\/(.*))/,needsPermission("library.read"),library.getEntry);
9594
editorApp.post(/library\/([^\/]+)\/(.*)/,needsPermission("library.write"),library.saveEntry);
@@ -107,7 +106,7 @@ module.exports = {
107106
// User Settings
108107
editorApp.post("/settings/user",needsPermission("settings.write"),info.updateUserSettings,apiUtil.errorHandler);
109108
// SSH keys
110-
editorApp.use("/settings/user/keys",info.sshkeys());
109+
editorApp.use("/settings/user/keys",needsPermission("settings.write"),info.sshkeys());
111110

112111
return editorApp;
113112
}

red/api/editor/sshkeys.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
* limitations under the License.
1515
**/
1616

17+
var apiUtils = require("../util");
1718
var express = require("express");
1819
var runtimeAPI;
19-
var needsPermission = require("../auth").needsPermission;
2020

2121
function getUsername(userObj) {
2222
var username = '__default';
@@ -34,7 +34,7 @@ module.exports = {
3434
var app = express();
3535

3636
// List all SSH keys
37-
app.get("/", needsPermission("settings.read"), function(req,res) {
37+
app.get("/", function(req,res) {
3838
var opts = {
3939
user: req.user
4040
}
@@ -48,7 +48,7 @@ module.exports = {
4848
});
4949

5050
// Get SSH key detail
51-
app.get("/:id", needsPermission("settings.read"), function(req,res) {
51+
app.get("/:id", function(req,res) {
5252
var opts = {
5353
user: req.user,
5454
id: req.params.id
@@ -63,11 +63,17 @@ module.exports = {
6363
});
6464

6565
// Generate a SSH key
66-
app.post("/", needsPermission("settings.write"), function(req,res) {
66+
app.post("/", function(req,res) {
6767
var opts = {
6868
user: req.user,
6969
id: req.params.id
7070
}
71+
// TODO: validate params
72+
opts.name = req.body.name;
73+
opts.password = req.body.password;
74+
opts.comment = req.body.comment;
75+
opts.size = req.body.size;
76+
7177
runtimeAPI.settings.generateUserKey(opts).then(function(name) {
7278
res.json({
7379
name: name
@@ -78,12 +84,12 @@ module.exports = {
7884
});
7985

8086
// Delete a SSH key
81-
app.delete("/:id", needsPermission("settings.write"), function(req,res) {
87+
app.delete("/:id", function(req,res) {
8288
var opts = {
8389
user: req.user,
8490
id: req.params.id
8591
}
86-
runtimeAPI.settings.generateUserKey(opts).then(function(name) {
92+
runtimeAPI.settings.removeUserKey(opts).then(function(name) {
8793
res.status(204).end();
8894
}).catch(function(err) {
8995
apiUtils.rejectHandler(req,res,err);

red/api/index.js

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,23 +89,9 @@ module.exports = {
8989
init: init,
9090
start: start,
9191
stop: stop,
92-
library: {
93-
register: function(type) {
94-
if (editor) {
95-
editor.registerLibrary(type);
96-
}
97-
}
98-
},
9992
auth: {
10093
needsPermission: auth.needsPermission
10194
},
102-
comms: {
103-
publish: function(topic,data,retain) {
104-
if (editor) {
105-
editor.publish(topic,data,retain);
106-
}
107-
}
108-
},
10995
get adminApp() { return adminApp; },
11096
get server() { return server; }
11197
};

red/api/util.js

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ var i18n = require("../util").i18n; // TODO: separate module
2121

2222
module.exports = {
2323
errorHandler: function(err,req,res,next) {
24-
console.error(err.stack);
2524
if (err.message === "request entity too large") {
2625
log.error(err);
2726
} else {
@@ -40,13 +39,9 @@ module.exports = {
4039
return lang;
4140
},
4241
rejectHandler: function(req,res,err) {
43-
res.status(err.status||500);
44-
if (err.code || err.message) {
45-
res.json({
46-
code: err.code||"unexpected_error",
47-
message: err.message
48-
})
49-
}
50-
res.end();
42+
res.status(err.status||500).json({
43+
code: err.code||"unexpected_error",
44+
message: err.message||err.toString()
45+
});
5146
}
5247
}

red/red.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,20 @@ module.exports = {
111111
util: runtime.util,
112112
version: runtime.version,
113113
events: runtime.events,
114-
115-
comms: api.comms,
116-
library: api.library,
114+
comms: {
115+
publish: function(topic,data,retain) {
116+
runtime.events.emit("comms",{
117+
topic: topic,
118+
data: data,
119+
retain: retain
120+
})
121+
}
122+
},
123+
library: {
124+
register: function(type) {
125+
return runtime.library.register(null,type);
126+
}
127+
},
117128
auth: api.auth,
118129

119130
get app() { console.log("Deprecated use of RED.app - use RED.httpAdmin instead"); return runtime.app },

red/runtime-api/comms.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,15 @@ function publish(topic,data,retain) {
4949
} else {
5050
delete retained[topic];
5151
}
52-
connections.forEach(connection => connection.send(topic,data,retain))
52+
connections.forEach(connection => connection.send(topic,data))
5353
}
5454

5555

5656
var api = module.exports = {
5757
init: function(_runtime) {
5858
runtime = _runtime;
59+
connections = [];
60+
retained = {};
5961
runtime.events.removeListener("node-status",handleStatusEvent);
6062
runtime.events.on("node-status",handleStatusEvent);
6163
runtime.events.removeListener("runtime-event",handleRuntimeEvent);

red/runtime-api/flows.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ var api = module.exports = {
135135
} else {
136136
runtime.log.audit({event: "flow.get",id:opts.id,error:"not_found"});
137137
var err = new Error();
138+
err.code = "not_found";
138139
err.status = 404;
139140
return reject(err);
140141
}

0 commit comments

Comments
 (0)