mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Test to ensure credential definition is defined after index.registerType
This commit is contained in:
		| @@ -195,5 +195,14 @@ module.exports = { | ||||
|      */ | ||||
|     save: function () { | ||||
|         return storage.saveCredentials(credentialCache); | ||||
|     }, | ||||
|      | ||||
|     /** | ||||
|      * Gets the credential definition for the given node type | ||||
|      * @param type the node type | ||||
|      * @return the credential definition | ||||
|      */ | ||||
|     getDefinition: function (type) { | ||||
|         return credentialsDef[type]; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -13,55 +13,49 @@ | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  **/ | ||||
| var should = require("should"); | ||||
|  | ||||
| var should = require("should"); | ||||
| var fs = require('fs-extra'); | ||||
| var path = require('path'); | ||||
| var when = require("when"); | ||||
| var defer = when.defer(); | ||||
| var RedNode = require("../../../red/nodes/Node"); | ||||
| var index = require("../../../red/nodes/index"); | ||||
| var server = require("../../../red/server"); | ||||
|  | ||||
| var testFlows = [{"type":"test","id":"tab1","label":"Sheet 1"}]; | ||||
| var storage = { | ||||
|         getFlows: function() { | ||||
|             var defer = when.defer(); | ||||
|             defer.resolve(testFlows); | ||||
|             return defer.promise; | ||||
|         }, | ||||
|         getCredentials: function() { | ||||
|             return when.promise(function(resolve,reject) { | ||||
|                 resolve({"tab1":{"b":1,"c":2}}); | ||||
|             }); | ||||
|         }, | ||||
|         saveFlows: function(conf) { | ||||
|             var defer = when.defer(); | ||||
|             defer.resolve(); | ||||
|             should.deepEqual(testFlows, conf); | ||||
|             return defer.promise; | ||||
|         }, | ||||
|         saveCredentials: function(creds) { | ||||
|             return when(true); | ||||
|         } | ||||
|  }; | ||||
| var index = require("../../../red/nodes/index"); | ||||
|  | ||||
| describe("red/nodes/index", function() { | ||||
|      | ||||
|    it('nodes are initialised with credentials',function(done) {       | ||||
|          | ||||
|         function TestNode(n) { | ||||
|             index.createNode(this, n); | ||||
|              | ||||
|             this.id = 'tab1'; | ||||
|             this.type = 'test'; | ||||
|             this.name = 'barney'; | ||||
|             var node = this; | ||||
|     var testFlows = [{"type":"test","id":"tab1","label":"Sheet 1"}]; | ||||
|     var storage = { | ||||
|             getFlows: function() { | ||||
|                 var defer = when.defer(); | ||||
|                 defer.resolve(testFlows); | ||||
|                 return defer.promise; | ||||
|             }, | ||||
|             getCredentials: function() { | ||||
|                 return when.promise(function(resolve,reject) { | ||||
|                     resolve({"tab1":{"b":1,"c":2}}); | ||||
|                 }); | ||||
|             }, | ||||
|             saveFlows: function(conf) { | ||||
|                 var defer = when.defer(); | ||||
|                 defer.resolve(); | ||||
|                 should.deepEqual(testFlows, conf); | ||||
|                 return defer.promise; | ||||
|             }, | ||||
|             saveCredentials: function(creds) { | ||||
|                 return when(true); | ||||
|             } | ||||
|      }; | ||||
|  | ||||
|             this.on("log", function() { | ||||
|                 // do nothing | ||||
|             }); | ||||
|         } | ||||
|     function TestNode(n) { | ||||
|         index.createNode(this, n); | ||||
|         var node = this; | ||||
|         this.on("log", function() { | ||||
|             // do nothing | ||||
|         }); | ||||
|     } | ||||
|      | ||||
|    it('nodes are initialised with credentials',function(done) {       | ||||
|  | ||||
|         index.init({}, storage); | ||||
|         index.registerType('test', TestNode);             | ||||
| @@ -110,4 +104,57 @@ describe("red/nodes/index", function() { | ||||
|  | ||||
|     }); | ||||
|     | ||||
|    describe("registerType should register credentials definition", function() { | ||||
|        var http = require('http'); | ||||
|        var express = require('express'); | ||||
|        var sinon = require('sinon'); | ||||
|        var app = express(); | ||||
|        var server = require("../../../red/server"); | ||||
|        var credentials = require("../../../red/nodes/credentials"); | ||||
|        var localfilesystem = require("../../../red/storage/localfilesystem"); | ||||
|        var RED = require("../../../red/red.js"); | ||||
|         | ||||
|        var userDir = path.join(__dirname,".testUserHome"); | ||||
|        before(function(done) { | ||||
|            fs.remove(userDir,function(err) { | ||||
|                fs.mkdir(userDir,function() { | ||||
|                    sinon.stub(index, 'load', function() { | ||||
|                        return when.promise(function(resolve,reject){ | ||||
|                            resolve([]); | ||||
|                        }); | ||||
|                    }); | ||||
|                    sinon.stub(localfilesystem, 'getCredentials', function() { | ||||
|                         return when.promise(function(resolve,reject) { | ||||
|                                resolve({"tab1":{"b":1,"c":2}}); | ||||
|                         }); | ||||
|                    }) ; | ||||
|                    RED.init(http.createServer(function(req,res){app(req,res)}), | ||||
|                             {userDir: userDir}); | ||||
|                    server.start().then(function () { | ||||
|                        done();  | ||||
|                     }); | ||||
|                }); | ||||
|            }); | ||||
|        }); | ||||
|  | ||||
|        after(function(done) { | ||||
|            fs.remove(userDir,done); | ||||
|            server.stop(); | ||||
|            index.load.restore(); | ||||
|            localfilesystem.getCredentials.restore(); | ||||
|        }); | ||||
|         | ||||
|        it(': definition defined',function(done) {       | ||||
|            index.registerType('test', TestNode, { | ||||
|                credentials: { | ||||
|                    foo: {type:"test"} | ||||
|                }    | ||||
|            });  | ||||
|            var testnode = new TestNode({id:'tab1',type:'test',name:'barney'});     | ||||
|            credentials.getDefinition("test").should.have.property('foo'); | ||||
|            done(); | ||||
|        }); | ||||
|  | ||||
|    }); | ||||
|     | ||||
| }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user