From 93b4cc7035b76e96a1fc5c441199a98b3d337136 Mon Sep 17 00:00:00 2001 From: Andrej Ocenas Date: Thu, 22 Jul 2021 14:42:20 +0200 Subject: [PATCH] Explore: Fix encoding of internal URLs (#36919) * Encode internal explore url * Fix tests * Fix comma --- .../src/field/fieldOverrides.test.ts | 2 +- .../grafana-data/src/utils/dataLinks.test.ts | 2 +- packages/grafana-data/src/utils/dataLinks.ts | 12 +++++++----- .../explore/TraceView/createSpanLink.test.ts | 16 ++++++++++++---- public/app/features/explore/utils/links.test.ts | 4 +++- 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/packages/grafana-data/src/field/fieldOverrides.test.ts b/packages/grafana-data/src/field/fieldOverrides.test.ts index d8762e5e1db..3aa26b74b28 100644 --- a/packages/grafana-data/src/field/fieldOverrides.test.ts +++ b/packages/grafana-data/src/field/fieldOverrides.test.ts @@ -644,7 +644,7 @@ describe('getLinksSupplier', () => { expect(links[0]).toEqual( expect.objectContaining({ title: 'testDS', - href: '/explore?left={"datasource":"testDS","queries":["12345"]}', + href: `/explore?left=${encodeURIComponent('{"datasource":"testDS","queries":["12345"]}')}`, onClick: undefined, }) ); diff --git a/packages/grafana-data/src/utils/dataLinks.test.ts b/packages/grafana-data/src/utils/dataLinks.test.ts index 549a69d2b8e..daab192e387 100644 --- a/packages/grafana-data/src/utils/dataLinks.test.ts +++ b/packages/grafana-data/src/utils/dataLinks.test.ts @@ -31,7 +31,7 @@ describe('mapInternalLinkToExplore', () => { expect(link).toEqual( expect.objectContaining({ title: 'dsName', - href: '/explore?left={"datasource":"dsName","queries":[{"query":"12344"}]}', + href: `/explore?left=${encodeURIComponent('{"datasource":"dsName","queries":[{"query":"12344"}]}')}`, onClick: undefined, }) ); diff --git a/packages/grafana-data/src/utils/dataLinks.ts b/packages/grafana-data/src/utils/dataLinks.ts index bad07dafd26..593799d293d 100644 --- a/packages/grafana-data/src/utils/dataLinks.ts +++ b/packages/grafana-data/src/utils/dataLinks.ts @@ -67,11 +67,13 @@ export function mapInternalLinkToExplore(options: LinkToExploreOptions): LinkMod */ function generateInternalHref(datasourceName: string, query: T, range: TimeRange): string { return locationUtil.assureBaseUrl( - `/explore?left=${serializeStateToUrlParam({ - range: range.raw, - datasource: datasourceName, - queries: [query], - })}` + `/explore?left=${encodeURIComponent( + serializeStateToUrlParam({ + range: range.raw, + datasource: datasourceName, + queries: [query], + }) + )}` ); } diff --git a/public/app/features/explore/TraceView/createSpanLink.test.ts b/public/app/features/explore/TraceView/createSpanLink.test.ts index e39f36148d6..912bb342d0e 100644 --- a/public/app/features/explore/TraceView/createSpanLink.test.ts +++ b/public/app/features/explore/TraceView/createSpanLink.test.ts @@ -59,7 +59,9 @@ describe('createSpanLinkFactory', () => { } as any); expect(linkDef.href).toBe( - `/explore?left={"range":{"from":"2020-10-14T01:00:00.000Z","to":"2020-10-14T01:00:01.000Z"},"datasource":"loki1","queries":[{"expr":"{cluster=\\"cluster1\\", hostname=\\"hostname1\\"}","refId":""}]}` + `/explore?left=${encodeURIComponent( + '{"range":{"from":"2020-10-14T01:00:00.000Z","to":"2020-10-14T01:00:01.000Z"},"datasource":"loki1","queries":[{"expr":"{cluster=\\"cluster1\\", hostname=\\"hostname1\\"}","refId":""}]}' + )}` ); }); @@ -91,7 +93,9 @@ describe('createSpanLinkFactory', () => { } as any); expect(linkDef.href).toBe( - `/explore?left={"range":{"from":"2020-10-14T01:00:00.000Z","to":"2020-10-14T01:00:01.000Z"},"datasource":"loki1","queries":[{"expr":"{ip=\\"192.168.0.1\\"}","refId":""}]}` + `/explore?left=${encodeURIComponent( + '{"range":{"from":"2020-10-14T01:00:00.000Z","to":"2020-10-14T01:00:01.000Z"},"datasource":"loki1","queries":[{"expr":"{ip=\\"192.168.0.1\\"}","refId":""}]}' + )}` ); }); @@ -126,7 +130,9 @@ describe('createSpanLinkFactory', () => { } as any); expect(linkDef.href).toBe( - `/explore?left={"range":{"from":"2020-10-14T01:00:00.000Z","to":"2020-10-14T01:00:01.000Z"},"datasource":"loki1","queries":[{"expr":"{ip=\\"192.168.0.1\\", host=\\"host\\"}","refId":""}]}` + `/explore?left=${encodeURIComponent( + '{"range":{"from":"2020-10-14T01:00:00.000Z","to":"2020-10-14T01:00:01.000Z"},"datasource":"loki1","queries":[{"expr":"{ip=\\"192.168.0.1\\", host=\\"host\\"}","refId":""}]}' + )}` ); }); @@ -163,7 +169,9 @@ describe('createSpanLinkFactory', () => { } as any); expect(linkDef.href).toBe( - `/explore?left={"range":{"from":"2020-10-14T01:01:00.000Z","to":"2020-10-14T01:01:01.000Z"},"datasource":"loki1","queries":[{"expr":"{hostname=\\"hostname1\\"}","refId":""}]}` + `/explore?left=${encodeURIComponent( + '{"range":{"from":"2020-10-14T01:01:00.000Z","to":"2020-10-14T01:01:01.000Z"},"datasource":"loki1","queries":[{"expr":"{hostname=\\"hostname1\\"}","refId":""}]}' + )}` ); }); }); diff --git a/public/app/features/explore/utils/links.test.ts b/public/app/features/explore/utils/links.test.ts index 54334c8b605..dec2bf3f9ed 100644 --- a/public/app/features/explore/utils/links.test.ts +++ b/public/app/features/explore/utils/links.test.ts @@ -49,7 +49,9 @@ describe('getFieldLinksForExplore', () => { const links = getFieldLinksForExplore({ field, rowIndex: 0, splitOpenFn: splitfn, range }); expect(links[0].href).toBe( - '/explore?left={"range":{"from":"now-1h","to":"now"},"datasource":"test_ds","queries":[{"query":"query_1"}]}' + `/explore?left=${encodeURIComponent( + '{"range":{"from":"now-1h","to":"now"},"datasource":"test_ds","queries":[{"query":"query_1"}]}' + )}` ); expect(links[0].title).toBe('test_ds');