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:
Mikhail Shustov 2020-05-28 20:46:09 +03:00 committed by GitHub
parent d431b3cf0b
commit 79a61d026f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 22 additions and 58 deletions

View file

@ -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,
},

View file

@ -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),
},
};
}

View file

@ -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 */

View file

@ -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;
};

View file

@ -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);

View file

@ -65,7 +65,6 @@ export class UiSettingsService
return {
register: this.register.bind(this),
asScopedToClient: this.getScopedClientFactory(),
};
}

View file

@ -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: {

View file

@ -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,

View file

@ -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
);
});

View file

@ -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);

View file

@ -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);
}