Skip to content

Commit f9cbe93

Browse files
committed
Make actions config mock and license state mock use factory pattern and jest mocks
1 parent 4ba2fe4 commit f9cbe93

28 files changed

Lines changed: 117 additions & 120 deletions

x-pack/plugins/actions/server/action_type_registry.test.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,27 @@
55
*/
66

77
import { taskManagerMock } from '../../task_manager/server/task_manager.mock';
8-
import { ActionTypeRegistry } from './action_type_registry';
8+
import { ActionTypeRegistry, ActionTypeRegistryOpts } from './action_type_registry';
99
import { ExecutorType } from './types';
1010
import { ActionExecutor, ExecutorError, TaskRunnerFactory } from './lib';
11-
import { configUtilsMock } from './actions_config.mock';
11+
import { actionsConfigMock } from './actions_config.mock';
12+
import { ActionsConfigurationUtilities } from './actions_config';
1213

1314
const mockTaskManager = taskManagerMock.setup();
14-
const actionTypeRegistryParams = {
15-
taskManager: mockTaskManager,
16-
taskRunnerFactory: new TaskRunnerFactory(
17-
new ActionExecutor({ isESOUsingEphemeralEncryptionKey: false })
18-
),
19-
actionsConfigUtils: configUtilsMock,
20-
};
15+
let mockedActionsConfig: jest.Mocked<ActionsConfigurationUtilities>;
16+
let actionTypeRegistryParams: ActionTypeRegistryOpts;
2117

22-
beforeEach(() => jest.resetAllMocks());
18+
beforeEach(() => {
19+
jest.resetAllMocks();
20+
mockedActionsConfig = actionsConfigMock.create();
21+
actionTypeRegistryParams = {
22+
taskManager: mockTaskManager,
23+
taskRunnerFactory: new TaskRunnerFactory(
24+
new ActionExecutor({ isESOUsingEphemeralEncryptionKey: false })
25+
),
26+
actionsConfigUtils: mockedActionsConfig,
27+
};
28+
});
2329

