You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
3.3 KiB
91 lines
3.3 KiB
/**
|
|
* Copyright (c) 2013 Yahoo! Inc. All rights reserved.
|
|
*/
|
|
|
|
/*global describe, it, beforeEach, before, after */
|
|
|
|
var expect = require('chai').expect;
|
|
|
|
var ConnectionStringParser = require('../../lib/ConnectionStringParser.js');
|
|
|
|
|
|
describe('ConnectionStringParser', function () {
|
|
describe('constructor', function () {
|
|
it('should reject null, undefined and empty string', function () {
|
|
expect(function () { return new ConnectionStringParser(); }).
|
|
to.throw('non-empty string');
|
|
expect(function () { return new ConnectionStringParser(null); }).
|
|
to.throw('non-empty string');
|
|
expect(function () { return new ConnectionStringParser(''); }).
|
|
to.throw('non-empty string');
|
|
});
|
|
|
|
it('should reject invalid chroot path', function () {
|
|
expect(function () {
|
|
return new ConnectionStringParser('localhost:2181/../test/');
|
|
}).to.throw('path');
|
|
});
|
|
|
|
it('should reject empty server list.', function () {
|
|
expect(function () {
|
|
return new ConnectionStringParser('/test');
|
|
}).to.throw('at least one');
|
|
});
|
|
});
|
|
|
|
describe('getConnectionString', function () {
|
|
it('should return the same string passed to constructor', function () {
|
|
var s = 'localhost:2181',
|
|
parser = new ConnectionStringParser(s);
|
|
|
|
expect(parser.getConnectionString()).to.equal(s);
|
|
});
|
|
});
|
|
|
|
describe('getChrootPath', function () {
|
|
it('should return non-empty chroot', function () {
|
|
var parser = new ConnectionStringParser('localhost:2181/test');
|
|
|
|
expect(parser.getChrootPath()).to.equal('/test');
|
|
});
|
|
|
|
it('should return undefined for empty chroot', function () {
|
|
var parser = new ConnectionStringParser('localhost:2181');
|
|
|
|
expect(parser.getChrootPath()).to.be.undefined;
|
|
});
|
|
|
|
it('should work for multiple servers', function () {
|
|
var parser = new ConnectionStringParser(
|
|
'localhost:2181,localhost:2182/test'
|
|
);
|
|
|
|
expect(parser.getChrootPath()).to.equal('/test');
|
|
});
|
|
});
|
|
|
|
describe('getServers', function () {
|
|
it('should return an array of host:port objects', function () {
|
|
var s = 'localhost:2181,localhost:2182',
|
|
parser = new ConnectionStringParser(s),
|
|
servers = parser.getServers();
|
|
|
|
expect(servers).to.be.instanceof(Array).that.have.length(2);
|
|
expect(servers).to.have.deep.property('[0].host', 'localhost');
|
|
expect(servers).to.have.deep.property('[0].port').match(/218[12]/);
|
|
expect(servers).to.have.deep.property('[1].host', 'localhost');
|
|
expect(servers).to.have.deep.property('[1].port').match(/218[12]/);
|
|
|
|
});
|
|
|
|
it('should add default port if port is not provided', function () {
|
|
var s = 'localhost',
|
|
parser = new ConnectionStringParser(s),
|
|
servers = parser.getServers();
|
|
|
|
expect(servers).to.be.instanceof(Array).that.have.length(1);
|
|
expect(servers).to.have.deep.property('[0].host', 'localhost');
|
|
expect(servers).to.have.deep.property('[0].port', 2181);
|
|
});
|
|
});
|
|
});
|
|
|