Explore: Fix encoding of internal URLs (#36919)

* Encode internal explore url

* Fix tests

* Fix comma
pull/37104/head
Andrej Ocenas 4 years ago committed by GitHub
parent 8af83b8b78
commit 93b4cc7035
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      packages/grafana-data/src/field/fieldOverrides.test.ts
  2. 2
      packages/grafana-data/src/utils/dataLinks.test.ts
  3. 12
      packages/grafana-data/src/utils/dataLinks.ts
  4. 16
      public/app/features/explore/TraceView/createSpanLink.test.ts
  5. 4
      public/app/features/explore/utils/links.test.ts

@ -644,7 +644,7 @@ describe('getLinksSupplier', () => {
expect(links[0]).toEqual( expect(links[0]).toEqual(
expect.objectContaining({ expect.objectContaining({
title: 'testDS', title: 'testDS',
href: '/explore?left={"datasource":"testDS","queries":["12345"]}', href: `/explore?left=${encodeURIComponent('{"datasource":"testDS","queries":["12345"]}')}`,
onClick: undefined, onClick: undefined,
}) })
); );

@ -31,7 +31,7 @@ describe('mapInternalLinkToExplore', () => {
expect(link).toEqual( expect(link).toEqual(
expect.objectContaining({ expect.objectContaining({
title: 'dsName', title: 'dsName',
href: '/explore?left={"datasource":"dsName","queries":[{"query":"12344"}]}', href: `/explore?left=${encodeURIComponent('{"datasource":"dsName","queries":[{"query":"12344"}]}')}`,
onClick: undefined, onClick: undefined,
}) })
); );

@ -67,11 +67,13 @@ export function mapInternalLinkToExplore(options: LinkToExploreOptions): LinkMod
*/ */
function generateInternalHref<T extends DataQuery = any>(datasourceName: string, query: T, range: TimeRange): string { function generateInternalHref<T extends DataQuery = any>(datasourceName: string, query: T, range: TimeRange): string {
return locationUtil.assureBaseUrl( return locationUtil.assureBaseUrl(
`/explore?left=${serializeStateToUrlParam({ `/explore?left=${encodeURIComponent(
range: range.raw, serializeStateToUrlParam({
datasource: datasourceName, range: range.raw,
queries: [query], datasource: datasourceName,
})}` queries: [query],
})
)}`
); );
} }

@ -59,7 +59,9 @@ describe('createSpanLinkFactory', () => {
} as any); } as any);
expect(linkDef.href).toBe( 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); } as any);
expect(linkDef.href).toBe( 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); } as any);
expect(linkDef.href).toBe( 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); } as any);
expect(linkDef.href).toBe( 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":""}]}'
)}`
); );
}); });
}); });

@ -49,7 +49,9 @@ describe('getFieldLinksForExplore', () => {
const links = getFieldLinksForExplore({ field, rowIndex: 0, splitOpenFn: splitfn, range }); const links = getFieldLinksForExplore({ field, rowIndex: 0, splitOpenFn: splitfn, range });
expect(links[0].href).toBe( 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'); expect(links[0].title).toBe('test_ds');

Loading…
Cancel
Save