From e408c7741199dfa11e2fb0bc3d386b58617b219f Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Thu, 15 Nov 2018 10:34:40 +0300 Subject: [PATCH] tests for proxy filtering, #418 --- src/datasource-zabbix/zabbix/zabbix.test.js | 98 +++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/datasource-zabbix/zabbix/zabbix.test.js diff --git a/src/datasource-zabbix/zabbix/zabbix.test.js b/src/datasource-zabbix/zabbix/zabbix.test.js new file mode 100644 index 000000000..44b27c189 --- /dev/null +++ b/src/datasource-zabbix/zabbix/zabbix.test.js @@ -0,0 +1,98 @@ +import mocks from '../../test-setup/mocks'; +import { Zabbix } from './zabbix'; + +describe('Zabbix', () => { + let ctx = {}; + let zabbix; + let options = { + url: 'http://localhost', + username: 'zabbix', + password: 'zabbix', + zabbixVersion: 4, + }; + + beforeEach(() => { + ctx.options = options; + ctx.backendSrv = mocks.backendSrvMock; + ctx.datasourceSrv = mocks.datasourceSrvMock; + zabbix = new Zabbix(ctx.options, ctx.backendSrvMock, ctx.datasourceSrvMock); + }); + + describe('When querying proxies', () => { + beforeEach(() => { + zabbix.zabbixAPI.getProxies = jest.fn().mockResolvedValue([ + { host: 'proxy-foo', proxyid: '10101' }, + { host: 'proxy-bar', proxyid: '10102' }, + ]); + }); + + it("should return all proxies if filter set to /.*/", done => { + zabbix.getFilteredProxies('/.*/').then(proxies => { + expect(proxies).toMatchObject([{ host: 'proxy-foo' }, { host: 'proxy-bar' }]); + done(); + }); + }); + + it("should return matched proxies if regex filter used", done => { + zabbix.getFilteredProxies('/.*-foo/').then(proxies => { + expect(proxies).toMatchObject([{ host: 'proxy-foo' }]); + done(); + }); + }); + + it("should return matched proxies if simple filter used", done => { + zabbix.getFilteredProxies('proxy-bar').then(proxies => { + expect(proxies).toMatchObject([{ host: 'proxy-bar' }]); + done(); + }); + }); + + it("should return empty list for empty filter", done => { + zabbix.getFilteredProxies('').then(proxies => { + expect(proxies).toEqual([]); + done(); + }); + }); + }); + + describe('When filtering triggers by proxy', () => { + beforeEach(() => { + zabbix.zabbixAPI.getProxies = jest.fn().mockResolvedValue([ + { host: 'proxy-foo', proxyid: '10101' }, + { host: 'proxy-bar', proxyid: '10102' }, + ]); + ctx.triggers = [ + { triggerid: '1', hosts: [{ name: 'backend01', proxy_hostid: '0' }] }, + { triggerid: '2', hosts: [{ name: 'backend02', proxy_hostid: '0' }] }, + { triggerid: '3', hosts: [{ name: 'frontend01', proxy_hostid: '10101' }] }, + { triggerid: '4', hosts: [{ name: 'frontend02', proxy_hostid: '10101' }] }, + { triggerid: '5', hosts: [{ name: 'db01', proxy_hostid: '10102' }] }, + { triggerid: '6', hosts: [{ name: 'db02', proxy_hostid: '10102' }] }, + ]; + }); + + it("should return all triggers for empty filter", done => { + zabbix.filterTriggersByProxy(ctx.triggers, '').then(triggers => { + const triggerids = triggers.map(t => t.triggerid); + expect(triggerids).toEqual(['1', '2', '3', '4', '5', '6']); + done(); + }); + }); + + it("should return triggers belonging proxy matched regex filter", done => { + zabbix.filterTriggersByProxy(ctx.triggers, '/.*-foo/').then(triggers => { + const triggerids = triggers.map(t => t.triggerid); + expect(triggerids).toEqual(['3', '4']); + done(); + }); + }); + + it("should return triggers belonging proxy matched name filter", done => { + zabbix.filterTriggersByProxy(ctx.triggers, 'proxy-bar').then(triggers => { + const triggerids = triggers.map(t => t.triggerid); + expect(triggerids).toEqual(['5', '6']); + done(); + }); + }); + }); +});