mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Merge pull request #2397 from kazuhitoyokoi/master-fixuitest
Fix test cases for UI
This commit is contained in:
commit
a4c351fd4f
@ -52,8 +52,11 @@ function getFlowFilename() {
|
||||
}
|
||||
|
||||
function cleanup(flowFile) {
|
||||
deleteFile(homeDir+"/"+flowFile);
|
||||
deleteFile(homeDir+"/."+flowFile+".backup");
|
||||
var credentialFile = flowFile.replace(/\.json$/, '') + '_cred.json';
|
||||
deleteFile(homeDir + "/" + flowFile);
|
||||
deleteFile(homeDir + "/." + flowFile + ".backup");
|
||||
deleteFile(homeDir + "/" + credentialFile);
|
||||
deleteFile(homeDir + "/." + credentialFile + ".backup");
|
||||
}
|
||||
|
||||
function deleteFile(flowFile) {
|
||||
|
@ -17,7 +17,7 @@
|
||||
var idMap = {
|
||||
// input
|
||||
"inject": ".red-ui-palette-node[data-palette-type='inject']",
|
||||
"httpin": ".red-ui-palette-node[data-palette-type='http in']",
|
||||
"httpIn": ".red-ui-palette-node[data-palette-type='http in']",
|
||||
"mqttIn": ".red-ui-palette-node[data-palette-type='mqtt in']",
|
||||
// output
|
||||
"debug": ".red-ui-palette-node[data-palette-type='debug']",
|
||||
@ -32,7 +32,7 @@ var idMap = {
|
||||
"html": ".red-ui-palette-node[data-palette-type='html']",
|
||||
"json": ".red-ui-palette-node[data-palette-type='json']",
|
||||
// storage
|
||||
"filein": ".red-ui-palette-node[data-palette-type='file in']",
|
||||
"fileIn": ".red-ui-palette-node[data-palette-type='file in']",
|
||||
};
|
||||
|
||||
function getId(type) {
|
||||
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
var when = require("when");
|
||||
var when = require("when");
|
||||
|
||||
var events = require("nr-test-utils").require("@node-red/runtime/lib/events.js");
|
||||
|
||||
@ -44,6 +44,7 @@ function addNode(type, x, y) {
|
||||
previousY = previousY + flowLayout.heightInterval;
|
||||
}
|
||||
}
|
||||
browser.waitForVisible(palette.getId(type));
|
||||
browser.moveToObject(palette.getId(type));
|
||||
browser.buttonDown();
|
||||
browser.moveToObject("#red-ui-palette-search", previousX + 300, previousY + 100); // adjust to the top-left corner of workspace.
|
||||
@ -56,7 +57,12 @@ function addNode(type, x, y) {
|
||||
}
|
||||
|
||||
function deleteAllNodes() {
|
||||
browser.click('.red-ui-workspace-chart-event-layer');
|
||||
browser.waitForVisible('.red-ui-workspace-chart-event-layer');
|
||||
try {
|
||||
browser.click('.red-ui-workspace-chart-event-layer');
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
browser.keys(['Control', 'a', 'a', 'Control']); // call twice to release the keys.
|
||||
browser.keys(['Delete']);
|
||||
}
|
||||
|
@ -47,11 +47,11 @@ injectNode.prototype.setPayload = function(payloadType, payload) {
|
||||
// Open a payload type list.
|
||||
browser.clickWithWait('//*[contains(@class, "red-ui-typedInput-container")]');
|
||||
// Select a payload type.
|
||||
var payloadTypeXPath = '//*[@class="red-ui-typedInput-options"]/a[' + payloadTypeList[payloadType] + ']';
|
||||
var payloadTypeXPath = '//*[contains(@class, "red-ui-typedInput-options")]/a[' + payloadTypeList[payloadType] + ']';
|
||||
browser.clickWithWait(payloadTypeXPath);
|
||||
if (payload) {
|
||||
// Input a value.
|
||||
browser.setValue('//*[@class="red-ui-typedInput-input"]/input', payload);
|
||||
browser.setValue('//*[contains(@class, "red-ui-typedInput-input")]/input', payload);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ debugNode.prototype.setOutput = function(complete) {
|
||||
browser.clickWithWait('//*[contains(@class, "red-ui-typedInput-container")]/button');
|
||||
if (complete !== 'true') {
|
||||
// Select the "msg" type.
|
||||
browser.clickWithWait('//div[@class="red-ui-typedInput-options"][1]/a[1]');
|
||||
browser.clickWithWait('//div[contains(@class, "red-ui-typedInput-options")][1]/a[1]');
|
||||
// Input the path in msg.
|
||||
browser.clickWithWait('//*[contains(@class, "red-ui-typedInput-input")]/input');
|
||||
browser.keys(keyPage.selectAll());
|
||||
|
@ -23,13 +23,14 @@ function setServer(broker, port) {
|
||||
function clickOk() {
|
||||
browser.clickWithWait('#node-config-dialog-ok');
|
||||
// Wait until an config dialog closes.
|
||||
browser.waitForVisible('#node-config-dialog-ok', 2000, true);
|
||||
browser.waitForVisible('#node-config-dialog-ok', 4000, true);
|
||||
}
|
||||
|
||||
function edit() {
|
||||
browser.clickWithWait('#node-input-lookup-broker');
|
||||
browser.waitForVisible('#node-input-lookup-broker');
|
||||
browser.click('#node-input-lookup-broker');
|
||||
// Wait until a config dialog opens.
|
||||
browser.waitForVisible('#node-config-dialog-ok', 2000);
|
||||
browser.waitForVisible('#node-config-dialog-ok', 4000);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
@ -18,18 +18,18 @@ var util = require("util");
|
||||
|
||||
var nodePage = require("../../node_page");
|
||||
|
||||
function httpinNode(id) {
|
||||
function httpInNode(id) {
|
||||
nodePage.call(this, id);
|
||||
}
|
||||
|
||||
util.inherits(httpinNode, nodePage);
|
||||
util.inherits(httpInNode, nodePage);
|
||||
|
||||
httpinNode.prototype.setMethod = function(method) {
|
||||
httpInNode.prototype.setMethod = function(method) {
|
||||
browser.selectWithWait('#node-input-method', method);
|
||||
}
|
||||
|
||||
httpinNode.prototype.setUrl = function(url) {
|
||||
httpInNode.prototype.setUrl = function(url) {
|
||||
browser.setValue('#node-input-url', url);
|
||||
}
|
||||
|
||||
module.exports = httpinNode;
|
||||
module.exports = httpInNode;
|
||||
|
@ -55,7 +55,7 @@ changeNode.prototype.ruleSet = function(p, pt, to, tot, index) {
|
||||
if (pt) {
|
||||
browser.clickWithWait('//*[@id="node-input-rule-container"]/li[' + index + ']/div/div[1]/div/button[1]');
|
||||
var num = 5 * (index - 1) + 1;
|
||||
var ptXPath = '//div[@class="red-ui-typedInput-options"][' + num + ']/a[' + ptType[pt] + ']';
|
||||
var ptXPath = '//div[contains(@class, "red-ui-typedInput-options")][' + num + ']/a[' + ptType[pt] + ']';
|
||||
browser.clickWithWait(ptXPath);
|
||||
}
|
||||
if (p) {
|
||||
@ -64,7 +64,7 @@ changeNode.prototype.ruleSet = function(p, pt, to, tot, index) {
|
||||
if (tot) {
|
||||
browser.clickWithWait('//*[@id="node-input-rule-container"]/li[' + index + ']/div/div[2]/div[2]/button[1]');
|
||||
var num = 5 * (index - 1) + 2;
|
||||
var totXPath = '//div[@class="red-ui-typedInput-options"][' + num + ']/a[' + totType[tot] + ']';
|
||||
var totXPath = '//div[contains(@class, "red-ui-typedInput-options")][' + num + ']/a[' + totType[tot] + ']';
|
||||
browser.clickWithWait(totXPath);
|
||||
}
|
||||
if (to) {
|
||||
|
@ -18,11 +18,11 @@ var util = require("util");
|
||||
|
||||
var nodePage = require("../../node_page");
|
||||
|
||||
function fileinNode(id) {
|
||||
function fileInNode(id) {
|
||||
nodePage.call(this, id);
|
||||
}
|
||||
|
||||
util.inherits(fileinNode, nodePage);
|
||||
util.inherits(fileInNode, nodePage);
|
||||
|
||||
var formatType = {
|
||||
"utf8": 1,
|
||||
@ -31,14 +31,14 @@ var formatType = {
|
||||
"stream": 4
|
||||
};
|
||||
|
||||
fileinNode.prototype.setFilename = function(filename) {
|
||||
fileInNode.prototype.setFilename = function(filename) {
|
||||
browser.setValue('#node-input-filename', filename);
|
||||
}
|
||||
|
||||
fileinNode.prototype.setOutput = function(format) {
|
||||
fileInNode.prototype.setOutput = function(format) {
|
||||
browser.clickWithWait('#node-input-format');
|
||||
var formatTypeXPath = '//*[@id="node-input-format"]/option[' + formatType[format] + ']';
|
||||
browser.clickWithWait(formatTypeXPath);
|
||||
}
|
||||
|
||||
module.exports = fileinNode;
|
||||
module.exports = fileInNode;
|
||||
|
@ -22,13 +22,13 @@ Node.prototype.edit = function() {
|
||||
browser.clickWithWait(this.id);
|
||||
browser.clickWithWait(this.id);
|
||||
// Wait until an edit dialog opens.
|
||||
browser.waitForVisible('#node-dialog-ok', 2000);
|
||||
browser.waitForVisible('#node-dialog-ok', 4000);
|
||||
}
|
||||
|
||||
Node.prototype.clickOk = function() {
|
||||
browser.clickWithWait('#node-dialog-ok');
|
||||
// Wait untile an edit dialog closes.
|
||||
browser.waitForVisible('#node-dialog-ok', 2000, true);
|
||||
browser.waitForVisible('#node-dialog-ok', 4000, true);
|
||||
browser.pause(50);
|
||||
}
|
||||
|
||||
@ -38,8 +38,10 @@ Node.prototype.connect = function(targetNode) {
|
||||
browser.dragAndDrop(outputPort, inputPort)
|
||||
}
|
||||
|
||||
Node.prototype.clickLeftButton = function() {
|
||||
browser.clickWithWait(this.id + '/*[@class="red-ui-flow-node-button"]');
|
||||
Node.prototype.clickLeftButton = function () {
|
||||
browser.moveToObject(this.id + '/*[@class="red-ui-flow-node-button"]');
|
||||
browser.buttonDown();
|
||||
browser.buttonUp();
|
||||
}
|
||||
|
||||
module.exports = Node;
|
||||
|
@ -20,20 +20,20 @@ var templateNode = require('./core/core/80-template_page');
|
||||
var functionNode = require('./core/core/80-function_page');
|
||||
var mqttInNode = require('./core/io/10-mqttin_page');
|
||||
var mqttOutNode = require('./core/io/10-mqttout_page');
|
||||
var httpinNode = require('./core/io/21-httpin_page');
|
||||
var httpInNode = require('./core/io/21-httpin_page');
|
||||
var httpResponseNode = require('./core/io/21-httpresponse_page');
|
||||
var changeNode = require('./core/logic/15-change_page');
|
||||
var rangeNode = require('./core/logic/16-range_page');
|
||||
var httpRequestNode = require('./core/io/21-httprequest_page');
|
||||
var htmlNode = require('./core/parsers/70-HTML_page');
|
||||
var jsonNode = require('./core/parsers/70-JSON_page');
|
||||
var fileinNode = require('./core/storage/50-filein_page');
|
||||
var fileInNode = require('./core/storage/50-filein_page');
|
||||
|
||||
|
||||
var nodeCatalog = {
|
||||
// input
|
||||
"inject": injectNode,
|
||||
"httpin": httpinNode,
|
||||
"httpIn": httpInNode,
|
||||
"mqttIn":mqttInNode,
|
||||
// output
|
||||
"debug": debugNode,
|
||||
@ -48,7 +48,7 @@ var nodeCatalog = {
|
||||
"html": htmlNode,
|
||||
"json":jsonNode,
|
||||
// storage
|
||||
"filein": fileinNode,
|
||||
"fileIn": fileInNode,
|
||||
}
|
||||
|
||||
function create(type, id) {
|
||||
|
@ -37,7 +37,7 @@ describe('Workspace', function() {
|
||||
});
|
||||
|
||||
it('should have a right title', function () {
|
||||
browser.getTitle().should.equal('Node-RED');
|
||||
browser.getTitle().should.startWith('Node-RED');
|
||||
});
|
||||
|
||||
it('should output a timestamp', function() {
|
||||
|
@ -38,14 +38,14 @@ describe('cookbook', function() {
|
||||
|
||||
describe('HTTP endpoints', function () {
|
||||
it('create an HTTP endpoint', function () {
|
||||
var httpinNode = workspace.addNode("httpin");
|
||||
var httpInNode = workspace.addNode("httpIn");
|
||||
var templateNode = workspace.addNode("template");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("get");
|
||||
httpinNode.setUrl("/hello");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("get");
|
||||
httpInNode.setUrl("/hello");
|
||||
httpInNode.clickOk();
|
||||
|
||||
templateNode.edit();
|
||||
templateNode.setSyntax("mustache");
|
||||
@ -53,7 +53,7 @@ describe('cookbook', function() {
|
||||
templateNode.setTemplate("<html>\n<head></head>\n<body>\n<h1>Hello World!</h1>\n</body>\n</html>");
|
||||
templateNode.clickOk();
|
||||
|
||||
httpinNode.connect(templateNode);
|
||||
httpInNode.connect(templateNode);
|
||||
templateNode.connect(httpResponseNode);
|
||||
|
||||
// The code for confirmation starts from here.
|
||||
@ -77,14 +77,14 @@ describe('cookbook', function() {
|
||||
});
|
||||
|
||||
it('handle query parameters passed to an HTTP endpoint', function () {
|
||||
var httpinNode = workspace.addNode("httpin");
|
||||
var httpInNode = workspace.addNode("httpIn");
|
||||
var templateNode = workspace.addNode("template");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("get");
|
||||
httpinNode.setUrl("/hello-query");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("get");
|
||||
httpInNode.setUrl("/hello-query");
|
||||
httpInNode.clickOk();
|
||||
|
||||
templateNode.edit();
|
||||
templateNode.setSyntax("mustache");
|
||||
@ -92,7 +92,7 @@ describe('cookbook', function() {
|
||||
templateNode.setTemplate("<html>\n<head></head>\n<body>\n<h1>Hello {{req.query.name}}!</h1>\n</body>\n</html>");
|
||||
templateNode.clickOk();
|
||||
|
||||
httpinNode.connect(templateNode);
|
||||
httpInNode.connect(templateNode);
|
||||
templateNode.connect(httpResponseNode);
|
||||
|
||||
// The code for confirmation starts from here.
|
||||
@ -116,14 +116,14 @@ describe('cookbook', function() {
|
||||
});
|
||||
|
||||
it('handle url parameters in an HTTP endpoint', function () {
|
||||
var httpinNode = workspace.addNode("httpin");
|
||||
var httpInNode = workspace.addNode("httpIn");
|
||||
var templateNode = workspace.addNode("template");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("get");
|
||||
httpinNode.setUrl("/hello-param/:name");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("get");
|
||||
httpInNode.setUrl("/hello-param/:name");
|
||||
httpInNode.clickOk();
|
||||
|
||||
templateNode.edit();
|
||||
templateNode.setSyntax("mustache");
|
||||
@ -131,7 +131,7 @@ describe('cookbook', function() {
|
||||
templateNode.setTemplate("<html>\n<head></head>\n<body>\n<h1>Hello {{req.params.name}}!</h1>\n</body>\n</html>");
|
||||
templateNode.clickOk();
|
||||
|
||||
httpinNode.connect(templateNode);
|
||||
httpInNode.connect(templateNode);
|
||||
templateNode.connect(httpResponseNode);
|
||||
|
||||
// The code for confirmation starts from here.
|
||||
@ -155,14 +155,14 @@ describe('cookbook', function() {
|
||||
});
|
||||
|
||||
it('access HTTP request headers', function () {
|
||||
var httpinNode = workspace.addNode("httpin");
|
||||
var httpInNode = workspace.addNode("httpIn");
|
||||
var templateNode = workspace.addNode("template");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("get");
|
||||
httpinNode.setUrl("/hello-headers");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("get");
|
||||
httpInNode.setUrl("/hello-headers");
|
||||
httpInNode.clickOk();
|
||||
|
||||
templateNode.edit();
|
||||
templateNode.setSyntax("mustache");
|
||||
@ -170,7 +170,7 @@ describe('cookbook', function() {
|
||||
templateNode.setTemplate("<html>\n<head></head>\n<body>\n<h1>User agent: {{req.headers.user-agent}}</h1>\n</body>\n</html>");
|
||||
templateNode.clickOk();
|
||||
|
||||
httpinNode.connect(templateNode);
|
||||
httpInNode.connect(templateNode);
|
||||
templateNode.connect(httpResponseNode);
|
||||
|
||||
// The code for confirmation starts from here.
|
||||
@ -203,7 +203,7 @@ describe('cookbook', function() {
|
||||
var injectNodeTimestamp = workspace.addNode("inject");
|
||||
var changeNodeStore = workspace.addNode("change");
|
||||
|
||||
var httpinNode = workspace.addNode("httpin", 0, 100);
|
||||
var httpInNode = workspace.addNode("httpIn", 0, 100);
|
||||
var changeNodeCopy = workspace.addNode("change");
|
||||
var templateNode = workspace.addNode("template");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
@ -218,10 +218,10 @@ describe('cookbook', function() {
|
||||
|
||||
injectNodeTimestamp.connect(changeNodeStore);
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("get");
|
||||
httpinNode.setUrl("/hello-data");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("get");
|
||||
httpInNode.setUrl("/hello-data");
|
||||
httpInNode.clickOk();
|
||||
|
||||
changeNodeCopy.edit();
|
||||
changeNodeCopy.ruleSet("timestamp", "msg", "timestamp", "flow");
|
||||
@ -233,7 +233,7 @@ describe('cookbook', function() {
|
||||
templateNode.setTemplate("<html>\n<head></head>\n<body>\n<h1>Time: {{ timestamp }}</h1>\n</body>\n</html>");
|
||||
templateNode.clickOk();
|
||||
|
||||
httpinNode.connect(changeNodeCopy);
|
||||
httpInNode.connect(changeNodeCopy);
|
||||
changeNodeCopy.connect(templateNode);
|
||||
templateNode.connect(httpResponseNode);
|
||||
|
||||
@ -260,15 +260,15 @@ describe('cookbook', function() {
|
||||
});
|
||||
|
||||
it('serve JSON content', function () {
|
||||
var httpinNode = workspace.addNode("httpin");
|
||||
var httpInNode = workspace.addNode("httpIn");
|
||||
var templateNode = workspace.addNode("template");
|
||||
var changeNode = workspace.addNode("change");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("get");
|
||||
httpinNode.setUrl("/hello-json");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("get");
|
||||
httpInNode.setUrl("/hello-json");
|
||||
httpInNode.clickOk();
|
||||
|
||||
templateNode.edit();
|
||||
templateNode.setSyntax("mustache");
|
||||
@ -282,7 +282,7 @@ describe('cookbook', function() {
|
||||
changeNode.ruleSet("headers.content-type", "msg", "application/json", "str", "2");
|
||||
changeNode.clickOk();
|
||||
|
||||
httpinNode.connect(templateNode);
|
||||
httpInNode.connect(templateNode);
|
||||
templateNode.connect(changeNode);
|
||||
changeNode.connect(httpResponseNode);
|
||||
|
||||
@ -314,20 +314,20 @@ describe('cookbook', function() {
|
||||
});
|
||||
|
||||
it('serve a local file', function () {
|
||||
var httpinNode = workspace.addNode("httpin");
|
||||
var fileinNode = workspace.addNode("filein");
|
||||
var httpInNode = workspace.addNode("httpIn");
|
||||
var fileInNode = workspace.addNode("fileIn");
|
||||
var changeNode = workspace.addNode("change", 200, 100);
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("get");
|
||||
httpinNode.setUrl("/hello-file");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("get");
|
||||
httpInNode.setUrl("/hello-file");
|
||||
httpInNode.clickOk();
|
||||
|
||||
fileinNode.edit();
|
||||
fileinNode.setFilename("test/resources/file-in-node/test.txt");
|
||||
fileinNode.setOutput("");
|
||||
fileinNode.clickOk();
|
||||
fileInNode.edit();
|
||||
fileInNode.setFilename("test/resources/file-in-node/test.txt");
|
||||
fileInNode.setOutput("");
|
||||
fileInNode.clickOk();
|
||||
|
||||
changeNode.edit();
|
||||
changeNode.ruleSet("headers", "msg", "{}", "json");
|
||||
@ -335,8 +335,8 @@ describe('cookbook', function() {
|
||||
changeNode.ruleSet("headers.content-type", "msg", "text/plain", "str", "2");
|
||||
changeNode.clickOk();
|
||||
|
||||
httpinNode.connect(fileinNode);
|
||||
fileinNode.connect(changeNode);
|
||||
httpInNode.connect(fileInNode);
|
||||
fileInNode.connect(changeNode);
|
||||
changeNode.connect(httpResponseNode);
|
||||
|
||||
// The code for confirmation starts from here.
|
||||
@ -360,14 +360,14 @@ describe('cookbook', function() {
|
||||
});
|
||||
|
||||
it('post raw data to a flow', function() {
|
||||
var httpinNode = workspace.addNode("httpin");
|
||||
var httpInNode = workspace.addNode("httpIn");
|
||||
var templateNode = workspace.addNode("template");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("post");
|
||||
httpinNode.setUrl("/hello-raw");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("post");
|
||||
httpInNode.setUrl("/hello-raw");
|
||||
httpInNode.clickOk();
|
||||
|
||||
templateNode.edit();
|
||||
templateNode.setSyntax("mustache");
|
||||
@ -375,7 +375,7 @@ describe('cookbook', function() {
|
||||
templateNode.setTemplate("<html>\n<head></head>\n<body>\n<h1>Hello {{ payload }}!</h1>\n</body>\n</html>");
|
||||
templateNode.clickOk();
|
||||
|
||||
httpinNode.connect(templateNode);
|
||||
httpInNode.connect(templateNode);
|
||||
templateNode.connect(httpResponseNode);
|
||||
|
||||
// The code for confirmation starts from here.
|
||||
@ -403,14 +403,14 @@ describe('cookbook', function() {
|
||||
});
|
||||
|
||||
it('post form data to a flow', function () {
|
||||
var httpinNode = workspace.addNode("httpin");
|
||||
var httpInNode = workspace.addNode("httpIn");
|
||||
var templateNode = workspace.addNode("template");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("post");
|
||||
httpinNode.setUrl("/hello-form");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("post");
|
||||
httpInNode.setUrl("/hello-form");
|
||||
httpInNode.clickOk();
|
||||
|
||||
templateNode.edit();
|
||||
templateNode.setSyntax("mustache");
|
||||
@ -418,7 +418,7 @@ describe('cookbook', function() {
|
||||
templateNode.setTemplate("<html>\n<head></head>\n<body>\n<h1>Hello {{ payload.name }}!</h1>\n</body>\n</html>");
|
||||
templateNode.clickOk();
|
||||
|
||||
httpinNode.connect(templateNode);
|
||||
httpInNode.connect(templateNode);
|
||||
templateNode.connect(httpResponseNode);
|
||||
|
||||
// The code for confirmation starts from here.
|
||||
@ -452,14 +452,14 @@ describe('cookbook', function() {
|
||||
});
|
||||
|
||||
it('post JSON data to a flow', function() {
|
||||
var httpinNode = workspace.addNode("httpin");
|
||||
var httpInNode = workspace.addNode("httpIn");
|
||||
var templateNode = workspace.addNode("template");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("post");
|
||||
httpinNode.setUrl("/hello-json");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("post");
|
||||
httpInNode.setUrl("/hello-json");
|
||||
httpInNode.clickOk();
|
||||
|
||||
templateNode.edit();
|
||||
templateNode.setSyntax("mustache");
|
||||
@ -467,7 +467,7 @@ describe('cookbook', function() {
|
||||
templateNode.setTemplate("<html>\n<head></head>\n<body>\n<h1>Hello {{ payload.name }}!</h1>\n</body>\n</html>");
|
||||
templateNode.clickOk();
|
||||
|
||||
httpinNode.connect(templateNode);
|
||||
httpInNode.connect(templateNode);
|
||||
templateNode.connect(httpResponseNode);
|
||||
|
||||
// The code for confirmation starts from here.
|
||||
@ -501,24 +501,22 @@ describe('cookbook', function() {
|
||||
});
|
||||
|
||||
it('work with cookies', function () {
|
||||
this.timeout(60000);
|
||||
|
||||
var httpinNodeFormat = workspace.addNode("httpin");
|
||||
var httpInNodeFormat = workspace.addNode("httpIn");
|
||||
var functionNodeFormat = workspace.addNode("function", 240);
|
||||
var templateNode = workspace.addNode("template", 400);
|
||||
var httpResponseNode = workspace.addNode("httpResponse", 600);
|
||||
|
||||
var httpinNodeAdd = workspace.addNode("httpin", 0, 100);
|
||||
var httpInNodeAdd = workspace.addNode("httpIn", 0, 100);
|
||||
var functionNodeAdd = workspace.addNode("function", 240);
|
||||
var changeNode = workspace.addNode("change", 400);
|
||||
|
||||
var httpinNodeClear = workspace.addNode("httpin", 0, 200);
|
||||
var httpInNodeClear = workspace.addNode("httpIn", 0, 200);
|
||||
var functionNodeClear = workspace.addNode("function", 250);
|
||||
|
||||
httpinNodeFormat.edit();
|
||||
httpinNodeFormat.setMethod("get");
|
||||
httpinNodeFormat.setUrl("/hello-cookie");
|
||||
httpinNodeFormat.clickOk();
|
||||
httpInNodeFormat.edit();
|
||||
httpInNodeFormat.setMethod("get");
|
||||
httpInNodeFormat.setUrl("/hello-cookie");
|
||||
httpInNodeFormat.clickOk();
|
||||
|
||||
functionNodeFormat.edit();
|
||||
functionNodeFormat.setFunction("msg.payload = JSON.stringify(msg.req.cookies,null,4);\nreturn msg;");
|
||||
@ -530,14 +528,14 @@ describe('cookbook', function() {
|
||||
templateNode.setTemplate('<html>\n<head></head>\n<body>\n<h1>Cookies</h1>\n<p></p><a href="hello-cookie/add">Add a cookie</a> • <a href="hello-cookie/clear">Clear cookies</a></p>\n<pre>{{ payload }}</pre>\n</body>\n</html>');
|
||||
templateNode.clickOk();
|
||||
|
||||
httpinNodeFormat.connect(functionNodeFormat);
|
||||
httpInNodeFormat.connect(functionNodeFormat);
|
||||
functionNodeFormat.connect(templateNode);
|
||||
templateNode.connect(httpResponseNode);
|
||||
|
||||
httpinNodeAdd.edit();
|
||||
httpinNodeAdd.setMethod("get");
|
||||
httpinNodeAdd.setUrl("/hello-cookie/add");
|
||||
httpinNodeAdd.clickOk();
|
||||
httpInNodeAdd.edit();
|
||||
httpInNodeAdd.setMethod("get");
|
||||
httpInNodeAdd.setUrl("/hello-cookie/add");
|
||||
httpInNodeAdd.clickOk();
|
||||
|
||||
functionNodeAdd.edit();
|
||||
functionNodeAdd.setFunction('msg.cookies = { };\n msg.cookies["demo-"+(Math.floor(Math.random()*1000))] = Date.now();\nreturn msg;');
|
||||
@ -551,20 +549,20 @@ describe('cookbook', function() {
|
||||
changeNode.ruleSet("headers.location", "msg", httpNodeRoot + "/hello-cookie", "str", "3");
|
||||
changeNode.clickOk();
|
||||
|
||||
httpinNodeAdd.connect(functionNodeAdd);
|
||||
httpInNodeAdd.connect(functionNodeAdd);
|
||||
functionNodeAdd.connect(changeNode);
|
||||
changeNode.connect(httpResponseNode);
|
||||
|
||||
httpinNodeClear.edit();
|
||||
httpinNodeClear.setMethod("get");
|
||||
httpinNodeClear.setUrl("/hello-cookie/clear");
|
||||
httpinNodeClear.clickOk();
|
||||
httpInNodeClear.edit();
|
||||
httpInNodeClear.setMethod("get");
|
||||
httpInNodeClear.setUrl("/hello-cookie/clear");
|
||||
httpInNodeClear.clickOk();
|
||||
|
||||
functionNodeClear.edit();
|
||||
functionNodeClear.setFunction("var cookieNames = Object.keys(msg.req.cookies).filter(function(cookieName) { return /^demo-/.test(cookieName);});\nmsg.cookies = {};\n\ncookieNames.forEach(function(cookieName) {\n msg.cookies[cookieName] = null;\n});\nreturn msg;\n");
|
||||
functionNodeClear.clickOk();
|
||||
|
||||
httpinNodeClear.connect(functionNodeClear);
|
||||
httpInNodeClear.connect(functionNodeClear);
|
||||
functionNodeClear.connect(changeNode);
|
||||
|
||||
workspace.deploy();
|
||||
|
@ -284,14 +284,14 @@ describe('cookbook', function() {
|
||||
httpRequetNode.connect(debugNode);
|
||||
|
||||
// The code for confirmation starts from here.
|
||||
var httpinNode = workspace.addNode("httpin", 0, 200);
|
||||
var httpInNode = workspace.addNode("httpIn", 0, 200);
|
||||
var templateNode = workspace.addNode("template");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("get");
|
||||
httpinNode.setUrl("/set-query");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("get");
|
||||
httpInNode.setUrl("/set-query");
|
||||
httpInNode.clickOk();
|
||||
|
||||
templateNode.edit();
|
||||
templateNode.setSyntax("mustache");
|
||||
@ -299,7 +299,7 @@ describe('cookbook', function() {
|
||||
templateNode.setTemplate("Hello {{req.query.q}}");
|
||||
templateNode.clickOk();
|
||||
|
||||
httpinNode.connect(templateNode);
|
||||
httpInNode.connect(templateNode);
|
||||
templateNode.connect(httpResponseNode);
|
||||
// The code for confirmation ends here.
|
||||
|
||||
@ -339,15 +339,15 @@ describe('cookbook', function() {
|
||||
httpRequetNode.connect(debugNode);
|
||||
|
||||
// The code for confirmation starts from here.
|
||||
var httpinNode = workspace.addNode("httpin", 0, 200);
|
||||
var httpInNode = workspace.addNode("httpIn", 0, 200);
|
||||
var templateNode = workspace.addNode("template");
|
||||
var changeNodeSetHeader = workspace.addNode("change");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("get");
|
||||
httpinNode.setUrl("/json-response");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("get");
|
||||
httpInNode.setUrl("/json-response");
|
||||
httpInNode.clickOk();
|
||||
|
||||
templateNode.edit();
|
||||
templateNode.setSyntax("mustache");
|
||||
@ -359,7 +359,7 @@ describe('cookbook', function() {
|
||||
changeNodeSetHeader.ruleSet("headers", "msg", '{"content-type":"application/json"}', "json");
|
||||
changeNodeSetHeader.clickOk();
|
||||
|
||||
httpinNode.connect(templateNode);
|
||||
httpInNode.connect(templateNode);
|
||||
templateNode.connect(changeNodeSetHeader);
|
||||
changeNodeSetHeader.connect(httpResponseNode);
|
||||
// The code for confirmation ends here.
|
||||
@ -413,14 +413,14 @@ describe('cookbook', function() {
|
||||
httpRequetNode.connect(debugNode);
|
||||
|
||||
// The code for confirmation starts from here.
|
||||
var httpinNode = workspace.addNode("httpin", 0, 200);
|
||||
var httpInNode = workspace.addNode("httpIn", 0, 200);
|
||||
var templateNode = workspace.addNode("template");
|
||||
var httpResponseNode = workspace.addNode("httpResponse");
|
||||
|
||||
httpinNode.edit();
|
||||
httpinNode.setMethod("post");
|
||||
httpinNode.setUrl("/set-header");
|
||||
httpinNode.clickOk();
|
||||
httpInNode.edit();
|
||||
httpInNode.setMethod("post");
|
||||
httpInNode.setUrl("/set-header");
|
||||
httpInNode.clickOk();
|
||||
|
||||
templateNode.edit();
|
||||
templateNode.setSyntax("mustache");
|
||||
@ -428,7 +428,7 @@ describe('cookbook', function() {
|
||||
templateNode.setTemplate("{{ payload }}");
|
||||
templateNode.clickOk();
|
||||
|
||||
httpinNode.connect(templateNode);
|
||||
httpInNode.connect(templateNode);
|
||||
templateNode.connect(httpResponseNode);
|
||||
// The code for confirmation ends here.
|
||||
|
||||
|
@ -64,9 +64,9 @@ exports.config = {
|
||||
'goog:chromeOptions': {
|
||||
args: process.env.NODE_RED_NON_HEADLESS
|
||||
// Runs tests with opening a browser.
|
||||
? ['--disable-gpu']
|
||||
? ['--disable-gpu', '--no-sandbox']
|
||||
// Runs tests without opening a browser.
|
||||
: ['--headless', '--disable-gpu', 'window-size=1920,1080']
|
||||
: ['--headless', '--disable-gpu', 'window-size=1920,1080', '--no-sandbox']
|
||||
},
|
||||
}],
|
||||
//
|
||||
|
Loading…
Reference in New Issue
Block a user