2430
const executor: ExecutorType = async options => {
2531
return { status: 'ok', actionId: options.actionId };

x-pack/plugins/actions/server/action_type_registry.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { ActionType } from './types';
1212
import { ActionType as CommonActionType } from '../common';
1313
import { ActionsConfigurationUtilities } from './actions_config';
1414

15-
interface ConstructorOptions {
15+
export interface ActionTypeRegistryOpts {
1616
taskManager: TaskManagerSetupContract;
1717
taskRunnerFactory: TaskRunnerFactory;
1818
actionsConfigUtils: ActionsConfigurationUtilities;
@@ -24,7 +24,7 @@ export class ActionTypeRegistry {
2424
private readonly taskRunnerFactory: TaskRunnerFactory;
2525
private readonly actionsConfigUtils: ActionsConfigurationUtilities;
2626

27-
constructor(constructorParams: ConstructorOptions) {
27+
constructor(constructorParams: ActionTypeRegistryOpts) {
2828
this.taskManager = constructorParams.taskManager;
2929
this.taskRunnerFactory = constructorParams.taskRunnerFactory;
3030
this.actionsConfigUtils = constructorParams.actionsConfigUtils;

x-pack/plugins/actions/server/actions_client.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { ActionsClient } from './actions_client';
1111
import { ExecutorType } from './types';
1212
import { ActionExecutor, TaskRunnerFactory } from './lib';
1313
import { taskManagerMock } from '../../task_manager/server/task_manager.mock';
14-
import { configUtilsMock } from './actions_config.mock';
14+
import { actionsConfigMock } from './actions_config.mock';
1515
import { getActionsConfigurationUtilities } from './actions_config';
1616

1717
import {
@@ -30,7 +30,7 @@ const actionTypeRegistryParams = {
3030
taskRunnerFactory: new TaskRunnerFactory(
3131
new ActionExecutor({ isESOUsingEphemeralEncryptionKey: false })
3232
),
33-
actionsConfigUtils: configUtilsMock,
33+
actionsConfigUtils: actionsConfigMock.create(),
3434
};
3535

3636
let actionsClient: ActionsClient;

x-pack/plugins/actions/server/actions_config.mock.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,18 @@
66

77
import { ActionsConfigurationUtilities } from './actions_config';
88

9-
export const configUtilsMock: ActionsConfigurationUtilities = {
10-
isWhitelistedHostname: _ => true,
11-
isWhitelistedUri: _ => true,
12-
isActionTypeEnabled: _ => true,
13-
ensureWhitelistedHostname: _ => {},
14-
ensureWhitelistedUri: _ => {},
15-
ensureActionTypeEnabled: _ => {},
9+
const createActionsConfigMock = () => {
10+
const mocked: jest.Mocked<ActionsConfigurationUtilities> = {
11+
isWhitelistedHostname: jest.fn().mockReturnValue(true),
12+
isWhitelistedUri: jest.fn().mockReturnValue(true),
13+
isActionTypeEnabled: jest.fn().mockReturnValue(true),
14+
ensureWhitelistedHostname: jest.fn().mockReturnValue({}),
15+
ensureWhitelistedUri: jest.fn().mockReturnValue({}),
16+
ensureActionTypeEnabled: jest.fn().mockReturnValue({}),
17+
};
18+
return mocked;
19+
};
20+
21+
export const actionsConfigMock = {
22+
create: createActionsConfigMock,
1623
};

x-pack/plugins/actions/server/builtin_action_types/email.test.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { Logger } from '../../../../../src/core/server';
1212
import { savedObjectsClientMock } from '../../../../../src/core/server/mocks';
1313

1414
import { ActionType, ActionTypeExecutorOptions } from '../types';
15-
import { configUtilsMock } from '../actions_config.mock';
15+
import { actionsConfigMock } from '../actions_config.mock';
1616
import { validateConfig, validateSecrets, validateParams } from '../lib';
1717
import { createActionTypeRegistry } from './index.test';
1818
import { sendEmail } from './lib/send_email';
@@ -37,13 +37,10 @@ const services = {
3737
let actionType: ActionType;
3838
let mockedLogger: jest.Mocked<Logger>;
3939

40-
beforeAll(() => {
41-
const { actionTypeRegistry } = createActionTypeRegistry();
42-
actionType = actionTypeRegistry.get(ACTION_TYPE_ID);
43-
});
44-
4540
beforeEach(() => {
4641
jest.resetAllMocks();
42+
const { actionTypeRegistry } = createActionTypeRegistry();
43+
actionType = actionTypeRegistry.get(ACTION_TYPE_ID);
4744
});
4845

4946
describe('actionTypeRegistry.get() works', () => {
@@ -128,7 +125,7 @@ describe('config validation', () => {
128125
actionType = getActionType({
129126
logger: mockedLogger,
130127
configurationUtilities: {
131-
...configUtilsMock,
128+
...actionsConfigMock.create(),
132129
isWhitelistedHostname: hostname => hostname === NODEMAILER_AOL_SERVICE_HOST,
133130
},
134131
});

x-pack/plugins/actions/server/builtin_action_types/index.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { taskManagerMock } from '../../../task_manager/server/task_manager.mock'
1010
import { registerBuiltInActionTypes } from './index';
1111
import { Logger } from '../../../../../src/core/server';
1212
import { loggingServiceMock } from '../../../../../src/core/server/mocks';
13-
import { configUtilsMock } from '../actions_config.mock';
13+
import { actionsConfigMock } from '../actions_config.mock';
1414

1515
const ACTION_TYPE_IDS = ['.index', '.email', '.pagerduty', '.server-log', '.slack', '.webhook'];
1616

@@ -24,12 +24,12 @@ export function createActionTypeRegistry(): {
2424
taskRunnerFactory: new TaskRunnerFactory(
2525
new ActionExecutor({ isESOUsingEphemeralEncryptionKey: false })
2626
),
27-
actionsConfigUtils: configUtilsMock,
27+
actionsConfigUtils: actionsConfigMock.create(),
2828
});
2929
registerBuiltInActionTypes({
3030
logger,
3131
actionTypeRegistry,
32-
actionsConfigUtils: configUtilsMock,
32+
actionsConfigUtils: actionsConfigMock.create(),
3333
});
3434
return { logger, actionTypeRegistry };
3535
}

x-pack/plugins/actions/server/builtin_action_types/pagerduty.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { savedObjectsClientMock } from '../../../../../src/core/server/mocks';
1515
import { postPagerduty } from './lib/post_pagerduty';
1616
import { createActionTypeRegistry } from './index.test';
1717
import { Logger } from '../../../../../src/core/server';
18-
import { configUtilsMock } from '../actions_config.mock';
18+
import { actionsConfigMock } from '../actions_config.mock';
1919

2020
const postPagerdutyMock = postPagerduty as jest.Mock;
2121

@@ -60,7 +60,7 @@ describe('validateConfig()', () => {
6060
actionType = getActionType({
6161
logger: mockedLogger,
6262
configurationUtilities: {
63-
...configUtilsMock,
63+
...actionsConfigMock.create(),
6464
ensureWhitelistedUri: url => {
6565
expect(url).toEqual('https://events.pagerduty.com/v2/enqueue');
6666
},
@@ -76,7 +76,7 @@ describe('validateConfig()', () => {
7676
actionType = getActionType({
7777
logger: mockedLogger,
7878
configurationUtilities: {
79-
...configUtilsMock,
79+
...actionsConfigMock.create(),
8080
ensureWhitelistedUri: _ => {
8181
throw new Error(`target url is not whitelisted`);
8282
},

x-pack/plugins/actions/server/builtin_action_types/servicenow.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { validateConfig, validateSecrets, validateParams } from '../lib';
1414
import { savedObjectsClientMock } from '../../../../../src/core/server/mocks';
1515
import { postServiceNow } from './lib/post_servicenow';
1616
import { createActionTypeRegistry } from './index.test';
17-
import { configUtilsMock } from '../actions_config.mock';
17+
import { actionsConfigMock } from '../actions_config.mock';
1818

1919
const postServiceNowMock = postServiceNow as jest.Mock;
2020

@@ -70,7 +70,7 @@ describe('validateConfig()', () => {
7070
test('should validate and pass when the servicenow url is whitelisted', () => {
7171
actionType = getActionType({
7272
configurationUtilities: {
73-
...configUtilsMock,
73+
...actionsConfigMock.create(),
7474
ensureWhitelistedUri: url => {
7575
expect(url).toEqual('https://events.servicenow.com/v2/enqueue');
7676
},
@@ -85,7 +85,7 @@ describe('validateConfig()', () => {
8585
test('config validation returns an error if the specified URL isnt whitelisted', () => {
8686
actionType = getActionType({
8787
configurationUtilities: {
88-
...configUtilsMock,
88+
...actionsConfigMock.create(),
8989
ensureWhitelistedUri: _ => {
9090
throw new Error(`target url is not whitelisted`);
9191
},

x-pack/plugins/actions/server/builtin_action_types/slack.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { ActionType, Services, ActionTypeExecutorOptions } from '../types';
88
import { savedObjectsClientMock } from '../../../../../src/core/server/mocks';
99
import { validateParams, validateSecrets } from '../lib';
1010
import { getActionType } from './slack';
11-
import { configUtilsMock } from '../actions_config.mock';
11+
import { actionsConfigMock } from '../actions_config.mock';
1212

1313
const ACTION_TYPE_ID = '.slack';
1414

@@ -22,7 +22,7 @@ let actionType: ActionType;
2222
beforeAll(() => {
2323
actionType = getActionType({
2424
async executor(options: ActionTypeExecutorOptions): Promise<any> {},
25-
configurationUtilities: configUtilsMock,
25+
configurationUtilities: actionsConfigMock.create(),
2626
});
2727
});
2828

@@ -85,7 +85,7 @@ describe('validateActionTypeSecrets()', () => {
8585
test('should validate and pass when the slack webhookUrl is whitelisted', () => {
8686
actionType = getActionType({
8787
configurationUtilities: {
88-
...configUtilsMock,
88+
...actionsConfigMock.create(),
8989
ensureWhitelistedUri: url => {
9090
expect(url).toEqual('https://api.slack.com/');
9191
},
@@ -100,7 +100,7 @@ describe('validateActionTypeSecrets()', () => {
100100
test('config validation returns an error if the specified URL isnt whitelisted', () => {
101101
actionType = getActionType({
102102
configurationUtilities: {
103-
...configUtilsMock,
103+
...actionsConfigMock.create(),
104104
ensureWhitelistedHostname: url => {
105105
throw new Error(`target hostname is not whitelisted`);
106106
},
@@ -135,7 +135,7 @@ describe('execute()', () => {
135135

136136
actionType = getActionType({
137137
executor: mockSlackExecutor,
138-
configurationUtilities: configUtilsMock,
138+
configurationUtilities: actionsConfigMock.create(),
139139
});
140140
});
141141

x-pack/plugins/actions/server/builtin_action_types/webhook.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { getActionType } from './webhook';
1212
import { ActionType, Services } from '../types';
1313
import { validateConfig, validateSecrets, validateParams } from '../lib';
1414
import { savedObjectsClientMock } from '../../../../../src/core/server/mocks';
15-
import { configUtilsMock } from '../actions_config.mock';
15+
import { actionsConfigMock } from '../actions_config.mock';
1616
import { createActionTypeRegistry } from './index.test';
1717
import { Logger } from '../../../../../src/core/server';
1818
import axios from 'axios';
@@ -164,7 +164,7 @@ describe('config validation', () => {
164164
actionType = getActionType({
165165
logger: mockedLogger,
166166
configurationUtilities: {
167-
...configUtilsMock,
167+
...actionsConfigMock.create(),
168168
ensureWhitelistedUri: _ => {
169169
throw new Error(`target url is not whitelisted`);
170170
},
@@ -207,7 +207,7 @@ describe('execute()', () => {
207207
axiosRequestMock.mockReset();
208208
actionType = getActionType({
209209
logger: mockedLogger,
210-
configurationUtilities: configUtilsMock,
210+
configurationUtilities: actionsConfigMock.create(),
211211
});
212212
});
213213

0 commit comments

Comments
 (0)