Skip to content

Commit ad8269c

Browse files
committed
design feedback to avoid handling the entire config getter
1 parent 29e99c3 commit ad8269c

38 files changed

+101
-110
lines changed

x-pack/legacy/plugins/reporting/export_types/common/execute_job/decrypt_job_headers.test.ts

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,25 @@
55
*/
66

77
import { cryptoFactory } from '../../../server/lib/crypto';
8-
import { ReportingConfig } from '../../../server/types';
98
import { Logger } from '../../../types';
109
import { decryptJobHeaders } from './decrypt_job_headers';
1110

12-
const getMockConfig = (mockGet: jest.Mock<any, any>) => ({
13-
get: mockGet,
14-
kbnConfig: { get: mockGet },
15-
});
16-
const mockConfigGet = jest.fn().mockImplementation((key: string) => {
17-
if (key === 'encryptionKey') {
18-
return 'testencryptionkey';
19-
}
20-
});
21-
const mockConfig = getMockConfig(mockConfigGet);
22-
23-
const encryptHeaders = async (config: ReportingConfig, headers: Record<string, string>) => {
24-
const crypto = cryptoFactory(config);
11+
const encryptHeaders = async (encryptionKey: string, headers: Record<string, string>) => {
12+
const crypto = cryptoFactory(encryptionKey);
2513
return await crypto.encrypt(headers);
2614
};
2715

2816
describe('headers', () => {
2917
test(`fails if it can't decrypt headers`, async () => {
3018
const getDecryptedHeaders = () =>
3119
decryptJobHeaders({
20+
encryptionKey: 'abcsecretsauce',
3221
job: {
3322
headers: 'Q53+9A+zf+Xe+ceR/uB/aR/Sw/8e+M+qR+WiG+8z+EY+mo+HiU/zQL+Xn',
3423
},
3524
logger: ({
3625
error: jest.fn(),
3726
} as unknown) as Logger,
38-
config: mockConfig,
3927
});
4028
await expect(getDecryptedHeaders()).rejects.toMatchInlineSnapshot(
4129
`[Error: Failed to decrypt report job data. Please ensure that xpack.reporting.encryptionKey is set and re-generate this report. Error: Invalid IV length]`
@@ -48,15 +36,15 @@ describe('headers', () => {
4836
baz: 'quix',
4937
};
5038

51-
const encryptedHeaders = await encryptHeaders(mockConfig, headers);
39+
const encryptedHeaders = await encryptHeaders('abcsecretsauce', headers);
5240
const decryptedHeaders = await decryptJobHeaders({
41+
encryptionKey: 'abcsecretsauce',
5342
job: {
5443
title: 'cool-job-bro',
5544
type: 'csv',
5645
headers: encryptedHeaders,
5746
},
5847
logger: {} as Logger,
59-
config: mockConfig,
6048
});
6149
expect(decryptedHeaders).toEqual(headers);
6250
});

x-pack/legacy/plugins/reporting/export_types/common/execute_job/decrypt_job_headers.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import { i18n } from '@kbn/i18n';
88
import { cryptoFactory } from '../../../server/lib/crypto';
9-
import { ReportingConfig } from '../../../server/types';
109
import { CryptoFactory, Logger } from '../../../types';
1110

1211
interface HasEncryptedHeaders {
@@ -18,15 +17,15 @@ export const decryptJobHeaders = async <
1817
JobParamsType,
1918
JobDocPayloadType extends HasEncryptedHeaders
2019
>({
21-
config,
20+
encryptionKey,
2221
job,
2322
logger,
2423
}: {
25-
config: ReportingConfig;
24+
encryptionKey?: string;
2625
job: JobDocPayloadType;
2726
logger: Logger;
2827
}): Promise<Record<string, string>> => {
29-
const crypto: CryptoFactory = cryptoFactory(config);
28+
const crypto: CryptoFactory = cryptoFactory(encryptionKey);
3029
try {
3130
const decryptedHeaders: Record<string, string> = await crypto.decrypt(job.headers);
3231
return decryptedHeaders;

x-pack/legacy/plugins/reporting/export_types/common/layouts/create_layout.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
* you may not use this file except in compliance with the Elastic License.
55
*/
66

7-
import { ReportingConfig } from '../../../server/types';
7+
import { CaptureConfig } from '../../../server/types';
88
import { LayoutTypes } from '../constants';
99
import { Layout, LayoutParams } from './layout';
1010
import { PreserveLayout } from './preserve_layout';
1111
import { PrintLayout } from './print_layout';
1212

13-
export function createLayout(config: ReportingConfig, layoutParams?: LayoutParams): Layout {
13+
export function createLayout(captureConfig: CaptureConfig, layoutParams?: LayoutParams): Layout {
1414
if (layoutParams && layoutParams.id === LayoutTypes.PRESERVE_LAYOUT) {
1515
return new PreserveLayout(layoutParams.dimensions);
1616
}
1717

1818
// this is the default because some jobs won't have anything specified
19-
return new PrintLayout(config);
19+
return new PrintLayout(captureConfig);
2020
}

x-pack/legacy/plugins/reporting/export_types/common/layouts/print_layout.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import path from 'path';
88
import { EvaluateFn, SerializableOrJSHandle } from 'puppeteer';
99
import { HeadlessChromiumDriver } from '../../../server/browsers';
1010
import { LevelLogger } from '../../../server/lib';
11-
import { ReportingConfig } from '../../../server/types';
11+
import { ReportingConfigType } from '../../../server/core';
1212
import { LayoutTypes } from '../constants';
1313
import { getDefaultLayoutSelectors, Layout, LayoutSelectorDictionary, Size } from './layout';
1414
import { CaptureConfig } from './types';
@@ -21,9 +21,9 @@ export class PrintLayout extends Layout {
2121
public readonly groupCount = 2;
2222
private captureConfig: CaptureConfig;
2323

24-
constructor(config: ReportingConfig) {
24+
constructor(captureConfig: ReportingConfigType['capture']) {
2525
super(LayoutTypes.PRINT);
26-
this.captureConfig = config.get('capture');
26+
this.captureConfig = captureConfig;
2727
}
2828

2929
public getCssOverridesPath() {

x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/get_number_of_items.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import { i18n } from '@kbn/i18n';
88
import { HeadlessChromiumDriver as HeadlessBrowser } from '../../../../server/browsers';
99
import { LevelLogger } from '../../../../server/lib';
10+
import { CaptureConfig } from '../../../../server/types';
1011
import { LayoutInstance } from '../../layouts/layout';
1112
import { CONTEXT_GETNUMBEROFITEMS, CONTEXT_READMETADATA } from './constants';
12-
import { CaptureConfig } from './types';
1313

1414
export const getNumberOfItems = async (
1515
captureConfig: CaptureConfig,

x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/observable.test.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@ jest.mock('../../../../server/browsers/chromium/puppeteer', () => ({
1616
}));
1717

1818
import * as Rx from 'rxjs';
19-
import { get } from 'lodash';
2019
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
2120
import { loggingServiceMock } from '../../../../../../../../src/core/server/mocks';
2221
import { LevelLogger } from '../../../../server/lib';
2322
import { createMockBrowserDriverFactory, createMockLayoutInstance } from '../../../../test_helpers';
2423
import { ConditionalHeaders, HeadlessChromiumDriver } from '../../../../types';
25-
import { ReportingConfig } from '../../../../server/types';
24+
import { CaptureConfig } from '../../../../server/types';
2625
import { screenshotsObservableFactory } from './observable';
2726
import { ElementsPositionAndAttribute } from './types';
2827

@@ -32,10 +31,7 @@ import { ElementsPositionAndAttribute } from './types';
3231
const mockLogger = jest.fn(loggingServiceMock.create);
3332
const logger = new LevelLogger(mockLogger());
3433

35-
const mockConfig = {
36-
get: (key: string) => get({ capture: { timeouts: { openUrl: 13 } } }, key, null),
37-
kbnConfig: { get: jest.fn() },
38-
} as ReportingConfig;
34+
const mockConfig = { timeouts: { openUrl: 13 } } as CaptureConfig;
3935
const mockLayout = createMockLayoutInstance(mockConfig);
4036

4137
/*

x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/observable.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import * as Rx from 'rxjs';
88
import { catchError, concatMap, first, mergeMap, take, takeUntil, toArray } from 'rxjs/operators';
9-
import { ReportingConfig } from '../../../../server';
9+
import { CaptureConfig } from '../../../../server/types';
1010
import { HeadlessChromiumDriverFactory } from '../../../../types';
1111
import { getElementPositionAndAttributes } from './get_element_position_data';
1212
import { getNumberOfItems } from './get_number_of_items';
@@ -19,11 +19,9 @@ import { waitForRenderComplete } from './wait_for_render';
1919
import { waitForVisualizations } from './wait_for_visualizations';
2020

2121
export function screenshotsObservableFactory(
22-
config: ReportingConfig,
22+
captureConfig: CaptureConfig,
2323
browserDriverFactory: HeadlessChromiumDriverFactory
2424
) {
25-
const captureConfig = config.get('capture');
26-
2725
return function screenshotsObservable({
2826
logger,
2927
urls,

x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/open_url.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import { i18n } from '@kbn/i18n';
88
import { HeadlessChromiumDriver as HeadlessBrowser } from '../../../../server/browsers';
99
import { LevelLogger } from '../../../../server/lib';
10+
import { CaptureConfig } from '../../../../server/types';
1011
import { ConditionalHeaders } from '../../../../types';
1112
import { PAGELOAD_SELECTOR } from '../../constants';
12-
import { CaptureConfig } from './types';
1313

1414
export const openUrl = async (
1515
captureConfig: CaptureConfig,

x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/types.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,9 @@
55
*/
66

77
import { LevelLogger } from '../../../../server/lib';
8-
import { ReportingConfigType } from '../../../../server/types';
98
import { ConditionalHeaders, ElementPosition } from '../../../../types';
109
import { LayoutInstance } from '../../layouts/layout';
1110

12-
export type CaptureConfig = ReportingConfigType['capture'];
13-
1411
export interface ScreenshotObservableOpts {
1512
logger: LevelLogger;
1613
urls: string[];

x-pack/legacy/plugins/reporting/export_types/common/lib/screenshots/wait_for_render.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import { i18n } from '@kbn/i18n';
88
import { HeadlessChromiumDriver as HeadlessBrowser } from '../../../../server/browsers';
99
import { LevelLogger } from '../../../../server/lib';
10+
import { CaptureConfig } from '../../../../server/types';
1011
import { LayoutInstance } from '../../layouts/layout';
1112
import { CONTEXT_WAITFORRENDER } from './constants';
12-
import { CaptureConfig } from './types';
1313

1414
export const waitForRenderComplete = async (
1515
captureConfig: CaptureConfig,

0 commit comments

Comments
 (0)