From 74428c0189d275ae7ab96217f7d62805c40d272e Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Tue, 7 Aug 2018 12:02:02 +0900 Subject: [PATCH] Fix unnecessary configuration node --- lib/nodegen.js | 8 +- templates/swagger/node.html.mustache | 27 +-- templates/swagger/node.js.mustache | 6 + templates/swagger/test/node_spec.js.mustache | 38 ++-- .../node_spec.js | 163 ++++++++---------- 5 files changed, 122 insertions(+), 120 deletions(-) diff --git a/lib/nodegen.js b/lib/nodegen.js index affc53a..4d8fb80 100644 --- a/lib/nodegen.js +++ b/lib/nodegen.js @@ -331,6 +331,7 @@ function swagger2node(data, options) { return params.split(',').filter(p => p).some(p => p !== 'body') ? render(content) : ''; } }; + var hasServiceParams = swagger.host === undefined || swagger.security !== undefined; // Create node.js var nodeSourceCode = CodeGen.getCustomCode({ @@ -344,7 +345,8 @@ function swagger2node(data, options) { mustache: { nodeName: data.name, isBodyParam: isBodyParam, - isNotBodyParam: isNotBodyParam + isNotBodyParam: isNotBodyParam, + hasServiceParams: hasServiceParams }, lint: false, beautify: false @@ -367,7 +369,8 @@ function swagger2node(data, options) { nodeName: data.name, category: data.category || 'function', isNotBodyParam: isNotBodyParam, - hasOptionalParams: hasOptionalParams + hasOptionalParams: hasOptionalParams, + hasServiceParams: hasServiceParams }, lint: false, beautify: false @@ -407,6 +410,7 @@ function swagger2node(data, options) { mustache: { nodeName: data.name, projectName: data.module, + hasServiceParams: hasServiceParams }, lint: false, beautify: false diff --git a/templates/swagger/node.html.mustache b/templates/swagger/node.html.mustache index 43aa19b..1cf3d42 100644 --- a/templates/swagger/node.html.mustache +++ b/templates/swagger/node.html.mustache @@ -1,15 +1,17 @@ - +{{#hasServiceParams}} +{{/hasServiceParams}} diff --git a/templates/swagger/node.js.mustache b/templates/swagger/node.js.mustache index bdfff21..78ce2cb 100644 --- a/templates/swagger/node.js.mustache +++ b/templates/swagger/node.js.mustache @@ -4,7 +4,9 @@ var lib = require('./lib.js'); module.exports = function (RED) { function {{&className}}Node(config) { RED.nodes.createNode(this, config); + {{#hasServiceParams}} this.service = RED.nodes.getNode(config.service); + {{/hasServiceParams}} this.method = config.method; {{#methods}} @@ -97,8 +99,10 @@ module.exports = function (RED) { } }); } + RED.nodes.registerType("{{&nodeName}}", {{&className}}Node); + {{#hasServiceParams}} function {{&className}}ServiceNode(n) { RED.nodes.createNode(this, n); {{^domain}} @@ -122,6 +126,7 @@ module.exports = function (RED) { {{/isSecureBasic}} {{/isSecure}} } + RED.nodes.registerType("{{&nodeName}}-service", {{&className}}ServiceNode, { credentials: { {{#isSecure}} @@ -139,4 +144,5 @@ module.exports = function (RED) { temp: { type: "text" } } }); + {{/hasServiceParams}} }; diff --git a/templates/swagger/test/node_spec.js.mustache b/templates/swagger/test/node_spec.js.mustache index 20dd70c..64ea10f 100644 --- a/templates/swagger/test/node_spec.js.mustache +++ b/templates/swagger/test/node_spec.js.mustache @@ -1,6 +1,6 @@ -var should = require("should"); -var helper = require("node-red-node-test-helper"); -var node = require("../node.js"); +var should = require('should'); +var helper = require('node-red-node-test-helper'); +var node = require('../node.js'); helper.init(require.resolve('node-red')); @@ -19,9 +19,9 @@ describe('{{&nodeName}} node', function () { }); it('should be loaded', function (done) { - var flow = [{ id: "n1", type: "{{&nodeName}}", name: "{{&nodeName}}" }]; + var flow = [{ id: 'n1', type: '{{&nodeName}}', name: '{{&nodeName}}' }]; helper.load(node, flow, function () { - var n1 = helper.getNode("n1"); + var n1 = helper.getNode('n1'); n1.should.have.property('name', '{{&nodeName}}'); done(); }); @@ -30,19 +30,26 @@ describe('{{&nodeName}} node', function () { {{#methods}} it('should handle {{&methodName}}()', function (done) { var flow = [ - { id: "n1", type: "{{&nodeName}}", name: "{{&nodeName}}", wires: [["n2"]], - method: "{{&methodName}}", + { id: 'n1', type: '{{&nodeName}}', name: '{{&nodeName}}', + method: '{{&methodName}}', {{#parameters}} - {{&methodName}}_{{&camelCaseName}}: "", // (1) define node properties + {{&methodName}}_{{&camelCaseName}}: '', // (1) define node properties {{/parameters}} - service: "n3" }, - { id: "n2", type: "{{&nodeName}}-service" }, - { id: "n3", type: "helper" } + {{#hasServiceParams}} + wires: [['n3']], + service: 'n2' }, + { id: 'n2', type: '{{&nodeName}}-service', host: 'http://' }, // (4) define host name + {{/hasServiceParams}} + {{^hasServiceParams}} + wires: [['n3']] + }, + {{/hasServiceParams}} + { id: 'n3', type: 'helper' } ]; helper.load(node, flow, function () { - var n3 = helper.getNode("n3"); - var n1 = helper.getNode("n1"); - n3.on("input", function (msg) { + var n3 = helper.getNode('n3'); + var n1 = helper.getNode('n1'); + n3.on('input', function (msg) { try { msg.should.have.property('payload', ''); // (3) define output message done(); @@ -50,9 +57,8 @@ describe('{{&nodeName}} node', function () { done(e); } }); - n1.receive({ payload: "" }); // (2) define input message + n1.receive({ payload: '' }); // (2) define input message }); }); {{/methods}} }); - diff --git a/test/nodegen/node-red-contrib-swagger-petstore/node_spec.js b/test/nodegen/node-red-contrib-swagger-petstore/node_spec.js index 2c5445a..645e9b9 100644 --- a/test/nodegen/node-red-contrib-swagger-petstore/node_spec.js +++ b/test/nodegen/node-red-contrib-swagger-petstore/node_spec.js @@ -41,13 +41,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle addPet()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "addPet"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "addPet"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.eql({ "id": 4513, @@ -95,13 +94,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle updatePet()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "updatePet"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "updatePet"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.eql({ "id": 4513, @@ -149,13 +147,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle findPetsByStatus()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "findPetsByStatus", findPetsByStatus_status: "available"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "findPetsByStatus", findPetsByStatus_status: "available"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.containEql({ "id": 4513, @@ -184,13 +181,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle getPetById()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "getPetById", getPetById_petId: "4513"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "getPetById", getPetById_petId: "4513"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.containEql({ "id": 4513, @@ -219,13 +215,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle updatePetWithForm()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "updatePetWithForm", updatePetWithForm_petId: "4513", updatePetWithForm_name: "pending doggie", updatePetWithForm_status: "pending"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "updatePetWithForm", updatePetWithForm_petId: "4513", updatePetWithForm_name: "pending doggie", updatePetWithForm_status: "pending"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.should.have.property('payload', 'foo'); msg.should.have.property('topic', 'bar'); @@ -238,13 +233,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle deletePet()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "deletePet", deletePet_petId: "4513"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "deletePet", deletePet_petId: "4513"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.should.have.property('payload', 'foo'); msg.should.have.property('topic', 'bar'); @@ -257,13 +251,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle getInventory()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "getInventory"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "getInventory"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.have.property('available'); done(); @@ -275,13 +268,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle placeOrder()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "placeOrder"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "placeOrder"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.eql({ "id": 4147, @@ -309,13 +301,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle getOrderById()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "getOrderById", getOrderById_orderId: "4147"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "getOrderById", getOrderById_orderId: "4147"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.eql({ "id": 4147, @@ -334,13 +325,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle deleteOrder()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "deleteOrder", deleteOrder_orderId: "4147"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "deleteOrder", deleteOrder_orderId: "4147"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.should.have.property('payload', 'foo'); msg.should.have.property('topic', 'bar'); @@ -353,13 +343,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle createUser()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "createUser"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "createUser"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.eql({ "id": 8110, @@ -391,13 +380,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle createUsersWithArrayInput()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "createUsersWithArrayInput"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "createUsersWithArrayInput"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.eql([ { @@ -433,13 +421,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle createUsersWithListInput()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "createUsersWithListInput"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "createUsersWithListInput"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.eql([ { @@ -475,13 +462,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle loginUser()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "loginUser", loginUser_username: "My user name", loginUser_password: "My password"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "loginUser", loginUser_username: "My user name", loginUser_password: "My password"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.startWith('logged in user session:'); done(); @@ -493,13 +479,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle logoutUser()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "logoutUser"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "logoutUser"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.should.have.property('payload', 'foo'); msg.should.have.property('topic', 'bar'); @@ -512,13 +497,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle getUserByName()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "getUserByName", getUserByName_username: "My user name"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "getUserByName", getUserByName_username: "My user name"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.eql({ "id": 8808, @@ -539,13 +523,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle updateUser()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "updateUser", updateUser_username: "My user name"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "updateUser", updateUser_username: "My user name"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.payload.should.eql({ "id": 8808, @@ -577,13 +560,12 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); it('should handle deleteUser()', function (done) { - var flow = [{id: "n1", type: "swagger-petstore", wires: [["n3"]], service: "n2", method: "deleteUser", deleteUser_username: "My user name2"}, - {id: "n2", type: "swagger-petstore-service"}, - {id: "n3", type: "helper"}]; + var flow = [{id: "n1", type: "swagger-petstore", wires: [["n2"]], method: "deleteUser", deleteUser_username: "My user name2"}, + {id: "n2", type: "helper"}]; helper.load(swaggerNode, flow, function () { var n1 = helper.getNode('n1'); - var n3 = helper.getNode('n3'); - n3.on('input', function (msg) { + var n2 = helper.getNode('n2'); + n2.on('input', function (msg) { try { msg.should.have.property('payload', 'foo'); msg.should.have.property('topic', 'bar'); @@ -596,4 +578,3 @@ describe('node-red-contrib-swagger-petstore', function () { }); }); }); -