mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
@@ -18,40 +18,42 @@ describe('LocalFileSystem', function() {
|
||||
});
|
||||
|
||||
it('should initialise the user directory',function() {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
fs.existsSync(path.join(userDir,"lib")).should.be.true;
|
||||
fs.existsSync(path.join(userDir,"lib",'flows')).should.be.true;
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
fs.existsSync(path.join(userDir,"lib")).should.be.true;
|
||||
fs.existsSync(path.join(userDir,"lib",'flows')).should.be.true;
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle missing flow file',function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
var flowFile = 'flows_'+require('os').hostname()+'.json';
|
||||
var flowFilePath = path.join(userDir,flowFile);
|
||||
fs.existsSync(flowFilePath).should.be.false;
|
||||
localfilesystem.getFlows().then(function(flows) {
|
||||
flows.should.eql([]);
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
it('should save flows to the default file',function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
var flowFile = 'flows_'+require('os').hostname()+'.json';
|
||||
var flowFilePath = path.join(userDir,flowFile);
|
||||
fs.existsSync(flowFilePath).should.be.false;
|
||||
localfilesystem.saveFlows(testFlow).then(function() {
|
||||
fs.existsSync(flowFilePath).should.be.true;
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
var flowFile = 'flows_'+require('os').hostname()+'.json';
|
||||
var flowFilePath = path.join(userDir,flowFile);
|
||||
fs.existsSync(flowFilePath).should.be.false;
|
||||
localfilesystem.getFlows().then(function(flows) {
|
||||
flows.should.eql(testFlow);
|
||||
flows.should.eql([]);
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
it('should save flows to the default file',function(done) {
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
var flowFile = 'flows_'+require('os').hostname()+'.json';
|
||||
var flowFilePath = path.join(userDir,flowFile);
|
||||
fs.existsSync(flowFilePath).should.be.false;
|
||||
localfilesystem.saveFlows(testFlow).then(function() {
|
||||
fs.existsSync(flowFilePath).should.be.true;
|
||||
localfilesystem.getFlows().then(function(flows) {
|
||||
flows.should.eql(testFlow);
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -61,129 +63,137 @@ describe('LocalFileSystem', function() {
|
||||
var flowFile = 'test.json';
|
||||
var flowFilePath = path.join(userDir,flowFile);
|
||||
|
||||
localfilesystem.init({userDir:userDir, flowFile:flowFilePath});
|
||||
|
||||
fs.existsSync(defaultFlowFilePath).should.be.false;
|
||||
fs.existsSync(flowFilePath).should.be.false;
|
||||
|
||||
localfilesystem.saveFlows(testFlow).then(function() {
|
||||
localfilesystem.init({userDir:userDir, flowFile:flowFilePath}).then(function() {
|
||||
fs.existsSync(defaultFlowFilePath).should.be.false;
|
||||
fs.existsSync(flowFilePath).should.be.true;
|
||||
localfilesystem.getFlows().then(function(flows) {
|
||||
flows.should.eql(testFlow);
|
||||
done();
|
||||
fs.existsSync(flowFilePath).should.be.false;
|
||||
|
||||
localfilesystem.saveFlows(testFlow).then(function() {
|
||||
fs.existsSync(defaultFlowFilePath).should.be.false;
|
||||
fs.existsSync(flowFilePath).should.be.true;
|
||||
localfilesystem.getFlows().then(function(flows) {
|
||||
flows.should.eql(testFlow);
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle missing credentials', function(done) {
|
||||
var credFile = path.join(userDir,"credentials.json");
|
||||
localfilesystem.init({userDir:userDir});
|
||||
fs.existsSync(credFile).should.be.false;
|
||||
|
||||
localfilesystem.getCredentials().then(function(creds) {
|
||||
creds.should.eql({});
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
fs.existsSync(credFile).should.be.false;
|
||||
|
||||
localfilesystem.getCredentials().then(function(creds) {
|
||||
creds.should.eql({});
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle credentials', function(done) {
|
||||
var credFile = path.join(userDir,"credentials.json");
|
||||
|
||||
localfilesystem.init({userDir:userDir});
|
||||
|
||||
fs.existsSync(credFile).should.be.false;
|
||||
|
||||
var credentials = {"abc":{"type":"creds"}};
|
||||
|
||||
localfilesystem.saveCredentials(credentials).then(function() {
|
||||
fs.existsSync(credFile).should.be.true;
|
||||
localfilesystem.getCredentials().then(function(creds) {
|
||||
creds.should.eql(credentials);
|
||||
done();
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
|
||||
fs.existsSync(credFile).should.be.false;
|
||||
|
||||
var credentials = {"abc":{"type":"creds"}};
|
||||
|
||||
localfilesystem.saveCredentials(credentials).then(function() {
|
||||
fs.existsSync(credFile).should.be.true;
|
||||
localfilesystem.getCredentials().then(function(creds) {
|
||||
creds.should.eql(credentials);
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
it('should return an empty list of library flows',function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
localfilesystem.getAllFlows().then(function(flows) {
|
||||
flows.should.eql({});
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a valid list of library flows',function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
var flowLib = path.join(userDir,"lib","flows");
|
||||
fs.closeSync(fs.openSync(path.join(flowLib,"A.json"),"w"));
|
||||
fs.closeSync(fs.openSync(path.join(flowLib,"B.json"),"w"));
|
||||
fs.mkdirSync(path.join(flowLib,"C"));
|
||||
fs.closeSync(fs.openSync(path.join(flowLib,"C","D.json"),"w"));
|
||||
var testFlowsList = {"d":{"C":{"f":["D"]}},"f":["A","B"]};
|
||||
|
||||
localfilesystem.getAllFlows().then(function(flows) {
|
||||
flows.should.eql(testFlowsList);
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
it('should fail a non-existent flow', function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
localfilesystem.getFlow("a/b/c.json").then(function(flow) {
|
||||
should.fail(flow,"No flow","Flow found");
|
||||
}).otherwise(function(err) {
|
||||
// err should be null, so this will pass
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a flow',function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
var testflowString = JSON.stringify(testFlow);
|
||||
localfilesystem.saveFlow("a/b/c/d.json",testflowString).then(function() {
|
||||
localfilesystem.getFlow("a/b/c/d.json").then(function(flow) {
|
||||
flow.should.eql(testflowString);
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
localfilesystem.getAllFlows().then(function(flows) {
|
||||
flows.should.eql({});
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a valid list of library flows',function(done) {
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
var flowLib = path.join(userDir,"lib","flows");
|
||||
fs.closeSync(fs.openSync(path.join(flowLib,"A.json"),"w"));
|
||||
fs.closeSync(fs.openSync(path.join(flowLib,"B.json"),"w"));
|
||||
fs.mkdirSync(path.join(flowLib,"C"));
|
||||
fs.closeSync(fs.openSync(path.join(flowLib,"C","D.json"),"w"));
|
||||
var testFlowsList = {"d":{"C":{"f":["D"]}},"f":["A","B"]};
|
||||
|
||||
localfilesystem.getAllFlows().then(function(flows) {
|
||||
flows.should.eql(testFlowsList);
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should fail a non-existent flow', function(done) {
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
localfilesystem.getFlow("a/b/c.json").then(function(flow) {
|
||||
should.fail(flow,"No flow","Flow found");
|
||||
}).otherwise(function(err) {
|
||||
// err should be null, so this will pass
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a flow',function(done) {
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
var testflowString = JSON.stringify(testFlow);
|
||||
localfilesystem.saveFlow("a/b/c/d.json",testflowString).then(function() {
|
||||
localfilesystem.getFlow("a/b/c/d.json").then(function(flow) {
|
||||
flow.should.eql(testflowString);
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should return an empty list of library objects',function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
localfilesystem.getLibraryEntry('object','').then(function(flows) {
|
||||
flows.should.eql({});
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
localfilesystem.getLibraryEntry('object','').then(function(flows) {
|
||||
flows.should.eql({});
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should return an error for a non-existent library object',function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
localfilesystem.getLibraryEntry('object','A/B').then(function(flows) {
|
||||
should.fail(null,null,"non-existent flow");
|
||||
}).otherwise(function(err) {
|
||||
should.exist(err);
|
||||
done();
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
localfilesystem.getLibraryEntry('object','A/B').then(function(flows) {
|
||||
should.fail(null,null,"non-existent flow");
|
||||
}).otherwise(function(err) {
|
||||
should.exist(err);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -198,48 +208,15 @@ describe('LocalFileSystem', function() {
|
||||
}
|
||||
|
||||
it('should return a directory listing of library objects',function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
createObjectLibrary();
|
||||
|
||||
localfilesystem.getLibraryEntry('object','').then(function(flows) {
|
||||
flows.should.eql([ 'A', 'B', { abc: 'def', fn: 'file1.js' } ]);
|
||||
localfilesystem.getLibraryEntry('object','B').then(function(flows) {
|
||||
flows.should.eql([ 'C', { ghi: 'jkl', fn: 'file2.js' } ]);
|
||||
localfilesystem.getLibraryEntry('object','B/C').then(function(flows) {
|
||||
flows.should.eql([]);
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
createObjectLibrary();
|
||||
|
||||
it('should return a library object',function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
createObjectLibrary();
|
||||
localfilesystem.getLibraryEntry('object','B/file2.js').then(function(body) {
|
||||
body.should.eql("// not a metaline \n\n Hi");
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a newly saved library object',function(done) {
|
||||
localfilesystem.init({userDir:userDir});
|
||||
createObjectLibrary();
|
||||
localfilesystem.getLibraryEntry('object','B').then(function(flows) {
|
||||
flows.should.eql([ 'C', { ghi: 'jkl', fn: 'file2.js' } ]);
|
||||
localfilesystem.saveLibraryEntry('object','B/D/file3.js',{mno:'pqr'},"// another non meta line\n\n Hi There").then(function() {
|
||||
localfilesystem.getLibraryEntry('object','B/D').then(function(flows) {
|
||||
flows.should.eql([ { mno: 'pqr', fn: 'file3.js' } ]);
|
||||
localfilesystem.getLibraryEntry('object','B/D/file3.js').then(function(body) {
|
||||
body.should.eql("// another non meta line\n\n Hi There");
|
||||
localfilesystem.getLibraryEntry('object','').then(function(flows) {
|
||||
flows.should.eql([ 'A', 'B', { abc: 'def', fn: 'file1.js' } ]);
|
||||
localfilesystem.getLibraryEntry('object','B').then(function(flows) {
|
||||
flows.should.eql([ 'C', { ghi: 'jkl', fn: 'file2.js' } ]);
|
||||
localfilesystem.getLibraryEntry('object','B/C').then(function(flows) {
|
||||
flows.should.eql([]);
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
@@ -250,8 +227,44 @@ describe('LocalFileSystem', function() {
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a library object',function(done) {
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
createObjectLibrary();
|
||||
localfilesystem.getLibraryEntry('object','B/file2.js').then(function(body) {
|
||||
body.should.eql("// not a metaline \n\n Hi");
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should return a newly saved library object',function(done) {
|
||||
localfilesystem.init({userDir:userDir}).then(function() {
|
||||
createObjectLibrary();
|
||||
localfilesystem.getLibraryEntry('object','B').then(function(flows) {
|
||||
flows.should.eql([ 'C', { ghi: 'jkl', fn: 'file2.js' } ]);
|
||||
localfilesystem.saveLibraryEntry('object','B/D/file3.js',{mno:'pqr'},"// another non meta line\n\n Hi There").then(function() {
|
||||
localfilesystem.getLibraryEntry('object','B/D').then(function(flows) {
|
||||
flows.should.eql([ { mno: 'pqr', fn: 'file3.js' } ]);
|
||||
localfilesystem.getLibraryEntry('object','B/D/file3.js').then(function(body) {
|
||||
body.should.eql("// another non meta line\n\n Hi There");
|
||||
done();
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
}).otherwise(function(err) {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user