UNPKG

@spalger/kibana

Version:

Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic

144 lines (126 loc) 5.28 kB
var _ = require('lodash'); var Promise = require('bluebird'); var sinon = require('sinon'); var expect = require('expect.js'); var upgradeConfig = require('../upgrade_config'); describe('plugins/elasticsearch', function () { describe('lib/upgrade_config', function () { var get; var server; var client; var config; var upgrade; beforeEach(function () { get = sinon.stub(); get.withArgs('kibana.index').returns('.my-kibana'); get.withArgs('pkg.version').returns('4.0.1'); get.withArgs('pkg.buildNum').returns(Math.random()); client = { create: sinon.stub() }; server = { log: sinon.stub(), config: function () { return { get: get }; }, plugins: { elasticsearch: { client: client } } }; upgrade = upgradeConfig(server); }); describe('nothing is found', function () { var response = { hits: { hits:[] } }; beforeEach(function () { client.create.returns(Promise.resolve()); }); describe('production', function () { beforeEach(function () { get.withArgs('env.name').returns('production'); get.withArgs('env.prod').returns(true); get.withArgs('env.dev').returns(false); }); it('should resolve buildNum to pkg.buildNum config', function () { return upgrade(response).then(function (resp) { sinon.assert.calledOnce(client.create); var params = client.create.args[0][0]; expect(params.body).to.have.property('buildNum', get('pkg.buildNum')); }); }); it('should resolve version to pkg.version config', function () { return upgrade(response).then(function (resp) { var params = client.create.args[0][0]; expect(params).to.have.property('id', get('pkg.version')); }); }); }); describe('development', function () { beforeEach(function () { get.withArgs('env.name').returns('development'); get.withArgs('env.prod').returns(false); get.withArgs('env.dev').returns(true); }); it('should resolve buildNum to pkg.buildNum config', function () { return upgrade(response).then(function (resp) { var params = client.create.args[0][0]; expect(params.body).to.have.property('buildNum', get('pkg.buildNum')); }); }); it('should resolve version to pkg.version config', function () { return upgrade(response).then(function (resp) { var params = client.create.args[0][0]; expect(params).to.have.property('id', get('pkg.version')); }); }); }); }); it('should resolve with undefined if the current version is found', function () { var response = { hits: { hits: [ { _id: '4.0.1' } ] } }; return upgrade(response).then(function (resp) { expect(resp).to.be(undefined); }); }); it('should resolve with undefined if the nothing is upgradeable', function () { var response = { hits: { hits: [ { _id: '4.0.1-beta1' }, { _id: '4.0.0-snapshot1' } ] } }; return upgrade(response).then(function (resp) { expect(resp).to.be(undefined); }); }); it('should update the build number on the new config', function () { get.withArgs('pkg.buildNum').returns(5801); client.create.returns(Promise.resolve()); var response = { hits: { hits: [ { _id: '4.0.0', _source: { buildNum: 1 } } ] } }; return upgrade(response).then(function (resp) { sinon.assert.calledOnce(client.create); var params = client.create.args[0][0]; expect(params).to.have.property('body'); expect(params.body).to.have.property('buildNum', 5801); expect(params).to.have.property('index', '.my-kibana'); expect(params).to.have.property('type', 'config'); expect(params).to.have.property('id', '4.0.1'); }); }); it('should log a message for upgrades', function () { get.withArgs('pkg.buildNum').returns(5801); client.create.returns(Promise.resolve()); var response = { hits: { hits: [ { _id: '4.0.0', _source: { buildNum: 1 } } ] } }; return upgrade(response).then(function (resp) { sinon.assert.calledOnce(server.log); expect(server.log.args[0][0]).to.eql(['plugin', 'elasticsearch']); var msg = server.log.args[0][1]; expect(msg).to.have.property('prevVersion', '4.0.0'); expect(msg).to.have.property('newVersion', '4.0.1'); expect(msg.tmpl).to.contain('Upgrade'); }); }); it('should copy attributes from old config', function () { get.withArgs('pkg.buildNum').returns(5801); client.create.returns(Promise.resolve()); var response = { hits: { hits: [ { _id: '4.0.0', _source: { buildNum: 1, defaultIndex: 'logstash-*' } } ] } }; return upgrade(response).then(function (resp) { sinon.assert.calledOnce(client.create); var params = client.create.args[0][0]; expect(params).to.have.property('body'); expect(params.body).to.have.property('defaultIndex', 'logstash-*'); }); }); }); });