
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
node-red-contrib-mock-cli
Advanced tools
This is a Node.js module to allow running a single Node-RED node from command-line, and pipe one to another, using a similar flow than what would be done in the Node-RED graphical interface.
Originally made in December 2019 by Alexandre Alapetite at the Alexandra Institute for the SynchroniCity European project.
License: MIT
See examples of use in node-red-contrib-json-multi-schema, node-red-contrib-chunks-to-lines, node-red-http-basic-auth.
Add an entry file index.js (or another name) to your Node-RED node, next to a package.json that contains a structure like { "node-red": {"node-type": "node-type.js"} }:
const RED = require('node-red-contrib-mock-cli');
const noderedNode = RED.load(require.main);
if (noderedNode) {
//noderedNode.* //Access to the Node-RED node instance
RED.run();
} else {
console.error('Error loading Node-RED node!');
}
One can then invoke the node from command-line, passing the node type first, and then some optional node properties in JSON format:
node ./index.js node-type --firstProperty='{"Some":"JSON"}' --secondProperty='"Some text"' --thirdProperty='123'
Properties of configuration nodes can be specified using a dot such as:
node ./index.js node-type --server.url='"https://example.net/"' --server.username='"Alice"'
Replace test.js by the name of your entry file (e.g. index.js), and test-node by the name of the type of your node.
printf '{"payload":3} \n {"payload":7}' | node ./test.js test-node --multiplyBy='5'
Outputs:
{"payload":15}
{"payload":35}
The command expects JSON messages with a Node-RED structure {"payload":"Example"} from standard input, one line per message.
jq may be used to break down and format a standard payload into a Node-RED payload:
For instance if the input is a list of observations wrapped into a JSON array:
jq -c '.[] | {"payload":.}'
The command outputs JSON messages with a Node-RED structure to standard output, one line per message.
See some examples of inputs and outputs in node-red-contrib-json-multi-schema.
Only the Node-RED JSON payload is emitted on standard-output (STDOUT), while all other messages and errors are on the standard-error (STDERR).
It is possible to catch the node events { debug, error, log } to override the default behaviour (which is to write to standard-error):
noderedNode.on('debug', msg => console.warn('Caught event: ' + msg));
This module does not have the ambition of exposing the full Node-RED functionality, but instead focuses on simple cases, providing a tiny and efficient layer without any dependency. So for more advanced unit testing, and if requiring the full Node-RED is fine, then check the official node-red-node-test-helper instead of this module.
FAQs
Allows running Node-RED modules from command-line.
The npm package node-red-contrib-mock-cli receives a total of 14 weekly downloads. As such, node-red-contrib-mock-cli popularity was classified as not popular.
We found that node-red-contrib-mock-cli demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.