Populate RequestHandlerContext with start API only (#67579)
* use start API to populate request context * remove client creation from uiSettings service setup API * remove __internals.uiSettings * update ui_settings mixin tests
This commit is contained in:
parent
d431b3cf0b
commit
79a61d026f
11 changed files with 22 additions and 58 deletions
|
@ -352,7 +352,6 @@ export class LegacyService implements CoreService {
|
|||
uiPlugins: setupDeps.uiPlugins,
|
||||
elasticsearch: setupDeps.core.elasticsearch,
|
||||
rendering: setupDeps.core.rendering,
|
||||
uiSettings: setupDeps.core.uiSettings,
|
||||
savedObjectsClientProvider: startDeps.core.savedObjects.clientProvider,
|
||||
legacy: this.legacyInternals,
|
||||
},
|
||||
|
|
|
@ -247,21 +247,21 @@ export class Server {
|
|||
coreId,
|
||||
'core',
|
||||
async (context, req, res): Promise<RequestHandlerContext['core']> => {
|
||||
const savedObjectsClient = this.coreStart!.savedObjects.getScopedClient(req);
|
||||
const uiSettingsClient = coreSetup.uiSettings.asScopedToClient(savedObjectsClient);
|
||||
const coreStart = this.coreStart!;
|
||||
const savedObjectsClient = coreStart.savedObjects.getScopedClient(req);
|
||||
|
||||
return {
|
||||
savedObjects: {
|
||||
client: savedObjectsClient,
|
||||
typeRegistry: this.coreStart!.savedObjects.getTypeRegistry(),
|
||||
typeRegistry: coreStart.savedObjects.getTypeRegistry(),
|
||||
},
|
||||
elasticsearch: {
|
||||
legacy: {
|
||||
client: coreSetup.elasticsearch.dataClient.asScoped(req),
|
||||
client: coreStart.elasticsearch.legacy.client.asScoped(req),
|
||||
},
|
||||
},
|
||||
uiSettings: {
|
||||
client: uiSettingsClient,
|
||||
client: coreStart.uiSettings.asScopedToClient(savedObjectsClient),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
|
@ -84,11 +84,6 @@ export interface InternalUiSettingsServiceSetup {
|
|||
* @param settings
|
||||
*/
|
||||
register(settings: Record<string, UiSettingsParams>): void;
|
||||
/**
|
||||
* Creates uiSettings client with provided *scoped* saved objects client {@link IUiSettingsClient}
|
||||
* @param savedObjectsClient
|
||||
*/
|
||||
asScopedToClient(savedObjectsClient: SavedObjectsClientContract): IUiSettingsClient;
|
||||
}
|
||||
|
||||
/** @public */
|
||||
|
|
|
@ -46,11 +46,8 @@ const createClientMock = () => {
|
|||
const createSetupMock = () => {
|
||||
const mocked: jest.Mocked<InternalUiSettingsServiceSetup> = {
|
||||
register: jest.fn(),
|
||||
asScopedToClient: jest.fn(),
|
||||
};
|
||||
|
||||
mocked.asScopedToClient.mockReturnValue(createClientMock());
|
||||
|
||||
return mocked;
|
||||
};
|
||||
|
||||
|
|
|
@ -67,34 +67,6 @@ describe('uiSettings', () => {
|
|||
expect(setupDeps.savedObjects.registerType).toHaveBeenCalledWith(uiSettingsType);
|
||||
});
|
||||
|
||||
describe('#asScopedToClient', () => {
|
||||
it('passes saved object type "config" to UiSettingsClient', async () => {
|
||||
const setup = await service.setup(setupDeps);
|
||||
setup.asScopedToClient(savedObjectsClient);
|
||||
expect(MockUiSettingsClientConstructor).toBeCalledTimes(1);
|
||||
expect(MockUiSettingsClientConstructor.mock.calls[0][0].type).toBe('config');
|
||||
});
|
||||
|
||||
it('passes overrides to UiSettingsClient', async () => {
|
||||
const setup = await service.setup(setupDeps);
|
||||
setup.asScopedToClient(savedObjectsClient);
|
||||
expect(MockUiSettingsClientConstructor).toBeCalledTimes(1);
|
||||
expect(MockUiSettingsClientConstructor.mock.calls[0][0].overrides).toBe(overrides);
|
||||
expect(MockUiSettingsClientConstructor.mock.calls[0][0].overrides).toEqual(overrides);
|
||||
});
|
||||
|
||||
it('passes a copy of set defaults to UiSettingsClient', async () => {
|
||||
const setup = await service.setup(setupDeps);
|
||||
|
||||
setup.register(defaults);
|
||||
setup.asScopedToClient(savedObjectsClient);
|
||||
expect(MockUiSettingsClientConstructor).toBeCalledTimes(1);
|
||||
|
||||
expect(MockUiSettingsClientConstructor.mock.calls[0][0].defaults).toEqual(defaults);
|
||||
expect(MockUiSettingsClientConstructor.mock.calls[0][0].defaults).not.toBe(defaults);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#register', () => {
|
||||
it('throws if registers the same key twice', async () => {
|
||||
const setup = await service.setup(setupDeps);
|
||||
|
|
|
@ -65,7 +65,6 @@ export class UiSettingsService
|
|||
|
||||
return {
|
||||
register: this.register.bind(this),
|
||||
asScopedToClient: this.getScopedClientFactory(),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
1
src/legacy/server/kbn_server.d.ts
vendored
1
src/legacy/server/kbn_server.d.ts
vendored
|
@ -113,7 +113,6 @@ export interface KibanaCore {
|
|||
legacy: ILegacyInternals;
|
||||
rendering: LegacyServiceSetupDeps['core']['rendering'];
|
||||
uiPlugins: UiPlugins;
|
||||
uiSettings: LegacyServiceSetupDeps['core']['uiSettings'];
|
||||
savedObjectsClientProvider: LegacyServiceStartDeps['core']['savedObjects']['clientProvider'];
|
||||
};
|
||||
env: {
|
||||
|
|
|
@ -247,9 +247,10 @@ export function uiRenderMixin(kbnServer, server, config) {
|
|||
rendering,
|
||||
legacy,
|
||||
savedObjectsClientProvider: savedObjects,
|
||||
uiSettings: { asScopedToClient },
|
||||
} = kbnServer.newPlatform.__internals;
|
||||
const uiSettings = asScopedToClient(savedObjects.getClient(h.request));
|
||||
const uiSettings = kbnServer.newPlatform.start.core.uiSettings.asScopedToClient(
|
||||
savedObjects.getClient(h.request)
|
||||
);
|
||||
const vars = await legacy.getVars(app.getId(), h.request, {
|
||||
apmConfig: getApmConfig(app),
|
||||
...overrides,
|
||||
|
|
|
@ -59,6 +59,15 @@ describe('uiSettingsMixin()', () => {
|
|||
decorate: sinon.spy((type: keyof Decorators, name: string, value: any) => {
|
||||
decorations[type][name] = value;
|
||||
}),
|
||||
newPlatform: {
|
||||
setup: {
|
||||
core: {
|
||||
uiSettings: {
|
||||
register: sinon.stub(),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
// "promise" returned from kbnServer.ready()
|
||||
|
@ -70,13 +79,6 @@ describe('uiSettingsMixin()', () => {
|
|||
server,
|
||||
uiExports: { uiSettingDefaults },
|
||||
ready: sinon.stub().returns(readyPromise),
|
||||
newPlatform: {
|
||||
__internals: {
|
||||
uiSettings: {
|
||||
register: sinon.stub(),
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
uiSettingsMixin(kbnServer, server);
|
||||
|
@ -92,10 +94,10 @@ describe('uiSettingsMixin()', () => {
|
|||
afterEach(() => sandbox.restore());
|
||||
|
||||
it('passes uiSettingsDefaults to the new platform', () => {
|
||||
const { kbnServer } = setup();
|
||||
sinon.assert.calledOnce(kbnServer.newPlatform.__internals.uiSettings.register);
|
||||
const { server } = setup();
|
||||
sinon.assert.calledOnce(server.newPlatform.setup.core.uiSettings.register);
|
||||
sinon.assert.calledWithExactly(
|
||||
kbnServer.newPlatform.__internals.uiSettings.register,
|
||||
server.newPlatform.setup.core.uiSettings.register,
|
||||
uiSettingDefaults
|
||||
);
|
||||
});
|
||||
|
|
|
@ -37,7 +37,7 @@ export function uiSettingsMixin(kbnServer, server) {
|
|||
return acc;
|
||||
}, {});
|
||||
|
||||
kbnServer.newPlatform.__internals.uiSettings.register(mergedUiSettingDefaults);
|
||||
server.newPlatform.setup.core.uiSettings.register(mergedUiSettingDefaults);
|
||||
|
||||
server.decorate('server', 'uiSettingsServiceFactory', (options = {}) => {
|
||||
return uiSettingsServiceFactory(server, options);
|
||||
|
|
|
@ -32,5 +32,5 @@ export function uiSettingsServiceFactory(
|
|||
server: Legacy.Server,
|
||||
options: UiSettingsServiceFactoryOptions
|
||||
): IUiSettingsClient {
|
||||
return server.newPlatform.__internals.uiSettings.asScopedToClient(options.savedObjectsClient);
|
||||
return server.newPlatform.start.core.uiSettings.asScopedToClient(options.savedObjectsClient);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue