dl
Version:
DreamLab Libs
144 lines (119 loc) • 5.26 kB
JavaScript
var rewire = require('rewire');
var ZooKeeper = require('zookeeper');
var core = require('core');
var CredentialsProvider = core.credentials.CredentialsProvider;
var Event = core.event.Event;
describe('ZooKeeperDataProvider', function () {
var rewiredZooKeeperDataProvider;
var instance;
var ZooKeeperMock;
var credentials;
var data;
var children;
beforeEach(function () {
rewiredZooKeeperDataProvider = rewire('../../lib/dataprovider/ZooKeeperDataProvider.js');
data = '{}';
children = [];
ZooKeeperMock = jasmine.createSpy('ZooKeeperSpy');
ZooKeeperMock.on = jasmine.createSpy('ZooKeeper.on');
ZooKeeperMock.setLogger = jasmine.createSpy('ZooKeeper.setLogger');
ZooKeeperMock.init = jasmine.createSpy('ZooKeeper.init');
ZooKeeperMock.get = jasmine.createSpy('ZooKeeper.get');
ZooKeeperMock.ZOO_CONNECTED_STATE = ZooKeeper.ZOO_CONNECTED_STATE;
ZooKeeperMock.ZNOTHING = ZooKeeper.ZNOTHING;
ZooKeeperMock.ZOK = ZooKeeper.ZOK;
ZooKeeperMock.a_get = jasmine.createSpy('ZooKeeper.a_get').andCallFake(function (key, watch, callback) {
return callback(ZooKeeper.ZOK, null, data);
});
ZooKeeperMock.a_get_children2 = jasmine.createSpy('ZooKeeper.a_get_children2').andCallFake(function (key, watch, callback) {
return callback(ZooKeeper.ZOK, null, children);
});
ZooKeeperMock.andReturn(ZooKeeperMock);
credentials = {
hosts: [{
host: 'local',
port: 123
}]
};
var OpalCredentialsProviderMock = jasmine.createSpy('OpalCredentialsProvider', ['getInstance', 'get']);
OpalCredentialsProviderMock.get= jasmine.createSpy();
OpalCredentialsProviderMock.addEventListener = jasmine.createSpy().andCallFake(function (eventName, callback, context) {
if (eventName === CredentialsProvider.Event.LOAD) {
return callback.call(context, new Event(eventName, credentials));
}
});
OpalCredentialsProviderMock.getInstance = jasmine.createSpy().andReturn(OpalCredentialsProviderMock);
rewiredZooKeeperDataProvider.__set__('ZooKeeper', ZooKeeperMock);
rewiredZooKeeperDataProvider.__set__('OpalCredentialsProvider', OpalCredentialsProviderMock);
rewiredZooKeeperDataProvider.__set__('setTimeout', function () {});
instance = new rewiredZooKeeperDataProvider.ZooKeeperDataProvider({});
});
describe('get', function () {
it('should returns error when incorrect path given', function (done) {
ZooKeeperMock.state = ZooKeeper.ZOO_CONNECTED_STATE;
instance.init();
instance.get('/config//', function (err) {
expect(err).toEqual(ZooKeeper.ZNOTHING);
return done();
});
});
it('should return data', function (done) {
ZooKeeperMock.state = ZooKeeper.ZOO_CONNECTED_STATE;
instance.init();
instance.get('/config', function (err, data) {
expect(err).toBeFalsy();
expect(data).toBe(data);
return done();
});
});
it('should return children', function (done) {
ZooKeeperMock.state = ZooKeeper.ZOO_CONNECTED_STATE;
instance.init();
instance.get('/config/', function (err, data) {
expect(err).toBeFalsy();
expect(data).toBe(children);
return done();
});
});
});
describe('set', function () {
it('should returns error when incorrect path given', function (done) {
ZooKeeperMock.state = ZooKeeper.ZOO_CONNECTED_STATE;
instance.init();
instance.set('/config/[object Object]', '{}', {}, function (err) {
expect(err).toEqual(ZooKeeper.ZNOTHING);
return done();
});
});
});
describe('exists', function () {
it('should returns error when incorrect path given', function (done) {
ZooKeeperMock.state = ZooKeeper.ZOO_CONNECTED_STATE;
instance.init();
instance.exists('/config/[object Object]', function (err) {
expect(err).toEqual(ZooKeeper.ZNOTHING);
return done();
});
});
});
describe('watch', function () {
it('should returns error when incorrect path given', function (done) {
ZooKeeperMock.state = ZooKeeper.ZOO_CONNECTED_STATE;
instance.init();
instance.watch('/config/[object Object]', function (err) {
expect(err).toEqual(ZooKeeper.ZNOTHING);
return done();
});
});
});
describe('sync', function () {
it('should returns error when incorrect path given', function (done) {
ZooKeeperMock.state = ZooKeeper.ZOO_CONNECTED_STATE;
instance.init();
instance.sync('/config/[object Object]', function (err) {
expect(err).toEqual(ZooKeeper.ZNOTHING);
return done();
});
});
});
});