').appendTo(pane);
var summaryContent = $('
').appendTo(summary);
+ var versionContent = $('
').addClass('red-ui-help-info-none').appendTo(summary);
updateProjectSummary(activeProject.summary, summaryContent);
+ updateProjectVersion(activeProject.version, versionContent);
+
if (RED.user.hasPermission("projects.write")) {
$('
')
.prependTo(summary)
.on("click", function(evt) {
evt.preventDefault();
- editSummary(activeProject, activeProject.summary, summaryContent);
+ editSummary(activeProject, activeProject.summary, summaryContent, activeProject.version, versionContent);
});
}
$('
').appendTo(pane);
@@ -1573,8 +1589,6 @@ RED.projects.settings = (function() {
updateForm();
}
-
-
function createSettingsPane(activeProject) {
var pane = $('
');
createFilesSection(activeProject,pane);
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectUserSettings.js b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectUserSettings.js
index 170aacea0..31acbc1e4 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectUserSettings.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectUserSettings.js
@@ -38,13 +38,34 @@ RED.projects.userSettings = (function() {
$('
').text(RED._("editor:sidebar.project.userSettings.email")).appendTo(row);
gitEmailInput = $('
').appendTo(row);
gitEmailInput.val(currentGitSettings.user.email||"");
+
+ }
+
+ function createWorkflowSection(pane) {
+
+ var currentGitSettings = RED.settings.get('git') || {};
+ currentGitSettings.workflow = currentGitSettings.workflow || {};
+ currentGitSettings.workflow.mode = currentGitSettings.workflow.mode || "manual";
+
+ var title = $('
').text(RED._("editor:sidebar.project.userSettings.workflow")).appendTo(pane);
+
+ var workflowContainer = $('
').appendTo(pane);
+ $('
').appendTo(workflowContainer).text(RED._("editor:sidebar.project.userSettings.workfowTip"));
+
+ var row = $('
').appendTo(workflowContainer);
+ $('
').appendTo(row);
+ row = $('
').appendTo(workflowContainer);
+ $('
').appendTo(row);
+
+ workflowContainer.find('[name="user-setting-gitworkflow"][type="radio"][value="'+currentGitSettings.workflow.mode+'"]').prop('checked',true)
+
}
function createSSHKeySection(pane) {
+ var title = $('
').text(RED._("editor:sidebar.project.userSettings.sshKeys")).appendTo(pane);
var container = $('
').appendTo(pane);
var popover;
- var title = $('
').text(RED._("editor:sidebar.project.userSettings.sshKeys")).appendTo(container);
var subtitle = $('
').appendTo(container).text(RED._("editor:sidebar.project.userSettings.sshKeysTip"));
var addKeyButton = $('
')
@@ -391,6 +412,7 @@ RED.projects.userSettings = (function() {
function createSettingsPane(activeProject) {
var pane = $('
');
createGitUserSection(pane);
+ createWorkflowSection(pane);
createSSHKeySection(pane);
return pane;
}
@@ -407,6 +429,9 @@ RED.projects.userSettings = (function() {
currentGitSettings.user = currentGitSettings.user || {};
currentGitSettings.user.name = gitUsernameInput.val();
currentGitSettings.user.email = gitEmailInput.val();
+ currentGitSettings.workflow = currentGitSettings.workflow || {};
+ currentGitSettings.workflow.mode = $('[name="user-setting-gitworkflow"][type="radio"]:checked').val()
+
RED.settings.set('git', currentGitSettings);
}
});
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/tab-versionControl.js b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/tab-versionControl.js
index 7d20fe094..8aede9c2b 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/tab-versionControl.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/tab-versionControl.js
@@ -293,14 +293,20 @@ RED.sidebar.versionControl = (function() {
if (activeProject) {
// TODO: this is a full refresh of the files - should be able to
// just do an incremental refresh
- allChanges = {};
- unstagedChangesList.editableList('empty');
- stagedChangesList.editableList('empty');
- unmergedChangesList.editableList('empty');
- $.getJSON("projects/"+activeProject.name+"/status",function(result) {
- refreshFiles(result);
- });
+ var workflowMode = ((RED.settings.get('git') || {}).workflow || {}).mode || "manual";
+ if (workflowMode === 'auto') {
+ refresh(true);
+ } else {
+ allChanges = {};
+ unstagedChangesList.editableList('empty');
+ stagedChangesList.editableList('empty');
+ unmergedChangesList.editableList('empty');
+
+ $.getJSON("projects/"+activeProject.name+"/status",function(result) {
+ refreshFiles(result);
+ });
+ }
}
});
RED.events.on("login",function() {
diff --git a/packages/node_modules/@node-red/editor-client/src/sass/userSettings.scss b/packages/node_modules/@node-red/editor-client/src/sass/userSettings.scss
index 60afeebe4..5cf0570c2 100644
--- a/packages/node_modules/@node-red/editor-client/src/sass/userSettings.scss
+++ b/packages/node_modules/@node-red/editor-client/src/sass/userSettings.scss
@@ -79,7 +79,7 @@
display: table;
clear: both;
}
- .uneditable-input, input, textarea {
+ .uneditable-input, input[type="text"],input[type="password"], textarea {
width: calc(100% - 150px);
}
textarea {
diff --git a/packages/node_modules/@node-red/runtime/lib/api/flows.js b/packages/node_modules/@node-red/runtime/lib/api/flows.js
index 6cbda197a..4207c83ce 100644
--- a/packages/node_modules/@node-red/runtime/lib/api/flows.js
+++ b/packages/node_modules/@node-red/runtime/lib/api/flows.js
@@ -88,7 +88,7 @@ var api = module.exports = {
return reject(err);
}
}
- apiPromise = runtime.nodes.setFlows(flows.flows,flows.credentials,deploymentType);
+ apiPromise = runtime.nodes.setFlows(flows.flows,flows.credentials,deploymentType,null,null,opts.user);
}
apiPromise.then(function(flowId) {
return resolve({rev:flowId});
@@ -98,7 +98,7 @@ var api = module.exports = {
return reject(err);
});
});
- });
+ });
},
/**
@@ -114,7 +114,7 @@ var api = module.exports = {
return mutex.runExclusive(function() {
return new Promise(function (resolve, reject) {
var flow = opts.flow;
- runtime.nodes.addFlow(flow).then(function (id) {
+ runtime.nodes.addFlow(flow,opts.user).then(function (id) {
runtime.log.audit({event: "flow.add", id: id}, opts.req);
return resolve(id);
}).catch(function (err) {
@@ -170,7 +170,7 @@ var api = module.exports = {
var flow = opts.flow;
var id = opts.id;
try {
- runtime.nodes.updateFlow(id, flow).then(function () {
+ runtime.nodes.updateFlow(id, flow, opts.user).then(function () {
runtime.log.audit({event: "flow.update", id: id}, opts.req);
return resolve(id);
}).catch(function (err) {
@@ -216,7 +216,7 @@ var api = module.exports = {
return new Promise(function (resolve, reject) {
var id = opts.id;
try {
- runtime.nodes.removeFlow(id).then(function () {
+ runtime.nodes.removeFlow(id, opts.user).then(function () {
runtime.log.audit({event: "flow.remove", id: id}, opts.req);
return resolve();
}).catch(function (err) {
diff --git a/packages/node_modules/@node-red/runtime/lib/nodes/flows/index.js b/packages/node_modules/@node-red/runtime/lib/nodes/flows/index.js
index 1a350ce7c..38742daf3 100644
--- a/packages/node_modules/@node-red/runtime/lib/nodes/flows/index.js
+++ b/packages/node_modules/@node-red/runtime/lib/nodes/flows/index.js
@@ -115,7 +115,7 @@ function load(forceStart) {
* type - full/nodes/flows/load (default full)
* muteLog - don't emit the standard log messages (used for individual flow api)
*/
-function setFlows(_config,_credentials,type,muteLog,forceStart) {
+function setFlows(_config,_credentials,type,muteLog,forceStart,user) {
if (typeof _credentials === "string") {
type = _credentials;
_credentials = null;
@@ -186,7 +186,7 @@ function setFlows(_config,_credentials,type,muteLog,forceStart) {
credentialsDirty:credsDirty,
credentials: creds
}
- return storage.saveFlows(saveConfig);
+ return storage.saveFlows(saveConfig, user);
});
}
@@ -481,7 +481,7 @@ function updateMissingTypes() {
}
}
-function addFlow(flow) {
+function addFlow(flow, user) {
var i,node;
if (!flow.hasOwnProperty('nodes')) {
throw new Error('missing nodes property');
@@ -531,7 +531,7 @@ function addFlow(flow) {
var newConfig = clone(activeConfig.flows);
newConfig = newConfig.concat(nodes);
- return setFlows(newConfig,null,'flows',true).then(function() {
+ return setFlows(newConfig, null, 'flows', true, null, user).then(function() {
log.info(log._("nodes.flows.added-flow",{label:(flow.label?flow.label+" ":"")+"["+flow.id+"]"}));
return flow.id;
});
@@ -607,7 +607,7 @@ function getFlow(id) {
return result;
}
-function updateFlow(id,newFlow) {
+function updateFlow(id,newFlow, user) {
var label = id;
if (id !== 'global') {
if (!activeFlowConfig.flows[id]) {
@@ -662,12 +662,12 @@ function updateFlow(id,newFlow) {
}
newConfig = newConfig.concat(nodes);
- return setFlows(newConfig,null,'flows',true).then(function() {
+ return setFlows(newConfig, null, 'flows', true, null, user).then(function() {
log.info(log._("nodes.flows.updated-flow",{label:(label?label+" ":"")+"["+id+"]"}));
})
}
-function removeFlow(id) {
+function removeFlow(id, user) {
if (id === 'global') {
// TODO: nls + error code
throw new Error('not allowed to remove global');
@@ -684,7 +684,7 @@ function removeFlow(id) {
return node.z !== id && node.id !== id;
});
- return setFlows(newConfig,null,'flows',true).then(function() {
+ return setFlows(newConfig, null, 'flows', true, null, user).then(function() {
log.info(log._("nodes.flows.removed-flow",{label:(flow.label?flow.label+" ":"")+"["+flow.id+"]"}));
});
}
diff --git a/packages/node_modules/@node-red/runtime/lib/storage/index.js b/packages/node_modules/@node-red/runtime/lib/storage/index.js
index 4966820a3..0a5ddbf0d 100644
--- a/packages/node_modules/@node-red/runtime/lib/storage/index.js
+++ b/packages/node_modules/@node-red/runtime/lib/storage/index.js
@@ -82,7 +82,7 @@ var storageModuleInterface = {
})
});
},
- saveFlows: function(config) {
+ saveFlows: function(config, user) {
var flows = config.flows;
var credentials = config.credentials;
var credentialSavePromise;
@@ -94,7 +94,7 @@ var storageModuleInterface = {
delete config.credentialsDirty;
return credentialSavePromise.then(function() {
- return storageModule.saveFlows(flows).then(function() {
+ return storageModule.saveFlows(flows, user).then(function() {
return crypto.createHash('md5').update(JSON.stringify(config.flows)).digest("hex");
})
});
diff --git a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js
index ad3c0bf26..0fbf89de4 100644
--- a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js
+++ b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js
@@ -40,16 +40,22 @@ function getSSHKeyUsername(userObj) {
}
return username;
}
-function getGitUser(user) {
+
+function getUserGitSettings(user) {
var username;
if (!user) {
username = "_";
} else {
username = user.username;
}
- var userSettings = settings.getUserSettings(username);
- if (userSettings && userSettings.git) {
- return userSettings.git.user;
+ var userSettings = settings.getUserSettings(username)||{};
+ return userSettings.git;
+}
+
+function getGitUser(user) {
+ var gitSettings = getUserGitSettings(user);
+ if (gitSettings) {
+ return gitSettings.user;
}
return null;
}
@@ -172,7 +178,7 @@ Project.prototype.initialise = function(user,data) {
}
}
- return when.all(promises).then(function() {
+ return Promise.all(promises).then(function() {
return gitTools.stageFile(project.path,files);
}).then(function() {
return gitTools.commit(project.path,"Create project files",getGitUser(user));
@@ -343,6 +349,10 @@ Project.prototype.update = function (user, data) {
savePackage = true;
this.package.description = data.summary;
}
+ if (data.hasOwnProperty('version')) {
+ savePackage = true;
+ this.package.version = data.version;
+ }
if (data.hasOwnProperty('git')) {
if (data.git.hasOwnProperty('user')) {
@@ -390,11 +400,15 @@ Project.prototype.update = function (user, data) {
if (saveSettings) {
promises.push(settings.set("projects",globalProjectSettings));
}
+
+ var modifiedFiles = [];
+
if (saveREADME) {
promises.push(util.writeFile(fspath.join(this.path,this.paths['README.md']), this.description));
+ modifiedFiles.push('README.md');
}
if (savePackage) {
- promises.push(fs.readFile(fspath.join(project.path,project.paths['package.json']),"utf8").then(content => {
+ promises.push(fs.readFile(fspath.join(this.path,this.paths['package.json']),"utf8").then(content => {
var currentPackage = {};
try {
currentPackage = util.parseJSON(content);
@@ -403,12 +417,22 @@ Project.prototype.update = function (user, data) {
this.package = Object.assign(currentPackage,this.package);
return util.writeFile(fspath.join(project.path,this.paths['package.json']), JSON.stringify(this.package,"",4));
}));
+ modifiedFiles.push('package.json');
}
- return when.settle(promises).then(res => {
+ return when.settle(promises).then(function(res) {
+ var gitSettings = getUserGitSettings(user) || {};
+ var workflowMode = (gitSettings.workflow||{}).mode || "manual";
+ if (workflowMode === 'auto') {
+ return project.stageFile(modifiedFiles.map(f => project.paths[f])).then(() => {
+ return project.commit(user,{message:"Update "+modifiedFiles.join(", ")})
+ })
+ }
+ }).then(res => {
if (reloadProject) {
return this.load()
}
- }).then(() => { return {
+ }).then(function() {
+ return {
flowFilesChanged: flowFilesChanged,
credentialSecretChanged: credentialSecretChanged
}})
@@ -809,6 +833,7 @@ Project.prototype.export = function () {
return {
name: this.name,
summary: this.package.description,
+ version: this.package.version,
description: this.description,
dependencies: this.package.dependencies||{},
empty: this.empty,
@@ -910,7 +935,7 @@ function createDefaultProject(user, project) {
}
}
- return when.all(promises).then(function() {
+ return Promise.all(promises).then(function() {
return gitTools.stageFile(projectPath,files);
}).then(function() {
return gitTools.commit(projectPath,"Create project",getGitUser(user));
diff --git a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/index.js b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/index.js
index 22b0aa36a..5e1d4f15b 100644
--- a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/index.js
+++ b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/index.js
@@ -190,7 +190,13 @@ function listProjects() {
}
function getUserGitSettings(user) {
- var userSettings = settings.getUserSettings(user)||{};
+ var username;
+ if (!user) {
+ username = "_";
+ } else {
+ username = user.username;
+ }
+ var userSettings = settings.getUserSettings(username)||{};
return userSettings.git;
}
@@ -362,7 +368,6 @@ function reloadActiveProject(action) {
});
}
function createProject(user, metadata) {
- // var userSettings = getUserGitSettings(user);
if (metadata.files && metadata.migrateFiles) {
// We expect there to be no active project in this scenario
if (activeProject) {
@@ -549,7 +554,7 @@ function getFlows() {
});
}
-function saveFlows(flows) {
+function saveFlows(flows, user) {
if (settings.readOnly) {
return when.resolve();
}
@@ -569,7 +574,15 @@ function saveFlows(flows) {
} else {
flowData = JSON.stringify(flows);
}
- return util.writeFile(flowsFullPath, flowData, flowsFileBackup);
+ return util.writeFile(flowsFullPath, flowData, flowsFileBackup).then(() => {
+ var gitSettings = getUserGitSettings(user) || {};
+ var workflowMode = (gitSettings.workflow||{}).mode || "manual";
+ if (activeProject && workflowMode === 'auto') {
+ return activeProject.stageFile([flowsFullPath, credentialsFile]).then(() => {
+ return activeProject.commit(user,{message:"Update flow files"})
+ })
+ }
+ });
}
function getCredentials() {
diff --git a/test/unit/@node-red/runtime/lib/storage/localfilesystem/index_spec.js b/test/unit/@node-red/runtime/lib/storage/localfilesystem/index_spec.js
index acfe3db43..a145716dc 100644
--- a/test/unit/@node-red/runtime/lib/storage/localfilesystem/index_spec.js
+++ b/test/unit/@node-red/runtime/lib/storage/localfilesystem/index_spec.js
@@ -45,7 +45,7 @@ describe('storage/localfilesystem', function() {
});
it('should initialise the user directory',function(done) {
- localfilesystem.init({userDir:userDir}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir,getUserSettings: () => {{}}}, mockRuntime).then(function() {
fs.existsSync(path.join(userDir,"lib")).should.be.true();
fs.existsSync(path.join(userDir,"lib",'flows')).should.be.true();
done();
@@ -60,7 +60,7 @@ describe('storage/localfilesystem', function() {
process.env.NODE_RED_HOME = path.join(userDir,"NRH");
fs.mkdirSync(process.env.NODE_RED_HOME);
fs.writeFileSync(path.join(process.env.NODE_RED_HOME,".config.json"),"{}","utf8");
- var settings = {};
+ var settings = {getUserSettings: () => {{}}};
localfilesystem.init(settings, mockRuntime).then(function() {
try {
fs.existsSync(path.join(process.env.NODE_RED_HOME,"lib")).should.be.true();
@@ -85,7 +85,7 @@ describe('storage/localfilesystem', function() {
fs.mkdirSync(process.env.HOMEPATH);
fs.mkdirSync(path.join(process.env.HOMEPATH,".node-red"));
fs.writeFileSync(path.join(process.env.HOMEPATH,".node-red",".config.json"),"{}","utf8");
- var settings = {};
+ var settings = {getUserSettings: () => {{}}};
localfilesystem.init(settings, mockRuntime).then(function() {
try {
fs.existsSync(path.join(process.env.HOMEPATH,".node-red","lib")).should.be.true();
@@ -112,7 +112,7 @@ describe('storage/localfilesystem', function() {
process.env.HOMEPATH = path.join(userDir,"HOMEPATH");
fs.mkdirSync(process.env.HOME);
- var settings = {};
+ var settings = {getUserSettings: () => {{}}};
localfilesystem.init(settings, mockRuntime).then(function() {
try {
fs.existsSync(path.join(process.env.HOME,".node-red","lib")).should.be.true();
@@ -142,7 +142,7 @@ describe('storage/localfilesystem', function() {
process.env.USERPROFILE = path.join(userDir,"USERPROFILE");
fs.mkdirSync(process.env.USERPROFILE);
- var settings = {};
+ var settings = {getUserSettings: () => {{}}};
localfilesystem.init(settings, mockRuntime).then(function() {
try {
fs.existsSync(path.join(process.env.USERPROFILE,".node-red","lib")).should.be.true();
@@ -163,7 +163,7 @@ describe('storage/localfilesystem', function() {
});
it('should handle missing flow file',function(done) {
- localfilesystem.init({userDir:userDir}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir,getUserSettings: () => {{}}}, mockRuntime).then(function() {
var flowFile = 'flows_'+require('os').hostname()+'.json';
var flowFilePath = path.join(userDir,flowFile);
fs.existsSync(flowFilePath).should.be.false();
@@ -179,7 +179,7 @@ describe('storage/localfilesystem', function() {
});
it('should handle empty flow file, no backup',function(done) {
- localfilesystem.init({userDir:userDir}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir,getUserSettings: () => {{}}}, mockRuntime).then(function() {
var flowFile = 'flows_'+require('os').hostname()+'.json';
var flowFilePath = path.join(userDir,flowFile);
var flowFileBackupPath = path.join(userDir,"."+flowFile+".backup");
@@ -197,7 +197,7 @@ describe('storage/localfilesystem', function() {
});
it('should handle empty flow file, restores backup',function(done) {
- localfilesystem.init({userDir:userDir}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir,getUserSettings: () => {{}}}, mockRuntime).then(function() {
var flowFile = 'flows_'+require('os').hostname()+'.json';
var flowFilePath = path.join(userDir,flowFile);
var flowFileBackupPath = path.join(userDir,"."+flowFile+".backup");
@@ -220,7 +220,7 @@ describe('storage/localfilesystem', function() {
});
it('should save flows to the default file',function(done) {
- localfilesystem.init({userDir:userDir}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir,getUserSettings: () => {{}}}, mockRuntime).then(function() {
var flowFile = 'flows_'+require('os').hostname()+'.json';
var flowFilePath = path.join(userDir,flowFile);
var flowFileBackupPath = path.join(userDir,"."+flowFile+".backup");
@@ -249,7 +249,7 @@ describe('storage/localfilesystem', function() {
var flowFile = 'test.json';
var flowFilePath = path.join(userDir,flowFile);
- localfilesystem.init({userDir:userDir, flowFile:flowFilePath}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir, flowFile:flowFilePath,getUserSettings: () => {{}}}, mockRuntime).then(function() {
fs.existsSync(defaultFlowFilePath).should.be.false();
fs.existsSync(flowFilePath).should.be.false();
@@ -273,7 +273,7 @@ describe('storage/localfilesystem', function() {
it('should format the flows file when flowFilePretty specified',function(done) {
var flowFile = 'test.json';
var flowFilePath = path.join(userDir,flowFile);
- localfilesystem.init({userDir:userDir, flowFile:flowFilePath,flowFilePretty:true}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir, flowFile:flowFilePath,flowFilePretty:true,getUserSettings: () => {{}}}, mockRuntime).then(function() {
localfilesystem.saveFlows(testFlow).then(function() {
var content = fs.readFileSync(flowFilePath,"utf8");
content.split("\n").length.should.be.above(1);
@@ -294,7 +294,7 @@ describe('storage/localfilesystem', function() {
it('should fsync the flows file',function(done) {
var flowFile = 'test.json';
var flowFilePath = path.join(userDir,flowFile);
- localfilesystem.init({editorTheme:{projects:{enabled:false}},userDir:userDir, flowFile:flowFilePath}, mockRuntime).then(function() {
+ localfilesystem.init({editorTheme:{projects:{enabled:false}},userDir:userDir, flowFile:flowFilePath,getUserSettings: () => {{}}}, mockRuntime).then(function() {
sinon.spy(fs,"fsync");
localfilesystem.saveFlows(testFlow).then(function() {
fs.fsync.callCount.should.be.greaterThan(0);
@@ -312,7 +312,7 @@ describe('storage/localfilesystem', function() {
it('should log fsync errors and continue',function(done) {
var flowFile = 'test.json';
var flowFilePath = path.join(userDir,flowFile);
- localfilesystem.init({userDir:userDir, flowFile:flowFilePath}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir, flowFile:flowFilePath,getUserSettings: () => {{}}}, mockRuntime).then(function() {
sinon.stub(fs,"fsync", function(fd, cb) {
cb(new Error());
});
@@ -338,7 +338,7 @@ describe('storage/localfilesystem', function() {
var flowFilePath = path.join(userDir,flowFile);
var flowFileBackupPath = path.join(userDir,"."+flowFile+".backup");
- localfilesystem.init({userDir:userDir, flowFile:flowFilePath}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir, flowFile:flowFilePath,getUserSettings: () => {{}}}, mockRuntime).then(function() {
fs.existsSync(defaultFlowFilePath).should.be.false();
fs.existsSync(flowFilePath).should.be.false();
fs.existsSync(flowFileBackupPath).should.be.false();
@@ -378,7 +378,7 @@ describe('storage/localfilesystem', function() {
var flowFile = 'test.json';
var flowFilePath = path.join(userDir,flowFile);
var credFile = path.join(userDir,"test_cred.json");
- localfilesystem.init({userDir:userDir, flowFile:flowFilePath}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir, flowFile:flowFilePath,getUserSettings: () => {{}}}, mockRuntime).then(function() {
fs.existsSync(credFile).should.be.false();
localfilesystem.getCredentials().then(function(creds) {
@@ -397,7 +397,7 @@ describe('storage/localfilesystem', function() {
var flowFilePath = path.join(userDir,flowFile);
var credFile = path.join(userDir,"test_cred.json");
- localfilesystem.init({userDir:userDir, flowFile:flowFilePath}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir, flowFile:flowFilePath,getUserSettings: () => {{}}}, mockRuntime).then(function() {
fs.existsSync(credFile).should.be.false();
@@ -426,7 +426,7 @@ describe('storage/localfilesystem', function() {
var credFile = path.join(userDir,"test_cred.json");
var credFileBackup = path.join(userDir,".test_cred.json.backup");
- localfilesystem.init({userDir:userDir, flowFile:flowFilePath}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir, flowFile:flowFilePath,getUserSettings: () => {{}}}, mockRuntime).then(function() {
fs.writeFileSync(credFile,"{}","utf8");
@@ -452,7 +452,7 @@ describe('storage/localfilesystem', function() {
var flowFilePath = path.join(userDir,flowFile);
var credFile = path.join(userDir,"test_cred.json");
- localfilesystem.init({userDir:userDir, flowFile:flowFilePath, flowFilePretty:true}, mockRuntime).then(function() {
+ localfilesystem.init({userDir:userDir, flowFile:flowFilePath, flowFilePretty:true,getUserSettings: () => {{}}}, mockRuntime).then(function() {
fs.existsSync(credFile).should.be.false();