UNPKG

dl

Version:

DreamLab Libs

144 lines (119 loc) 5.26 kB
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(); }); }); }); });