2014-08-28 15:25:41 +02:00
|
|
|
/**
|
2015-06-02 16:54:37 +02:00
|
|
|
* Copyright 2014, 2015 IBM Corp.
|
2014-08-28 15:25:41 +02:00
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
**/
|
|
|
|
var should = require("should");
|
2015-11-12 08:56:23 +01:00
|
|
|
var util = require("../../../red/runtime/util");
|
2014-08-28 15:25:41 +02:00
|
|
|
|
2014-09-03 14:18:26 +02:00
|
|
|
describe("red/util", function() {
|
2015-06-02 16:54:37 +02:00
|
|
|
describe('generateId', function() {
|
|
|
|
it('generates an id', function() {
|
|
|
|
var id = util.generateId();
|
|
|
|
var id2 = util.generateId();
|
|
|
|
id.should.not.eql(id2);
|
|
|
|
});
|
|
|
|
});
|
2015-03-06 15:14:47 +01:00
|
|
|
describe('compareObjects', function() {
|
|
|
|
it('unequal arrays are unequal', function() {
|
|
|
|
util.compareObjects(["a"],"a").should.equal(false);
|
|
|
|
});
|
|
|
|
it('unequal key lengths are unequal', function() {
|
|
|
|
util.compareObjects({"a":1},{"a":1,"b":1}).should.equal(false);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2014-08-28 15:25:41 +02:00
|
|
|
describe('ensureString', function() {
|
|
|
|
it('strings are preserved', function() {
|
2014-09-03 14:18:26 +02:00
|
|
|
util.ensureString('string').should.equal('string');
|
2014-08-28 15:25:41 +02:00
|
|
|
});
|
|
|
|
it('Buffer is converted', function() {
|
2014-09-03 14:18:26 +02:00
|
|
|
var s = util.ensureString(new Buffer('foo'));
|
2014-08-28 15:25:41 +02:00
|
|
|
s.should.equal('foo');
|
|
|
|
(typeof s).should.equal('string');
|
|
|
|
});
|
|
|
|
it('Object is converted to JSON', function() {
|
2014-09-03 14:18:26 +02:00
|
|
|
var s = util.ensureString({foo: "bar"});
|
2014-08-28 15:25:41 +02:00
|
|
|
(typeof s).should.equal('string');
|
|
|
|
should.deepEqual(JSON.parse(s), {foo:"bar"});
|
|
|
|
});
|
|
|
|
it('stringifies other things', function() {
|
2014-09-03 14:18:26 +02:00
|
|
|
var s = util.ensureString(123);
|
2014-08-28 15:25:41 +02:00
|
|
|
(typeof s).should.equal('string');
|
|
|
|
s.should.equal('123');
|
|
|
|
});
|
|
|
|
});
|
2014-09-10 13:46:56 +02:00
|
|
|
|
|
|
|
describe('ensureBuffer', function() {
|
|
|
|
it('Buffers are preserved', function() {
|
|
|
|
var b = new Buffer('');
|
|
|
|
util.ensureBuffer(b).should.equal(b);
|
|
|
|
});
|
|
|
|
it('string is converted', function() {
|
|
|
|
var b = util.ensureBuffer('foo');
|
|
|
|
var expected = new Buffer('foo');
|
|
|
|
for (var i = 0; i < expected.length; i++) {
|
|
|
|
b[i].should.equal(expected[i]);
|
|
|
|
}
|
|
|
|
Buffer.isBuffer(b).should.equal(true);
|
|
|
|
});
|
|
|
|
it('Object is converted to JSON', function() {
|
|
|
|
var obj = {foo: "bar"}
|
|
|
|
var b = util.ensureBuffer(obj);
|
|
|
|
Buffer.isBuffer(b).should.equal(true);
|
|
|
|
should.deepEqual(JSON.parse(b), obj);
|
|
|
|
});
|
|
|
|
it('stringifies other things', function() {
|
|
|
|
var b = util.ensureBuffer(123);
|
|
|
|
Buffer.isBuffer(b).should.equal(true);
|
|
|
|
var expected = new Buffer('123');
|
|
|
|
for (var i = 0; i < expected.length; i++) {
|
|
|
|
b[i].should.equal(expected[i]);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
2015-03-06 15:14:47 +01:00
|
|
|
|
2014-11-06 12:39:30 +01:00
|
|
|
describe('cloneMessage', function() {
|
|
|
|
it('clones a simple message', function() {
|
|
|
|
var msg = {string:"hi",array:[1,2,3],object:{a:1,subobject:{b:2}}};
|
2015-03-06 15:14:47 +01:00
|
|
|
|
2014-11-06 12:39:30 +01:00
|
|
|
var cloned = util.cloneMessage(msg);
|
2015-03-06 15:14:47 +01:00
|
|
|
|
2014-11-06 12:39:30 +01:00
|
|
|
cloned.should.eql(msg);
|
2015-03-06 15:14:47 +01:00
|
|
|
|
2014-11-06 12:39:30 +01:00
|
|
|
cloned.should.not.equal(msg);
|
|
|
|
cloned.array.should.not.equal(msg.string);
|
|
|
|
cloned.object.should.not.equal(msg.object);
|
|
|
|
cloned.object.subobject.should.not.equal(msg.object.subobject);
|
2015-03-06 15:14:47 +01:00
|
|
|
|
2014-11-06 12:39:30 +01:00
|
|
|
cloned.should.not.have.property("req");
|
|
|
|
cloned.should.not.have.property("res");
|
|
|
|
});
|
|
|
|
it('does not clone http req/res properties', function() {
|
|
|
|
var msg = {req:{a:1},res:{b:2}};
|
2015-03-06 15:14:47 +01:00
|
|
|
|
2014-11-06 12:39:30 +01:00
|
|
|
var cloned = util.cloneMessage(msg);
|
2015-03-06 15:14:47 +01:00
|
|
|
|
2014-11-06 12:39:30 +01:00
|
|
|
cloned.should.eql(msg);
|
|
|
|
cloned.should.not.equal(msg);
|
2015-03-06 15:14:47 +01:00
|
|
|
|
2014-11-06 12:39:30 +01:00
|
|
|
cloned.req.should.equal(msg.req);
|
|
|
|
cloned.res.should.equal(msg.res);
|
|
|
|
});
|
2015-03-06 15:14:47 +01:00
|
|
|
|
2014-11-06 12:39:30 +01:00
|
|
|
});
|
2014-08-28 15:25:41 +02:00
|
|
|
});
|