mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
120 lines
4.0 KiB
JavaScript
120 lines
4.0 KiB
JavaScript
|
const should = require("should");
|
||
|
const request = require('supertest');
|
||
|
const express = require('express');
|
||
|
const bodyParser = require("body-parser");
|
||
|
const sinon = require('sinon');
|
||
|
|
||
|
let app;
|
||
|
|
||
|
const NR_TEST_UTILS = require("nr-test-utils");
|
||
|
const diagnostics = NR_TEST_UTILS.require("@node-red/editor-api/lib/admin/diagnostics");
|
||
|
|
||
|
describe("api/editor/diagnostics", function() {
|
||
|
before(function() {
|
||
|
app = express();
|
||
|
app.use(bodyParser.json());
|
||
|
app.get("/diagnostics",diagnostics.getReport);
|
||
|
});
|
||
|
|
||
|
it('returns the diagnostics report when explicitly enabled', function(done) {
|
||
|
const settings = { diagnostics: { ui: true, enabled: true } }
|
||
|
const runtimeAPI = {
|
||
|
diagnostics: {
|
||
|
get: async function (opts) {
|
||
|
return new Promise(function (resolve, reject) {
|
||
|
opts = opts || {}
|
||
|
try {
|
||
|
resolve({ opts: opts, a:1, b:2});
|
||
|
} catch (error) {
|
||
|
error.status = 500;
|
||
|
reject(error);
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
diagnostics.init(settings, runtimeAPI);
|
||
|
|
||
|
request(app)
|
||
|
.get("/diagnostics")
|
||
|
.expect(200)
|
||
|
.end(function(err,res) {
|
||
|
if (err || typeof res.error === "object") {
|
||
|
return done(err || res.error);
|
||
|
}
|
||
|
res.should.have.property("statusCode",200);
|
||
|
res.body.should.have.property("a",1);
|
||
|
res.body.should.have.property("b",2);
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
it('returns the diagnostics report when not explicitly enabled (implicitly enabled)', function(done) {
|
||
|
const settings = { diagnostics: { enabled: undefined } }
|
||
|
const runtimeAPI = {
|
||
|
diagnostics: {
|
||
|
get: async function (opts) {
|
||
|
return new Promise(function (resolve, reject) {
|
||
|
opts = opts || {}
|
||
|
try {
|
||
|
resolve({ opts: opts, a:3, b:4});
|
||
|
} catch (error) {
|
||
|
error.status = 500;
|
||
|
reject(error);
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
diagnostics.init(settings, runtimeAPI);
|
||
|
|
||
|
request(app)
|
||
|
.get("/diagnostics")
|
||
|
.expect(200)
|
||
|
.end(function(err,res) {
|
||
|
if (err || typeof res.error === "object") {
|
||
|
return done(err || res.error);
|
||
|
}
|
||
|
res.should.have.property("statusCode",200);
|
||
|
res.body.should.have.property("a",3);
|
||
|
res.body.should.have.property("b",4);
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
it('should error when setting is disabled', function(done) {
|
||
|
const settings = { diagnostics: { ui: true, enabled: false } }
|
||
|
const runtimeAPI = {
|
||
|
diagnostics: {
|
||
|
get: async function (opts) {
|
||
|
return new Promise(function (resolve, reject) {
|
||
|
opts = opts || {}
|
||
|
try {
|
||
|
resolve({ opts: opts});
|
||
|
} catch (error) {
|
||
|
error.status = 500;
|
||
|
reject(error);
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
diagnostics.init(settings, runtimeAPI);
|
||
|
|
||
|
request(app)
|
||
|
.get("/diagnostics")
|
||
|
.expect(403)
|
||
|
.end(function(err,res) {
|
||
|
if (!err && typeof res.error !== "object") {
|
||
|
return done(new Error("accessing diagnostics endpoint while disabled should raise error"));
|
||
|
}
|
||
|
res.should.have.property("statusCode",403);
|
||
|
res.body.should.have.property("message","diagnostics are disabled");
|
||
|
res.body.should.have.property("code","diagnostics.disabled");
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
});
|