Skip to content

Commit

Permalink
add more rule_registry unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mgiota committed Dec 3, 2021
1 parent fea14a0 commit 895d992
Show file tree
Hide file tree
Showing 2 changed files with 148 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import type { PublicMethodsOf } from '@kbn/utility-types';
import { ResourceInstaller } from './resource_installer';

type Schema = PublicMethodsOf<ResourceInstaller>;
export type ResourceInstallerMock = jest.Mocked<Schema>;
const createResourceInstallerMock = () => {
return {
installCommonResources: jest.fn(() => Promise.resolve()),
installIndexLevelResources: jest.fn(),
installAndUpdateNamespaceLevelResources: jest.fn(),
};
};

export const resourceInstallerMock: {
create: () => ResourceInstallerMock;
} = {
create: createResourceInstallerMock,
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/

import { loggerMock } from '@kbn/logging/mocks';
import { RuleDataService } from './rule_data_plugin_service';
import { elasticsearchServiceMock } from 'src/core/server/mocks';
import { AlertConsumers } from '@kbn/rule-data-utils/alerts_as_data_rbac';

import { Dataset } from './index_options';
jest.mock('../rule_data_client/rule_data_client');

describe('ruleDataPluginService', () => {
beforeEach(() => {
jest.resetAllMocks();
});

describe('isRegistrationContextDisabled', () => {
it('should return true', async () => {
const mockClusterClient = elasticsearchServiceMock.createElasticsearchClient();
const getClusterClient = jest.fn(() => Promise.resolve(mockClusterClient));

const ruleDataService = new RuleDataService({
logger: loggerMock.create(),
getClusterClient,
kibanaVersion: '8.1.0',
isWriteEnabled: true,
disabledRegistrationContexts: ['observability.logs'],
isWriterCacheEnabled: true,
});
expect(ruleDataService.isRegistrationContextDisabled('observability.logs')).toBe(true);
});

it('should return false', async () => {
const mockClusterClient = elasticsearchServiceMock.createElasticsearchClient();
const getClusterClient = jest.fn(() => Promise.resolve(mockClusterClient));

const ruleDataService = new RuleDataService({
logger: loggerMock.create(),
getClusterClient,
kibanaVersion: '8.1.0',
isWriteEnabled: true,
disabledRegistrationContexts: ['observability.logs'],
isWriterCacheEnabled: true,
});
expect(ruleDataService.isRegistrationContextDisabled('observability.apm')).toBe(false);
});
});

describe('isWriteEnabled', () => {
it('should return true', async () => {
const mockClusterClient = elasticsearchServiceMock.createElasticsearchClient();
const getClusterClient = jest.fn(() => Promise.resolve(mockClusterClient));

const ruleDataService = new RuleDataService({
logger: loggerMock.create(),
getClusterClient,
kibanaVersion: '8.1.0',
isWriteEnabled: true,
disabledRegistrationContexts: ['observability.logs'],
isWriterCacheEnabled: true,
});

expect(ruleDataService.isWriteEnabled('observability.logs')).toBe(false);
});
});
describe('initializeService', () => {
it('calls ResourceInstaller', async () => {
const mockClusterClient = elasticsearchServiceMock.createElasticsearchClient();
const getClusterClient = jest.fn(() => Promise.resolve(mockClusterClient));

new RuleDataService({
logger: loggerMock.create(),
getClusterClient,
kibanaVersion: '8.1.0',
isWriteEnabled: true,
disabledRegistrationContexts: ['observability.logs'],
isWriterCacheEnabled: true,
});

expect(jest.requireMock('./resource_installer').ResourceInstaller).toHaveBeenCalled();
});
});

describe('initializeIndex', () => {
it('calls RuleDataClient', async () => {
const mockClusterClient = elasticsearchServiceMock.createElasticsearchClient();
const getClusterClient = jest.fn(() => Promise.resolve(mockClusterClient));
jest.mock('./resource_installer', () => {
return function () {
return { installCommonResources: () => {} };
};
});

const ruleDataService = new RuleDataService({
logger: loggerMock.create(),
getClusterClient,
kibanaVersion: '8.1.0',
isWriteEnabled: true,
disabledRegistrationContexts: ['observability.logs'],
isWriterCacheEnabled: true,
});
const indexOptions = {
feature: AlertConsumers.LOGS,
registrationContext: 'observability.logs',
dataset: Dataset.alerts,
componentTemplateRefs: [],
componentTemplates: [
{
name: 'mappings',
},
],
};
await ruleDataService.initializeService();
await ruleDataService.initializeIndex(indexOptions);
expect(
jest.requireMock('../rule_data_client/rule_data_client').RuleDataClient
).toHaveBeenCalled();
});
});
});

0 comments on commit 895d992

Please sign in to comment.