mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Registry tests for plugins and enable/disable in CLI
This commit is contained in:
		@@ -405,6 +405,108 @@ describe('NodeRegistry', function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it('returns plugins list', function(done) {
 | 
				
			||||||
 | 
					        var fs = require("fs");
 | 
				
			||||||
 | 
					        var path = require("path");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var pathJoin = (function() {
 | 
				
			||||||
 | 
					            var _join = path.join;
 | 
				
			||||||
 | 
					            return sinon.stub(path,"join",function() {
 | 
				
			||||||
 | 
					                if (arguments.length  == 3 && arguments[2] == "package.json") {
 | 
				
			||||||
 | 
					                    return _join(resourcesDir,"TestNodeModule" + path.sep + "node_modules" + path.sep,arguments[1],arguments[2]);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (arguments.length == 2 && arguments[1] == "TestNodeModule") {
 | 
				
			||||||
 | 
					                    return _join(resourcesDir,"TestNodeModule" + path.sep + "node_modules" + path.sep,arguments[1]);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return _join.apply(this,arguments);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        })();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var readdirSync = (function() {
 | 
				
			||||||
 | 
					            var originalReaddirSync = fs.readdirSync;
 | 
				
			||||||
 | 
					            var callCount = 0;
 | 
				
			||||||
 | 
					            return sinon.stub(fs,"readdirSync",function(dir) {
 | 
				
			||||||
 | 
					                var result = [];
 | 
				
			||||||
 | 
					                if (callCount == 1) {
 | 
				
			||||||
 | 
					                    result = originalReaddirSync(resourcesDir + "TestNodeModule" + path.sep + "node_modules");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                callCount++;
 | 
				
			||||||
 | 
					                return result;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        })();
 | 
				
			||||||
 | 
					        typeRegistry.init(settingsWithStorage);
 | 
				
			||||||
 | 
					        typeRegistry.load("wontexist",true).then(function(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            typeRegistry.addModule("TestNodeModule").then(function() {
 | 
				
			||||||
 | 
					                var list = typeRegistry.getPluginList();
 | 
				
			||||||
 | 
					                list.should.be.an.Array.and.have.lengthOf(1);
 | 
				
			||||||
 | 
					                list[0].should.have.property("name", "TestNodeModule");
 | 
				
			||||||
 | 
					                list[0].should.have.property("nodes");
 | 
				
			||||||
 | 
					                list[0].nodes.should.be.an.Array.and.have.lengthOf(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                done();
 | 
				
			||||||
 | 
					            }).catch(function(e) {
 | 
				
			||||||
 | 
					                done(e);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }).catch(function(e) {
 | 
				
			||||||
 | 
					            done(e);
 | 
				
			||||||
 | 
					        }).finally(function() {
 | 
				
			||||||
 | 
					            readdirSync.restore();
 | 
				
			||||||
 | 
					            pathJoin.restore();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it('returns plugin info', function(done) {
 | 
				
			||||||
 | 
					        var fs = require("fs");
 | 
				
			||||||
 | 
					        var path = require("path");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var pathJoin = (function() {
 | 
				
			||||||
 | 
					            var _join = path.join;
 | 
				
			||||||
 | 
					            return sinon.stub(path,"join",function() {
 | 
				
			||||||
 | 
					                if (arguments.length  == 3 && arguments[2] == "package.json") {
 | 
				
			||||||
 | 
					                    return _join(resourcesDir,"TestNodeModule" + path.sep + "node_modules" + path.sep,arguments[1],arguments[2]);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (arguments.length == 2 && arguments[1] == "TestNodeModule") {
 | 
				
			||||||
 | 
					                    return _join(resourcesDir,"TestNodeModule" + path.sep + "node_modules" + path.sep,arguments[1]);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return _join.apply(this,arguments);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        })();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var readdirSync = (function() {
 | 
				
			||||||
 | 
					            var originalReaddirSync = fs.readdirSync;
 | 
				
			||||||
 | 
					            var callCount = 0;
 | 
				
			||||||
 | 
					            return sinon.stub(fs,"readdirSync",function(dir) {
 | 
				
			||||||
 | 
					                var result = [];
 | 
				
			||||||
 | 
					                if (callCount == 1) {
 | 
				
			||||||
 | 
					                    result = originalReaddirSync(resourcesDir + "TestNodeModule" + path.sep + "node_modules");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                callCount++;
 | 
				
			||||||
 | 
					                return result;
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        })();
 | 
				
			||||||
 | 
					        typeRegistry.init(settingsWithStorage);
 | 
				
			||||||
 | 
					        typeRegistry.load("wontexist",true).then(function(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            typeRegistry.addModule("TestNodeModule").then(function(nodes) {
 | 
				
			||||||
 | 
					                var list = typeRegistry.getPluginList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var plugin = typeRegistry.getPluginInfo(list[0].name);
 | 
				
			||||||
 | 
					                plugin.should.have.property("name", list[0].name);
 | 
				
			||||||
 | 
					                plugin.should.have.property("nodes", nodes);
 | 
				
			||||||
 | 
					                done();
 | 
				
			||||||
 | 
					            }).catch(function(e) {
 | 
				
			||||||
 | 
					                done(e);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }).catch(function(e) {
 | 
				
			||||||
 | 
					            done(e);
 | 
				
			||||||
 | 
					        }).finally(function() {
 | 
				
			||||||
 | 
					            readdirSync.restore();
 | 
				
			||||||
 | 
					            pathJoin.restore();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it('rejects adding duplicate nodes', function(done) {
 | 
					    it('rejects adding duplicate nodes', function(done) {
 | 
				
			||||||
        typeRegistry.init(settingsWithStorage);
 | 
					        typeRegistry.init(settingsWithStorage);
 | 
				
			||||||
@@ -745,7 +847,7 @@ describe('NodeRegistry', function() {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it('allows nodes to be enabled and disabled', function(done) {
 | 
					    it('allows nodes to be enabled and disabled by hex-id', function(done) {
 | 
				
			||||||
        typeRegistry.init(settingsWithStorage);
 | 
					        typeRegistry.init(settingsWithStorage);
 | 
				
			||||||
        typeRegistry.load(resourcesDir+path.sep+"TestNode1",true).then(function() {
 | 
					        typeRegistry.load(resourcesDir+path.sep+"TestNode1",true).then(function() {
 | 
				
			||||||
            var list = typeRegistry.getNodeList();
 | 
					            var list = typeRegistry.getNodeList();
 | 
				
			||||||
@@ -784,6 +886,49 @@ describe('NodeRegistry', function() {
 | 
				
			|||||||
        });
 | 
					        });
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it('allows nodes to be enabled and disabled by node-type', function(done) {
 | 
				
			||||||
 | 
					        typeRegistry.init(settingsWithStorage);
 | 
				
			||||||
 | 
					        typeRegistry.load(resourcesDir+path.sep+"TestNode1",true).then(function() {
 | 
				
			||||||
 | 
					            var list = typeRegistry.getNodeList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            list.should.be.an.Array.and.have.lengthOf(1);
 | 
				
			||||||
 | 
					            list[0].should.have.property("id");
 | 
				
			||||||
 | 
					            list[0].should.have.property("name","TestNode1.js");
 | 
				
			||||||
 | 
					            list[0].should.have.property("types",["test-node-1"]);
 | 
				
			||||||
 | 
					            list[0].should.have.property("enabled",true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var nodeConfig = typeRegistry.getNodeConfigs();
 | 
				
			||||||
 | 
					            nodeConfig.length.should.be.greaterThan(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var info = typeRegistry.disableNode(list[0].types[0]);
 | 
				
			||||||
 | 
					            info.should.have.property("id",list[0].id);
 | 
				
			||||||
 | 
					            info.should.have.property("types",list[0].types);
 | 
				
			||||||
 | 
					            info.should.have.property("enabled",false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list2 = typeRegistry.getNodeList();
 | 
				
			||||||
 | 
					            list2.should.be.an.Array.and.have.lengthOf(1);
 | 
				
			||||||
 | 
					            list2[0].should.have.property("enabled",false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            typeRegistry.getNodeConfigs().length.should.equal(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var info2 = typeRegistry.enableNode(list[0].types[0]);
 | 
				
			||||||
 | 
					            info2.should.have.property("id",list[0].id);
 | 
				
			||||||
 | 
					            info2.should.have.property("types",list[0].types);
 | 
				
			||||||
 | 
					            info2.should.have.property("enabled",true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var list3 = typeRegistry.getNodeList();
 | 
				
			||||||
 | 
					            list3.should.be.an.Array.and.have.lengthOf(1);
 | 
				
			||||||
 | 
					            list3[0].should.have.property("enabled",true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var nodeConfig2 = typeRegistry.getNodeConfigs();
 | 
				
			||||||
 | 
					            nodeConfig2.should.eql(nodeConfig);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            done();
 | 
				
			||||||
 | 
					        }).catch(function(e) {
 | 
				
			||||||
 | 
					            done(e);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it('fails to enable/disable non-existent nodes', function(done) {
 | 
					    it('fails to enable/disable non-existent nodes', function(done) {
 | 
				
			||||||
        typeRegistry.init(settings);
 | 
					        typeRegistry.init(settings);
 | 
				
			||||||
        typeRegistry.load("wontexist",true).then(function() {
 | 
					        typeRegistry.load("wontexist",true).then(function() {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user