From bb9ea8413f1e9d27a87cf6da0714d43da7f232c6 Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Mon, 30 Aug 2021 15:01:51 -0400 Subject: [PATCH] [Uptime] [Synthetics integration] parse inline script as json before sending it to fleet (#110118) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../fleet_package/browser/formatters.ts | 2 +- .../fleet_package/browser/normalizers.ts | 10 +++++----- .../fleet_package/common/normalizers.test.ts | 8 ++++---- .../fleet_package/common/normalizers.ts | 12 ++++++------ .../components/fleet_package/http/normalizers.ts | 16 ++++++++-------- .../fleet_package/use_update_policy.test.tsx | 4 +++- 6 files changed, 27 insertions(+), 25 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/fleet_package/browser/formatters.ts b/x-pack/plugins/uptime/public/components/fleet_package/browser/formatters.ts index 722b1625f023..fd90c53dac12 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/browser/formatters.ts +++ b/x-pack/plugins/uptime/public/components/fleet_package/browser/formatters.ts @@ -15,7 +15,7 @@ export const browserFormatters: BrowserFormatMap = { [ConfigKeys.SOURCE_ZIP_USERNAME]: null, [ConfigKeys.SOURCE_ZIP_PASSWORD]: null, [ConfigKeys.SOURCE_ZIP_FOLDER]: null, - [ConfigKeys.SOURCE_INLINE]: null, + [ConfigKeys.SOURCE_INLINE]: (fields) => JSON.stringify(fields[ConfigKeys.SOURCE_INLINE]), [ConfigKeys.PARAMS]: null, [ConfigKeys.SCREENSHOTS]: null, [ConfigKeys.SYNTHETICS_ARGS]: (fields) => diff --git a/x-pack/plugins/uptime/public/components/fleet_package/browser/normalizers.ts b/x-pack/plugins/uptime/public/components/fleet_package/browser/normalizers.ts index 2b742a188782..53bbf611d490 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/browser/normalizers.ts +++ b/x-pack/plugins/uptime/public/components/fleet_package/browser/normalizers.ts @@ -10,7 +10,7 @@ import { Normalizer, commonNormalizers, getNormalizer, - getJsonToArrayOrObjectNormalizer, + getJsonToJavascriptNormalizer, } from '../common/normalizers'; import { defaultBrowserSimpleFields, defaultBrowserAdvancedFields } from '../contexts'; @@ -26,8 +26,8 @@ export const getBrowserNormalizer = (key: ConfigKeys) => { return getNormalizer(key, defaultBrowserFields); }; -export const getBrowserJsonToArrayOrObjectNormalizer = (key: ConfigKeys) => { - return getJsonToArrayOrObjectNormalizer(key, defaultBrowserFields); +export const getBrowserJsonToJavascriptNormalizer = (key: ConfigKeys) => { + return getJsonToJavascriptNormalizer(key, defaultBrowserFields); }; export const browserNormalizers: BrowserNormalizerMap = { @@ -35,9 +35,9 @@ export const browserNormalizers: BrowserNormalizerMap = { [ConfigKeys.SOURCE_ZIP_USERNAME]: getBrowserNormalizer(ConfigKeys.SOURCE_ZIP_USERNAME), [ConfigKeys.SOURCE_ZIP_PASSWORD]: getBrowserNormalizer(ConfigKeys.SOURCE_ZIP_PASSWORD), [ConfigKeys.SOURCE_ZIP_FOLDER]: getBrowserNormalizer(ConfigKeys.SOURCE_ZIP_FOLDER), - [ConfigKeys.SOURCE_INLINE]: getBrowserNormalizer(ConfigKeys.SOURCE_INLINE), + [ConfigKeys.SOURCE_INLINE]: getBrowserJsonToJavascriptNormalizer(ConfigKeys.SOURCE_INLINE), [ConfigKeys.PARAMS]: getBrowserNormalizer(ConfigKeys.PARAMS), [ConfigKeys.SCREENSHOTS]: getBrowserNormalizer(ConfigKeys.SCREENSHOTS), - [ConfigKeys.SYNTHETICS_ARGS]: getBrowserJsonToArrayOrObjectNormalizer(ConfigKeys.SYNTHETICS_ARGS), + [ConfigKeys.SYNTHETICS_ARGS]: getBrowserJsonToJavascriptNormalizer(ConfigKeys.SYNTHETICS_ARGS), ...commonNormalizers, }; diff --git a/x-pack/plugins/uptime/public/components/fleet_package/common/normalizers.test.ts b/x-pack/plugins/uptime/public/components/fleet_package/common/normalizers.test.ts index 055e829858a1..caeeac915a91 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/common/normalizers.test.ts +++ b/x-pack/plugins/uptime/public/components/fleet_package/common/normalizers.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { cronToSecondsNormalizer, jsonToArrayOrObjectNormalizer } from './normalizers'; +import { cronToSecondsNormalizer, jsonToJavascriptNormalizer } from './normalizers'; describe('normalizers', () => { describe('cronToSecondsNormalizer', () => { @@ -14,15 +14,15 @@ describe('normalizers', () => { }); }); - describe('jsonToArrayOrObjectNormalizer', () => { + describe('jsonToJavascriptNormalizer', () => { it('takes a json object string and returns an object', () => { - expect(jsonToArrayOrObjectNormalizer('{\n "key": "value"\n}')).toEqual({ + expect(jsonToJavascriptNormalizer('{\n "key": "value"\n}')).toEqual({ key: 'value', }); }); it('takes a json array string and returns an array', () => { - expect(jsonToArrayOrObjectNormalizer('["tag1","tag2"]')).toEqual(['tag1', 'tag2']); + expect(jsonToJavascriptNormalizer('["tag1","tag2"]')).toEqual(['tag1', 'tag2']); }); }); }); diff --git a/x-pack/plugins/uptime/public/components/fleet_package/common/normalizers.ts b/x-pack/plugins/uptime/public/components/fleet_package/common/normalizers.ts index 69121ca4bd70..57c4904d711c 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/common/normalizers.ts +++ b/x-pack/plugins/uptime/public/components/fleet_package/common/normalizers.ts @@ -23,19 +23,19 @@ export type CommonNormalizerMap = Record value ? value.slice(0, value.length - 1) : null; -export const jsonToArrayOrObjectNormalizer = (value: string) => (value ? JSON.parse(value) : null); +export const jsonToJavascriptNormalizer = (value: string) => (value ? JSON.parse(value) : null); export function getNormalizer(key: string, defaultValues: Fields): Normalizer { return (fields: NewPackagePolicyInput['vars']) => fields?.[key]?.value ?? defaultValues[key as keyof Fields]; } -export function getJsonToArrayOrObjectNormalizer( +export function getJsonToJavascriptNormalizer( key: string, defaultValues: Fields ): Normalizer { return (fields: NewPackagePolicyInput['vars']) => - jsonToArrayOrObjectNormalizer(fields?.[key]?.value) ?? defaultValues[key as keyof Fields]; + jsonToJavascriptNormalizer(fields?.[key]?.value) ?? defaultValues[key as keyof Fields]; } export function getCronNormalizer(key: string, defaultValues: Fields): Normalizer { @@ -47,8 +47,8 @@ export const getCommonNormalizer = (key: ConfigKeys) => { return getNormalizer(key, commonDefaultValues); }; -export const getCommonJsonToArrayOrObjectNormalizer = (key: ConfigKeys) => { - return getJsonToArrayOrObjectNormalizer(key, commonDefaultValues); +export const getCommonjsonToJavascriptNormalizer = (key: ConfigKeys) => { + return getJsonToJavascriptNormalizer(key, commonDefaultValues); }; export const getCommonCronToSecondsNormalizer = (key: ConfigKeys) => { @@ -74,6 +74,6 @@ export const commonNormalizers: CommonNormalizerMap = { } }, [ConfigKeys.APM_SERVICE_NAME]: getCommonNormalizer(ConfigKeys.APM_SERVICE_NAME), - [ConfigKeys.TAGS]: getCommonJsonToArrayOrObjectNormalizer(ConfigKeys.TAGS), + [ConfigKeys.TAGS]: getCommonjsonToJavascriptNormalizer(ConfigKeys.TAGS), [ConfigKeys.TIMEOUT]: getCommonCronToSecondsNormalizer(ConfigKeys.TIMEOUT), }; diff --git a/x-pack/plugins/uptime/public/components/fleet_package/http/normalizers.ts b/x-pack/plugins/uptime/public/components/fleet_package/http/normalizers.ts index 10c52c295c9c..ca86fd5bdc35 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/http/normalizers.ts +++ b/x-pack/plugins/uptime/public/components/fleet_package/http/normalizers.ts @@ -10,7 +10,7 @@ import { Normalizer, commonNormalizers, getNormalizer, - getJsonToArrayOrObjectNormalizer, + getJsonToJavascriptNormalizer, } from '../common/normalizers'; import { tlsNormalizers } from '../tls/normalizers'; import { defaultHTTPSimpleFields, defaultHTTPAdvancedFields } from '../contexts'; @@ -26,8 +26,8 @@ export const getHTTPNormalizer = (key: ConfigKeys) => { return getNormalizer(key, defaultHTTPValues); }; -export const getHTTPJsonToArrayOrObjectNormalizer = (key: ConfigKeys) => { - return getJsonToArrayOrObjectNormalizer(key, defaultHTTPValues); +export const getHTTPJsonToJavascriptNormalizer = (key: ConfigKeys) => { + return getJsonToJavascriptNormalizer(key, defaultHTTPValues); }; export const httpNormalizers: HTTPNormalizerMap = { @@ -36,18 +36,18 @@ export const httpNormalizers: HTTPNormalizerMap = { [ConfigKeys.USERNAME]: getHTTPNormalizer(ConfigKeys.USERNAME), [ConfigKeys.PASSWORD]: getHTTPNormalizer(ConfigKeys.PASSWORD), [ConfigKeys.PROXY_URL]: getHTTPNormalizer(ConfigKeys.PROXY_URL), - [ConfigKeys.RESPONSE_BODY_CHECK_NEGATIVE]: getHTTPJsonToArrayOrObjectNormalizer( + [ConfigKeys.RESPONSE_BODY_CHECK_NEGATIVE]: getHTTPJsonToJavascriptNormalizer( ConfigKeys.RESPONSE_BODY_CHECK_NEGATIVE ), - [ConfigKeys.RESPONSE_BODY_CHECK_POSITIVE]: getHTTPJsonToArrayOrObjectNormalizer( + [ConfigKeys.RESPONSE_BODY_CHECK_POSITIVE]: getHTTPJsonToJavascriptNormalizer( ConfigKeys.RESPONSE_BODY_CHECK_POSITIVE ), [ConfigKeys.RESPONSE_BODY_INDEX]: getHTTPNormalizer(ConfigKeys.RESPONSE_BODY_INDEX), - [ConfigKeys.RESPONSE_HEADERS_CHECK]: getHTTPJsonToArrayOrObjectNormalizer( + [ConfigKeys.RESPONSE_HEADERS_CHECK]: getHTTPJsonToJavascriptNormalizer( ConfigKeys.RESPONSE_HEADERS_CHECK ), [ConfigKeys.RESPONSE_HEADERS_INDEX]: getHTTPNormalizer(ConfigKeys.RESPONSE_HEADERS_INDEX), - [ConfigKeys.RESPONSE_STATUS_CHECK]: getHTTPJsonToArrayOrObjectNormalizer( + [ConfigKeys.RESPONSE_STATUS_CHECK]: getHTTPJsonToJavascriptNormalizer( ConfigKeys.RESPONSE_STATUS_CHECK ), [ConfigKeys.REQUEST_BODY_CHECK]: (fields) => { @@ -76,7 +76,7 @@ export const httpNormalizers: HTTPNormalizerMap = { return defaultHTTPAdvancedFields[ConfigKeys.REQUEST_BODY_CHECK]; } }, - [ConfigKeys.REQUEST_HEADERS_CHECK]: getHTTPJsonToArrayOrObjectNormalizer( + [ConfigKeys.REQUEST_HEADERS_CHECK]: getHTTPJsonToJavascriptNormalizer( ConfigKeys.REQUEST_HEADERS_CHECK ), [ConfigKeys.REQUEST_METHOD_CHECK]: getHTTPNormalizer(ConfigKeys.REQUEST_METHOD_CHECK), diff --git a/x-pack/plugins/uptime/public/components/fleet_package/use_update_policy.test.tsx b/x-pack/plugins/uptime/public/components/fleet_package/use_update_policy.test.tsx index d57a69860311..05d45da8d38a 100644 --- a/x-pack/plugins/uptime/public/components/fleet_package/use_update_policy.test.tsx +++ b/x-pack/plugins/uptime/public/components/fleet_package/use_update_policy.test.tsx @@ -655,7 +655,9 @@ describe('useBarChartsHooks', () => { config[ConfigKeys.SOURCE_ZIP_PASSWORD] ); expect(vars?.[ConfigKeys.SOURCE_ZIP_URL].value).toEqual(config[ConfigKeys.SOURCE_ZIP_URL]); - expect(vars?.[ConfigKeys.SOURCE_INLINE].value).toEqual(config[ConfigKeys.SOURCE_INLINE]); + expect(vars?.[ConfigKeys.SOURCE_INLINE].value).toEqual( + JSON.stringify(config[ConfigKeys.SOURCE_INLINE]) + ); expect(vars?.[ConfigKeys.SOURCE_ZIP_PASSWORD].value).toEqual( config[ConfigKeys.SOURCE_ZIP_PASSWORD] );