mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
added spec tests for the payload as stdin for the exec node
This commit is contained in:
parent
ad230c99b7
commit
bf6febf889
@ -970,4 +970,248 @@ describe('exec node', function() {
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('calling exec with addpayTo', function() {
|
||||
it('handle buffer payloads', function(done) {
|
||||
var flow = [{
|
||||
id:"n1",
|
||||
type:"exec",
|
||||
wires:[["n2"],["n3"],["n4"]],
|
||||
command: undefined,
|
||||
addpay: "payload",
|
||||
addpayTo: "stdin",
|
||||
append:"",
|
||||
useSpawn:"false",
|
||||
oldrc:"false"
|
||||
},{
|
||||
id:"n2",
|
||||
type:"helper"
|
||||
},{
|
||||
id:"n3",
|
||||
type:"helper"
|
||||
},{
|
||||
id:"n4",
|
||||
type:"helper"
|
||||
}];
|
||||
|
||||
var expected;
|
||||
if (osType === "Windows_NT") {
|
||||
flow[0].command = "cmd /C cat"
|
||||
expected = "this payload goes to stdin\r\n";
|
||||
} else {
|
||||
flow[0].command = "cat"
|
||||
expected = "this payload goes to stdin\n";
|
||||
}
|
||||
|
||||
helper.load(execNode, flow, function() {
|
||||
var n1 = helper.getNode("n1");
|
||||
var n2 = helper.getNode("n2");
|
||||
var n3 = helper.getNode("n3");
|
||||
var n4 = helper.getNode("n4");
|
||||
var received = 0;
|
||||
var messages = [null,null];
|
||||
|
||||
var completeTest = function() {
|
||||
received = received + 1;
|
||||
if (received < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
var msg = messages[0];
|
||||
msg.should.have.property("payload");
|
||||
Buffer.isBuffer(msg.payload).should.be.true();
|
||||
|
||||
msg.payload[0].should.be.eql(0x01)
|
||||
msg.payload[1].should.be.eql(0x02)
|
||||
msg.payload[2].should.be.eql(0x03)
|
||||
msg.payload[3].should.be.eql(0x88)
|
||||
|
||||
msg = messages[1];
|
||||
msg.should.have.property("payload");
|
||||
msg.payload.should.have.property("code",0);
|
||||
|
||||
done();
|
||||
}
|
||||
catch(err) {
|
||||
done(err);
|
||||
}
|
||||
};
|
||||
n2.on("input", function(msg) {
|
||||
messages[0] = msg;
|
||||
completeTest();
|
||||
});
|
||||
n3.on("input", function(msg) {
|
||||
// stderr wire should not receive msg
|
||||
expect("should not be").to.eql("called")
|
||||
});
|
||||
n4.on("input", function(msg) {
|
||||
messages[1] = msg;
|
||||
completeTest();
|
||||
});
|
||||
|
||||
n1.receive({payload:Buffer.from([0x01,0x02,0x03,0x88])});
|
||||
})
|
||||
})
|
||||
|
||||
it('handle string payloads', function(done) {
|
||||
var flow = [{
|
||||
id:"n1",
|
||||
type:"exec",
|
||||
wires:[["n2"],["n3"],["n4"]],
|
||||
command: undefined,
|
||||
addpay: "payload",
|
||||
addpayTo: "stdin",
|
||||
append:"",
|
||||
useSpawn:"false",
|
||||
oldrc:"false"
|
||||
},{
|
||||
id:"n2",
|
||||
type:"helper"
|
||||
},{
|
||||
id:"n3",
|
||||
type:"helper"
|
||||
},{
|
||||
id:"n4",
|
||||
type:"helper"
|
||||
}];
|
||||
|
||||
var expected;
|
||||
if (osType === "Windows_NT") {
|
||||
flow[0].command = "cmd /C cat"
|
||||
expected = "this payload goes to stdin\r\n";
|
||||
} else {
|
||||
flow[0].command = "cat"
|
||||
expected = "this payload goes to stdin\n";
|
||||
}
|
||||
|
||||
helper.load(execNode, flow, function() {
|
||||
var n1 = helper.getNode("n1");
|
||||
var n2 = helper.getNode("n2");
|
||||
var n3 = helper.getNode("n3");
|
||||
var n4 = helper.getNode("n4");
|
||||
var received = 0;
|
||||
var messages = [null,null];
|
||||
|
||||
var completeTest = function() {
|
||||
received = received + 1;
|
||||
if (received < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
var msg = messages[0];
|
||||
msg.should.have.property("payload");
|
||||
msg.payload.should.be.a.String();
|
||||
msg.payload.should.equal("this payload goes to stdin");
|
||||
|
||||
msg = messages[1];
|
||||
msg.should.have.property("payload");
|
||||
msg.payload.should.have.property("code",0);
|
||||
|
||||
done();
|
||||
}
|
||||
catch(err) {
|
||||
done(err);
|
||||
}
|
||||
};
|
||||
n2.on("input", function(msg) {
|
||||
messages[0] = msg;
|
||||
completeTest();
|
||||
});
|
||||
n3.on("input", function(msg) {
|
||||
// stderr wire should not receive msg
|
||||
expect("should not be").to.eql("called")
|
||||
});
|
||||
n4.on("input", function(msg) {
|
||||
messages[1] = msg;
|
||||
completeTest();
|
||||
});
|
||||
|
||||
n1.receive({payload:"this payload goes to stdin"});
|
||||
})
|
||||
|
||||
|
||||
})
|
||||
|
||||
it('handle array as type for payload', function(done) {
|
||||
var flow = [{
|
||||
id:"n1",
|
||||
type:"exec",
|
||||
wires:[["n2"],["n3"],["n4"]],
|
||||
command: undefined,
|
||||
addpay: "payload",
|
||||
addpayTo: "stdin",
|
||||
append:"",
|
||||
useSpawn:"false",
|
||||
oldrc:"false"
|
||||
},{
|
||||
id:"n2",
|
||||
type:"helper"
|
||||
},{
|
||||
id:"n3",
|
||||
type:"helper"
|
||||
},{
|
||||
id:"n4",
|
||||
type:"helper"
|
||||
}];
|
||||
|
||||
var expected;
|
||||
if (osType === "Windows_NT") {
|
||||
flow[0].command = "cmd /C cat"
|
||||
expected = "this payload goes to stdin\r\n";
|
||||
} else {
|
||||
flow[0].command = "cat"
|
||||
expected = "this payload goes to stdin\n";
|
||||
}
|
||||
|
||||
helper.load(execNode, flow, function() {
|
||||
var n1 = helper.getNode("n1");
|
||||
var n2 = helper.getNode("n2");
|
||||
var n3 = helper.getNode("n3");
|
||||
var n4 = helper.getNode("n4");
|
||||
var received = 0;
|
||||
var messages = [null,null];
|
||||
|
||||
var completeTest = function() {
|
||||
received = received + 1;
|
||||
if (received < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
var msg = messages[0];
|
||||
msg.should.have.property("payload");
|
||||
msg.payload.should.be.a.String();
|
||||
msg.payload.should.equal('[1,2,3,136]');
|
||||
|
||||
msg = messages[1];
|
||||
msg.should.have.property("payload");
|
||||
msg.payload.should.have.property("code",0);
|
||||
|
||||
done();
|
||||
}
|
||||
catch(err) {
|
||||
done(err);
|
||||
}
|
||||
};
|
||||
n2.on("input", function(msg) {
|
||||
messages[0] = msg;
|
||||
completeTest();
|
||||
});
|
||||
n3.on("input", function(msg) {
|
||||
// stderr wire should not receive msg
|
||||
expect("should not be").to.eql("called")
|
||||
});
|
||||
n4.on("input", function(msg) {
|
||||
messages[1] = msg;
|
||||
completeTest();
|
||||
});
|
||||
|
||||
n1.receive({payload:[0x01,0x02,0x03,0x88]});
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user