diff --git a/dashboards-reports/server/utils/__tests__/validationHelper.test.ts b/dashboards-reports/server/utils/__tests__/validationHelper.test.ts index 692d9fe4..cacd3d61 100644 --- a/dashboards-reports/server/utils/__tests__/validationHelper.test.ts +++ b/dashboards-reports/server/utils/__tests__/validationHelper.test.ts @@ -65,6 +65,32 @@ const createReportInput: ReportSchemaType = { report_definition: createReportDefinitionInput, }; +// this is the url format used before notebooks merged into observability +const createReportDefinitionNotebookLegacyInput: ReportDefinitionSchemaType = { + report_params: { + report_name: 'test notebooks report', + report_source: REPORT_TYPE.notebook, + description: 'Hi this is your Notebook on demand', + core_params: { + base_url: `/app/notebooks-dashboards?view=output_only#/${SAMPLE_SAVED_OBJECT_ID}`, + window_width: 1300, + window_height: 900, + report_format: FORMAT.pdf, + time_duration: 'PT5M', + origin: 'http://localhost:5601', + }, + }, + delivery: { + configIds: [], + title: 'title', + textDescription: 'text description', + htmlDescription: 'html description' + }, + trigger: { + trigger_type: TRIGGER_TYPE.onDemand, + }, +} + const createReportDefinitionNotebookInput: ReportDefinitionSchemaType = { report_params: { report_name: 'test notebooks report', @@ -118,6 +144,16 @@ describe('test input validation', () => { expect(report).toBeDefined(); }); + test('create notebook report definition with legacy base url format', async () => { + const savedObjectIds = [`notebook:${SAMPLE_SAVED_OBJECT_ID}`]; + const client = mockOpenSearchClient(savedObjectIds); + const report = await validateReportDefinition( + client, + createReportDefinitionNotebookLegacyInput + ); + expect(report).toBeDefined(); + }); + test('create notebook report definition with correct base url format', async () => { const savedObjectIds = [`notebook:${SAMPLE_SAVED_OBJECT_ID}`]; const client = mockOpenSearchClient(savedObjectIds); diff --git a/dashboards-reports/server/utils/validationHelper.ts b/dashboards-reports/server/utils/validationHelper.ts index 252ac9a1..99e969c7 100644 --- a/dashboards-reports/server/utils/validationHelper.ts +++ b/dashboards-reports/server/utils/validationHelper.ts @@ -55,7 +55,7 @@ export const isValidRelativeUrl = (relativeUrl: string) => { export const regexDuration = /^(-?)P(?=\d|T\d)(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)([DW]))?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/; export const regexEmailAddress = /\S+@\S+\.\S+/; export const regexReportName = /^[\w\-\s\(\)\[\]\,\_\-+]+$/; -export const regexRelativeUrl = /^\/(_plugin\/kibana\/|_dashboards\/)?app\/(dashboards|visualize|discover|observability)([?&]security_tenant=.+|)#\/(notebooks\/|view\/|edit\/)?[^\/]+$/; +export const regexRelativeUrl = /^\/(_plugin\/kibana\/|_dashboards\/)?app\/(dashboards|visualize|discover|observability|notebooks-dashboards\?view=output_only)([?&]security_tenant=.+|)#\/(notebooks\/|view\/|edit\/)?[^\/]+$/; export const validateReport = async ( client: ILegacyScopedClusterClient,