mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Merge pull request #1827 from node-red-hitachi/context-test-localfile
Add test cases for localfilesystem context
This commit is contained in:
		@@ -203,6 +203,8 @@ LocalFileSystem.prototype.set = function(scope, key, value, callback) {
 | 
			
		||||
        var storagePath = getStoragePath(this.storageBaseDir ,scope);
 | 
			
		||||
        fs.outputFile(storagePath + ".json", JSON.stringify(newContext, undefined, 4), "utf8").catch(function(err) {
 | 
			
		||||
        });
 | 
			
		||||
    } else if (callback && typeof callback !== 'function') {
 | 
			
		||||
        throw new Error("Callback must be a function");
 | 
			
		||||
    } else {
 | 
			
		||||
        this._set(scope,key,value,callback);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -63,6 +63,15 @@ describe('localfilesystem',function() {
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should store local scope property', function (done) {
 | 
			
		||||
            context.set("abc:def", "foo.bar", "test", function (err) {
 | 
			
		||||
                context.get("abc:def", "foo", function (err, value) {
 | 
			
		||||
                    value.should.be.eql({ bar: "test" });
 | 
			
		||||
                    done();
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should delete property',function(done) {
 | 
			
		||||
            context.set("nodeX","foo.abc.bar1","test1",function(err){
 | 
			
		||||
                context.set("nodeX","foo.abc.bar2","test2",function(err){
 | 
			
		||||
@@ -240,6 +249,81 @@ describe('localfilesystem',function() {
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should throw an error when getting a value with invalid key', function (done) {
 | 
			
		||||
            context.set("nodeX","foo","bar",function(err) {
 | 
			
		||||
                context.get("nodeX"," ",function(err,value) {
 | 
			
		||||
                    should.exist(err);
 | 
			
		||||
                    done();
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should throw an error when setting a value with invalid key',function (done) {
 | 
			
		||||
            context.set("nodeX"," ","bar",function (err) {
 | 
			
		||||
                should.exist(err);
 | 
			
		||||
                done();
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should throw an error when callback of get() is not a function',function (done) {
 | 
			
		||||
            try {
 | 
			
		||||
                context.get("nodeX","foo","callback");
 | 
			
		||||
                done("should throw an error.");
 | 
			
		||||
            } catch (err) {
 | 
			
		||||
                done();
 | 
			
		||||
            };
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should throw an error when callback of get() is not specified',function (done) {
 | 
			
		||||
            try {
 | 
			
		||||
                context.get("nodeX","foo");
 | 
			
		||||
                done("should throw an error.");
 | 
			
		||||
            } catch (err) {
 | 
			
		||||
                done();
 | 
			
		||||
            };
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should throw an error when callback of set() is not a function',function (done) {
 | 
			
		||||
            try {
 | 
			
		||||
                context.set("nodeX","foo","bar","callback");
 | 
			
		||||
                done("should throw an error.");
 | 
			
		||||
            } catch (err) {
 | 
			
		||||
                done();
 | 
			
		||||
            };
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should not throw an error when callback of set() is not specified', function (done) {
 | 
			
		||||
            try {
 | 
			
		||||
                context.set("nodeX"," ","bar");
 | 
			
		||||
                done();
 | 
			
		||||
            } catch (err) {
 | 
			
		||||
                done("should not throw an error.");
 | 
			
		||||
            };
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should handle empty context file', function (done) {
 | 
			
		||||
            fs.outputFile(path.join(resourcesDir,"contexts","nodeX","flow.json"),"",function(){
 | 
			
		||||
                context.get("nodeX", "foo", function (err, value) {
 | 
			
		||||
                    should.not.exist(value);
 | 
			
		||||
                    context.set("nodeX", "foo", "test", function (err) {
 | 
			
		||||
                        context.get("nodeX", "foo", function (err, value) {
 | 
			
		||||
                            value.should.be.equal("test");
 | 
			
		||||
                            done();
 | 
			
		||||
                        });
 | 
			
		||||
                    });
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should throw an error when reading corrupt context file', function (done) {
 | 
			
		||||
            fs.outputFile(path.join(resourcesDir, "contexts", "nodeX", "flow.json"),"{abc",function(){
 | 
			
		||||
                context.get("nodeX", "foo", function (err, value) {
 | 
			
		||||
                    should.exist(err);
 | 
			
		||||
                    done();
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    describe('#keys',function() {
 | 
			
		||||
@@ -286,6 +370,24 @@ describe('localfilesystem',function() {
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should throw an error when callback of keys() is not a function', function (done) {
 | 
			
		||||
            try {
 | 
			
		||||
                context.keys("nodeX", "callback");
 | 
			
		||||
                done("should throw an error.");
 | 
			
		||||
            } catch (err) {
 | 
			
		||||
                done();
 | 
			
		||||
            };
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should throw an error when callback of keys() is not specified', function (done) {
 | 
			
		||||
            try {
 | 
			
		||||
                context.keys("nodeX");
 | 
			
		||||
                done("should throw an error.");
 | 
			
		||||
            } catch (err) {
 | 
			
		||||
                done();
 | 
			
		||||
            };
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    describe('#delete',function() {
 | 
			
		||||
@@ -496,4 +598,132 @@ describe('localfilesystem',function() {
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    describe('Configuration', function () {
 | 
			
		||||
        it('should change a base directory', function (done) {
 | 
			
		||||
            var differentBaseContext = LocalFileSystem({
 | 
			
		||||
                base: "contexts2",
 | 
			
		||||
                dir: resourcesDir,
 | 
			
		||||
                cache: false
 | 
			
		||||
            });
 | 
			
		||||
            differentBaseContext.open().then(function () {
 | 
			
		||||
                differentBaseContext.set("node2", "foo2", "bar2", function (err) {
 | 
			
		||||
                    differentBaseContext.get("node2", "foo2", function (err, value) {
 | 
			
		||||
                        value.should.be.equal("bar2");
 | 
			
		||||
                        context.get("node2", "foo2", function(err, value) {
 | 
			
		||||
                            should.not.exist(value);
 | 
			
		||||
                            done();
 | 
			
		||||
                        });
 | 
			
		||||
                    });
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should use userDir', function (done) {
 | 
			
		||||
            var userDirContext = LocalFileSystem({
 | 
			
		||||
                base: "contexts2",
 | 
			
		||||
                cache: false,
 | 
			
		||||
                settings: {
 | 
			
		||||
                    userDir: resourcesDir
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
            userDirContext.open().then(function () {
 | 
			
		||||
                userDirContext.set("node2", "foo2", "bar2", function (err) {
 | 
			
		||||
                    userDirContext.get("node2", "foo2", function (err, value) {
 | 
			
		||||
                        value.should.be.equal("bar2");
 | 
			
		||||
                        context.get("node2", "foo2", function (err, value) {
 | 
			
		||||
                            should.not.exist(value);
 | 
			
		||||
                            done();
 | 
			
		||||
                        });
 | 
			
		||||
                    });
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should use NODE_RED_HOME', function (done) {
 | 
			
		||||
            var oldNRH = process.env.NODE_RED_HOME;
 | 
			
		||||
            process.env.NODE_RED_HOME = resourcesDir;
 | 
			
		||||
            fs.mkdirSync(resourcesDir);
 | 
			
		||||
            fs.writeFileSync(path.join(resourcesDir,".config.json"),"");
 | 
			
		||||
            var nrHomeContext = LocalFileSystem({
 | 
			
		||||
                base: "contexts2",
 | 
			
		||||
                cache: false
 | 
			
		||||
            });
 | 
			
		||||
            try {
 | 
			
		||||
                nrHomeContext.open().then(function () {
 | 
			
		||||
                    nrHomeContext.set("node2", "foo2", "bar2", function (err) {
 | 
			
		||||
                        nrHomeContext.get("node2", "foo2", function (err, value) {
 | 
			
		||||
                            value.should.be.equal("bar2");
 | 
			
		||||
                            context.get("node2", "foo2", function (err, value) {
 | 
			
		||||
                                should.not.exist(value);
 | 
			
		||||
                                done();
 | 
			
		||||
                            });
 | 
			
		||||
                        });
 | 
			
		||||
                    });
 | 
			
		||||
                });
 | 
			
		||||
            } finally {
 | 
			
		||||
                process.env.NODE_RED_HOME = oldNRH;
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should use HOME_PATH', function (done) {
 | 
			
		||||
            var oldNRH = process.env.NODE_RED_HOME;
 | 
			
		||||
            var oldHOMEPATH = process.env.HOMEPATH;
 | 
			
		||||
            process.env.NODE_RED_HOME = resourcesDir;
 | 
			
		||||
            process.env.HOMEPATH = resourcesDir;
 | 
			
		||||
            var homePath = path.join(resourcesDir, ".node-red");
 | 
			
		||||
            fs.outputFile(path.join(homePath, ".config.json"),"",function(){
 | 
			
		||||
                var homeContext = LocalFileSystem({
 | 
			
		||||
                    base: "contexts2",
 | 
			
		||||
                    cache: false
 | 
			
		||||
                });
 | 
			
		||||
                try {
 | 
			
		||||
                    homeContext.open().then(function () {
 | 
			
		||||
                        homeContext.set("node2", "foo2", "bar2", function (err) {
 | 
			
		||||
                            homeContext.get("node2", "foo2", function (err, value) {
 | 
			
		||||
                                value.should.be.equal("bar2");
 | 
			
		||||
                                context.get("node2", "foo2", function (err, value) {
 | 
			
		||||
                                    should.not.exist(value);
 | 
			
		||||
                                    done();
 | 
			
		||||
                                });
 | 
			
		||||
                            });
 | 
			
		||||
                        });
 | 
			
		||||
                    });
 | 
			
		||||
                } finally {
 | 
			
		||||
                    process.env.NODE_RED_HOME = oldNRH;
 | 
			
		||||
                    process.env.HOMEPATH = oldHOMEPATH;
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it('should use HOME_PATH', function (done) {
 | 
			
		||||
            var oldNRH = process.env.NODE_RED_HOME;
 | 
			
		||||
            var oldHOMEPATH = process.env.HOMEPATH;
 | 
			
		||||
            var oldHOME = process.env.HOME;
 | 
			
		||||
            process.env.NODE_RED_HOME = resourcesDir;
 | 
			
		||||
            process.env.HOMEPATH = resourcesDir;
 | 
			
		||||
            process.env.HOME = resourcesDir;
 | 
			
		||||
            var homeContext = LocalFileSystem({
 | 
			
		||||
                base: "contexts2",
 | 
			
		||||
                cache: false
 | 
			
		||||
            });
 | 
			
		||||
            try {
 | 
			
		||||
                homeContext.open().then(function () {
 | 
			
		||||
                    homeContext.set("node2", "foo2", "bar2", function (err) {
 | 
			
		||||
                        homeContext.get("node2", "foo2", function (err, value) {
 | 
			
		||||
                            value.should.be.equal("bar2");
 | 
			
		||||
                            context.get("node2", "foo2", function (err, value) {
 | 
			
		||||
                                should.not.exist(value);
 | 
			
		||||
                                done();
 | 
			
		||||
                            });
 | 
			
		||||
                        });
 | 
			
		||||
                    });
 | 
			
		||||
                });
 | 
			
		||||
            } finally {
 | 
			
		||||
                process.env.NODE_RED_HOME = oldNRH;
 | 
			
		||||
                process.env.HOMEPATH = oldHOMEPATH;
 | 
			
		||||
                process.env.HOME = oldHOME;
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user