mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Navigation: Sign in button now works correctly when served under a sub path (#62504)
make sure getUrlForPartial always includes the basePath + unit tests
This commit is contained in:
parent
439dd062da
commit
fd2641a542
@ -719,17 +719,6 @@ exports[`better eslint`] = {
|
|||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
[0, 0, 0, "Do not use any type assertions.", "1"]
|
[0, 0, 0, "Do not use any type assertions.", "1"]
|
||||||
],
|
],
|
||||||
"packages/grafana-data/src/utils/location.test.ts:5381": [
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "3"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "4"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "5"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "6"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "7"],
|
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "8"]
|
|
||||||
],
|
|
||||||
"packages/grafana-data/src/utils/location.ts:5381": [
|
"packages/grafana-data/src/utils/location.ts:5381": [
|
||||||
[0, 0, 0, "Do not use any type assertions.", "0"],
|
[0, 0, 0, "Do not use any type assertions.", "0"],
|
||||||
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
import { Location } from 'history';
|
||||||
|
|
||||||
|
import { GrafanaConfig } from '../types';
|
||||||
|
|
||||||
import { locationUtil } from './location';
|
import { locationUtil } from './location';
|
||||||
|
|
||||||
describe('locationUtil', () => {
|
describe('locationUtil', () => {
|
||||||
@ -29,9 +33,9 @@ describe('locationUtil', () => {
|
|||||||
describe('when appSubUrl configured', () => {
|
describe('when appSubUrl configured', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
locationUtil.initialize({
|
locationUtil.initialize({
|
||||||
config: { appSubUrl: '/subUrl' } as any,
|
config: { appSubUrl: '/subUrl' } as GrafanaConfig,
|
||||||
getVariablesUrlParams: (() => {}) as any,
|
getVariablesUrlParams: jest.fn(),
|
||||||
getTimeRangeForUrl: (() => {}) as any,
|
getTimeRangeForUrl: jest.fn(),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
test('relative url', () => {
|
test('relative url', () => {
|
||||||
@ -65,9 +69,9 @@ describe('locationUtil', () => {
|
|||||||
describe('when appSubUrl not configured', () => {
|
describe('when appSubUrl not configured', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
locationUtil.initialize({
|
locationUtil.initialize({
|
||||||
config: {} as any,
|
config: {} as GrafanaConfig,
|
||||||
getVariablesUrlParams: (() => {}) as any,
|
getVariablesUrlParams: jest.fn(),
|
||||||
getTimeRangeForUrl: (() => {}) as any,
|
getTimeRangeForUrl: jest.fn(),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -115,12 +119,102 @@ describe('locationUtil', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('getUrlForPartial', () => {
|
||||||
|
const mockLocation: Location = {
|
||||||
|
hash: '',
|
||||||
|
pathname: '/',
|
||||||
|
search: '',
|
||||||
|
state: {},
|
||||||
|
};
|
||||||
|
describe('when appSubUrl is not configured', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
locationUtil.initialize({
|
||||||
|
config: {
|
||||||
|
appSubUrl: '',
|
||||||
|
} as GrafanaConfig,
|
||||||
|
getVariablesUrlParams: jest.fn(),
|
||||||
|
getTimeRangeForUrl: jest.fn(),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can add params', () => {
|
||||||
|
expect(locationUtil.getUrlForPartial(mockLocation, { forceLogin: 'true' })).toEqual('/?forceLogin=true');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can remove params using undefined', () => {
|
||||||
|
expect(
|
||||||
|
locationUtil.getUrlForPartial(
|
||||||
|
{
|
||||||
|
...mockLocation,
|
||||||
|
search: '?a=1',
|
||||||
|
},
|
||||||
|
{ a: undefined }
|
||||||
|
)
|
||||||
|
).toEqual('/');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can remove params using null', () => {
|
||||||
|
expect(
|
||||||
|
locationUtil.getUrlForPartial(
|
||||||
|
{
|
||||||
|
...mockLocation,
|
||||||
|
search: '?a=1',
|
||||||
|
},
|
||||||
|
{ a: null }
|
||||||
|
)
|
||||||
|
).toEqual('/');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when appSubUrl is configured', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
locationUtil.initialize({
|
||||||
|
config: {
|
||||||
|
appSubUrl: '/subpath',
|
||||||
|
} as GrafanaConfig,
|
||||||
|
getVariablesUrlParams: jest.fn(),
|
||||||
|
getTimeRangeForUrl: jest.fn(),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can add params', () => {
|
||||||
|
expect(locationUtil.getUrlForPartial(mockLocation, { forceLogin: 'true' })).toEqual(
|
||||||
|
'/subpath/?forceLogin=true'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can remove params using undefined', () => {
|
||||||
|
expect(
|
||||||
|
locationUtil.getUrlForPartial(
|
||||||
|
{
|
||||||
|
...mockLocation,
|
||||||
|
search: '?a=1',
|
||||||
|
},
|
||||||
|
{ a: undefined }
|
||||||
|
)
|
||||||
|
).toEqual('/subpath/');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can remove params using null', () => {
|
||||||
|
expect(
|
||||||
|
locationUtil.getUrlForPartial(
|
||||||
|
{
|
||||||
|
...mockLocation,
|
||||||
|
search: '?a=1',
|
||||||
|
},
|
||||||
|
{ a: null }
|
||||||
|
)
|
||||||
|
).toEqual('/subpath/');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('updateSearchParams', () => {
|
describe('updateSearchParams', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
locationUtil.initialize({
|
locationUtil.initialize({
|
||||||
config: {} as any,
|
config: {} as GrafanaConfig,
|
||||||
getVariablesUrlParams: (() => {}) as any,
|
getVariablesUrlParams: jest.fn(),
|
||||||
getTimeRangeForUrl: (() => {}) as any,
|
getTimeRangeForUrl: jest.fn(),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ const getUrlForPartial = (location: Location<any>, searchParamsToUpdate: Record<
|
|||||||
searchParams[key] = searchParamsToUpdate[key];
|
searchParams[key] = searchParamsToUpdate[key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return urlUtil.renderUrl(location.pathname, searchParams);
|
return assureBaseUrl(urlUtil.renderUrl(location.pathname, searchParams));
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user