mirror of
https://github.com/elastic/kibana.git
synced 2025-06-27 18:51:07 -04:00
[Http] Prevent the internal HttpService
being used in tests outside Core (#223238)
## Summary Objective: avoid exposing the entire API surface area of `HttpService` (and it's internal preboot/setup/start contracts) to test code outside core. * Refactor the `createHttpService -> createInternalHttpService` mock test helper moved to scoped folder `./src/core/server/integration_tests/utilities` * Create an "integration test ready" version of the original `createHttpService` for plugins to use from `@kbn/core-http-server-mocks` * Clean up some types * Refactor the 2 plugin test usages of the internal `HttpService` ### Notes * We have been exposing this surface area already in `src/core/packages/http/server-mocks/src/http_service.mock.ts`. But it seems to not have a adoption outside Core code... I wonder if we need a concept of `mock-internal`? * I don't think this is a **massive** issue, I just happened to realise this when [messing around](https://github.com/elastic/kibana/pull/222956) with an `HttpService` related refactor. Would be nice to not leak more information about internal code than necessary (it's clearly too late for that, but maybe we can improve the situation for HttpService a bit). --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
970cad1f18
commit
726908a913
63 changed files with 616 additions and 507 deletions
|
@ -18,4 +18,13 @@ export type {
|
|||
InternalHttpServiceSetupMock,
|
||||
InternalHttpServiceStartMock,
|
||||
} from './src/http_service.mock';
|
||||
export { createCoreContext, createHttpService, createConfigService } from './src/test_utils';
|
||||
export {
|
||||
createCoreContext,
|
||||
createHttpService,
|
||||
createConfigService,
|
||||
type HttpIntegrationTestService,
|
||||
type HttpIntegrationServicePrebootContractMock,
|
||||
type HttpIntegrationServiceSetupContractMock,
|
||||
type HttpIntegrationServiceStartContractMock,
|
||||
type HttpIntegrationServiceStopContractMock,
|
||||
} from './src/test_utils';
|
||||
|
|
|
@ -14,7 +14,10 @@ import { ByteSizeValue } from '@kbn/config-schema';
|
|||
import { Env } from '@kbn/config';
|
||||
import { getEnvOptions, configServiceMock } from '@kbn/config-mocks';
|
||||
import type { CoreContext } from '@kbn/core-base-server-internal';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { loggingSystemMock } from '@kbn/core-logging-server-mocks';
|
||||
import type { IRouter } from '@kbn/core-http-server';
|
||||
import {
|
||||
type HttpConfigType,
|
||||
type ExternalUrlConfigType,
|
||||
|
@ -125,21 +128,58 @@ export const createCoreContext = (overrides: Partial<CoreContext> = {}): CoreCon
|
|||
});
|
||||
|
||||
/**
|
||||
* Creates a concrete HttpService with a mocked context.
|
||||
* A mock of the HttpService that can be used in tests.
|
||||
*
|
||||
* @remarks intended to mirror the pubilc HTTP contracts where possible to avoid
|
||||
* drifting or leaking too many internal details of the actual HttpService.
|
||||
*/
|
||||
export const createHttpService = ({
|
||||
buildNum,
|
||||
...overrides
|
||||
}: Partial<CoreContext & { buildNum: number }> = {}): HttpService => {
|
||||
const ctx = createCoreContext(overrides);
|
||||
if (buildNum !== undefined) {
|
||||
ctx.env = {
|
||||
...ctx.env,
|
||||
packageInfo: {
|
||||
...ctx.env.packageInfo,
|
||||
buildNum,
|
||||
},
|
||||
};
|
||||
}
|
||||
return new HttpService(ctx);
|
||||
export interface HttpIntegrationTestService {
|
||||
preboot: () => Promise<void>;
|
||||
setup: () => Promise<{ createRouter: (path: string) => IRouter<any>; server: { listener: any } }>;
|
||||
start: () => Promise<void>;
|
||||
stop: () => Promise<void>;
|
||||
}
|
||||
|
||||
export type HttpIntegrationServicePrebootContractMock = Awaited<
|
||||
ReturnType<HttpIntegrationTestService['preboot']>
|
||||
>;
|
||||
|
||||
export type HttpIntegrationServiceSetupContractMock = Awaited<
|
||||
ReturnType<HttpIntegrationTestService['setup']>
|
||||
>;
|
||||
|
||||
export type HttpIntegrationServiceStartContractMock = Awaited<
|
||||
ReturnType<HttpIntegrationTestService['start']>
|
||||
>;
|
||||
|
||||
export type HttpIntegrationServiceStopContractMock = Awaited<
|
||||
ReturnType<HttpIntegrationTestService['stop']>
|
||||
>;
|
||||
|
||||
/**
|
||||
* Creates an HTTP service instance for external services to test against.
|
||||
* @public
|
||||
*/
|
||||
export const createHttpService = (): HttpIntegrationTestService => {
|
||||
const ctx = createCoreContext();
|
||||
const svc = new HttpService(ctx);
|
||||
return {
|
||||
preboot: async () => {
|
||||
await svc.preboot({
|
||||
context: contextServiceMock.createPrebootContract(),
|
||||
});
|
||||
},
|
||||
setup: () => {
|
||||
return svc.setup({
|
||||
context: contextServiceMock.createSetupContract(),
|
||||
executionContext: executionContextServiceMock.createInternalSetupContract(),
|
||||
});
|
||||
},
|
||||
start: async () => {
|
||||
await svc.start();
|
||||
},
|
||||
stop: async () => {
|
||||
await svc.stop();
|
||||
},
|
||||
};
|
||||
};
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
"@kbn/repo-info",
|
||||
"@kbn/config",
|
||||
"@kbn/core-base-server-internal",
|
||||
"@kbn/core-http-context-server-mocks",
|
||||
"@kbn/core-execution-context-server-mocks",
|
||||
],
|
||||
"exclude": [
|
||||
"target/**/*",
|
||||
|
|
|
@ -7,6 +7,6 @@
|
|||
* License v3.0 only", or the "Server Side Public License, v 1".
|
||||
*/
|
||||
|
||||
export { setupServer } from './src/setup_server';
|
||||
export { setupServer, type SetupServerReturn } from './src/setup_server';
|
||||
export { createExportableType } from './src/create_exportable_type';
|
||||
export { createHiddenTypeVariants } from './src/create_hidden_type_variants';
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { ContextService } from '@kbn/core-http-context-server-internal';
|
||||
import { createHttpService, createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks';
|
||||
import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks';
|
||||
|
@ -43,8 +44,7 @@ function createCoreServerRequestHandlerContextMock() {
|
|||
export const setupServer = async (coreId: symbol = defaultCoreId) => {
|
||||
const coreContext = createCoreContext({ coreId });
|
||||
const contextService = new ContextService(coreContext);
|
||||
|
||||
const server = createHttpService(coreContext);
|
||||
const server = new HttpService(coreContext);
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
const httpSetup = await server.setup({
|
||||
context: contextService.setup({ pluginDependencies: new Map() }),
|
||||
|
@ -57,8 +57,19 @@ export const setupServer = async (coreId: symbol = defaultCoreId) => {
|
|||
});
|
||||
|
||||
return {
|
||||
server,
|
||||
httpSetup,
|
||||
server: {
|
||||
listener: httpSetup.server.listener,
|
||||
start: async () => {
|
||||
await server.start();
|
||||
},
|
||||
stop: async () => {
|
||||
await server.stop();
|
||||
},
|
||||
},
|
||||
createRouter: httpSetup.createRouter.bind(httpSetup),
|
||||
registerRouteHandlerContext: httpSetup.registerRouteHandlerContext.bind(httpSetup),
|
||||
handlerContext,
|
||||
};
|
||||
};
|
||||
|
||||
export type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
|
|
@ -21,7 +21,8 @@
|
|||
"@kbn/core-saved-objects-base-server-mocks",
|
||||
"@kbn/core-saved-objects-server",
|
||||
"@kbn/core-saved-objects-server-mocks",
|
||||
"@kbn/core-ui-settings-server-mocks"
|
||||
"@kbn/core-ui-settings-server-mocks",
|
||||
"@kbn/core-http-server-internal"
|
||||
],
|
||||
"exclude": [
|
||||
"target/**/*",
|
||||
|
|
|
@ -14,14 +14,14 @@ import { getEnvOptions } from '@kbn/config-mocks';
|
|||
import { loggingSystemMock } from '@kbn/core-logging-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import type { CapabilitiesSetup } from '@kbn/core-capabilities-server';
|
||||
import { CapabilitiesService } from '@kbn/core-capabilities-server-internal';
|
||||
import {
|
||||
HttpService,
|
||||
InternalHttpServicePreboot,
|
||||
InternalHttpServiceSetup,
|
||||
} from '@kbn/core-http-server-internal';
|
||||
import { createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import type { CapabilitiesSetup } from '@kbn/core-capabilities-server';
|
||||
import { CapabilitiesService } from '@kbn/core-capabilities-server-internal';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
const coreId = Symbol('core');
|
||||
|
||||
|
@ -36,7 +36,7 @@ describe('CapabilitiesService', () => {
|
|||
let serviceSetup: CapabilitiesSetup;
|
||||
|
||||
beforeEach(async () => {
|
||||
server = createHttpService();
|
||||
server = createInternalHttpService();
|
||||
httpPreboot = await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
httpSetup = await server.setup({
|
||||
context: contextServiceMock.createSetupContract(),
|
||||
|
|
|
@ -14,9 +14,9 @@ import { loggingSystemMock } from '@kbn/core-logging-server-mocks';
|
|||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import type { IRouter } from '@kbn/core-http-server';
|
||||
import { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import { registerRouteForBundle, FileHashCache } from '@kbn/core-apps-server-internal';
|
||||
import { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
const buildHash = 'buildHash';
|
||||
const fooPluginFixture = resolve(__dirname, './__fixtures__/plugin/foo');
|
||||
|
@ -32,7 +32,7 @@ describe('bundle routes', () => {
|
|||
logger = loggingSystemMock.create();
|
||||
fileHashCache = new FileHashCache();
|
||||
|
||||
server = createHttpService({ logger });
|
||||
server = createInternalHttpService({ logger });
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
});
|
||||
|
||||
|
|
|
@ -15,10 +15,10 @@ import { executionContextServiceMock } from '@kbn/core-execution-context-server-
|
|||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { ensureRawRequest } from '@kbn/core-http-router-server-internal';
|
||||
import { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import { Env } from '@kbn/config';
|
||||
import { REPO_ROOT } from '@kbn/repo-info';
|
||||
import { getEnvOptions } from '@kbn/config-mocks';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
let server: HttpService;
|
||||
|
||||
|
@ -35,7 +35,7 @@ const kibanaVersion = Env.createDefault(REPO_ROOT, getEnvOptions()).packageInfo.
|
|||
|
||||
beforeEach(async () => {
|
||||
logger = loggingSystemMock.create();
|
||||
server = createHttpService({ logger });
|
||||
server = createInternalHttpService({ logger });
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
});
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import supertest from 'supertest';
|
|||
import { kibanaPackageJson } from '@kbn/repo-info';
|
||||
import type { IRouter, RouteRegistrar } from '@kbn/core-http-server';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { createConfigService, createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import { createConfigService } from '@kbn/core-http-server-mocks';
|
||||
import { HttpService, HttpServerSetup } from '@kbn/core-http-server-internal';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { schema } from '@kbn/config-schema';
|
||||
|
@ -19,6 +19,7 @@ import { IConfigServiceMock } from '@kbn/config-mocks';
|
|||
import { Logger } from '@kbn/logging';
|
||||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { KIBANA_BUILD_NR_HEADER } from '@kbn/core-http-common';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
const actualVersion = kibanaPackageJson.version;
|
||||
const versionHeader = 'kbn-version';
|
||||
|
@ -63,7 +64,7 @@ describe('core lifecycle handlers', () => {
|
|||
beforeEach(async () => {
|
||||
const configService = createConfigService(testConfig);
|
||||
logger = loggerMock.create();
|
||||
server = createHttpService({ configService, logger });
|
||||
server = createInternalHttpService({ configService, logger });
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
const serverSetup = await server.setup(setupDeps);
|
||||
router = serverSetup.createRouter('/');
|
||||
|
@ -270,7 +271,7 @@ describe('core lifecycle handlers', () => {
|
|||
restrictInternalApis: true,
|
||||
},
|
||||
});
|
||||
server = createHttpService({ configService });
|
||||
server = createInternalHttpService({ configService });
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
const serverSetup = await server.setup(setupDeps);
|
||||
router = serverSetup.createRouter('/');
|
||||
|
@ -348,7 +349,7 @@ describe('core lifecycle handlers with restrict internal routes enforced', () =>
|
|||
beforeEach(async () => {
|
||||
logger = loggerMock.create();
|
||||
const configService = createConfigService({ server: { restrictInternalApis: true } });
|
||||
server = createHttpService({ configService, logger });
|
||||
server = createInternalHttpService({ configService, logger });
|
||||
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
const serverSetup = await server.setup(setupDeps);
|
||||
|
@ -427,7 +428,7 @@ describe('core lifecycle handlers with no strict client version check', () => {
|
|||
},
|
||||
},
|
||||
});
|
||||
server = createHttpService({ configService, logger, buildNum: 1234 });
|
||||
server = createInternalHttpService({ configService, logger, buildNum: 1234 });
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
const serverSetup = await server.setup(setupDeps);
|
||||
router = serverSetup.createRouter('/');
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
import supertest from 'supertest';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { createConfigService, createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import { createConfigService } from '@kbn/core-http-server-mocks';
|
||||
import type {
|
||||
InternalContextPreboot,
|
||||
InternalContextSetup,
|
||||
|
@ -18,6 +18,7 @@ import type {
|
|||
import { InternalExecutionContextSetup } from '@kbn/core-execution-context-server-internal';
|
||||
import { IRouter } from '@kbn/core-http-server';
|
||||
import { schema } from '@kbn/config-schema';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
let prebootDeps: {
|
||||
context: jest.Mocked<InternalContextPreboot>;
|
||||
|
@ -37,7 +38,7 @@ beforeEach(async () => {
|
|||
};
|
||||
});
|
||||
|
||||
let httpService: ReturnType<typeof createHttpService>;
|
||||
let httpService: ReturnType<typeof createInternalHttpService>;
|
||||
type ConfigServiceArgs = Parameters<typeof createConfigService>[0];
|
||||
async function startService(
|
||||
args: {
|
||||
|
@ -45,7 +46,7 @@ async function startService(
|
|||
createRoutes?: (getRouter: (pluginId?: symbol) => IRouter) => void;
|
||||
} = {}
|
||||
) {
|
||||
httpService = createHttpService({
|
||||
httpService = createInternalHttpService({
|
||||
configService: createConfigService(args.config),
|
||||
});
|
||||
await httpService.preboot(prebootDeps);
|
||||
|
|
|
@ -12,8 +12,8 @@ import supertest from 'supertest';
|
|||
import { loggingSystemMock } from '@kbn/core-logging-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
let server: HttpService;
|
||||
const prebootDeps = {
|
||||
|
@ -25,7 +25,7 @@ const setupDeps = {
|
|||
};
|
||||
|
||||
beforeEach(async () => {
|
||||
server = createHttpService({ logger: loggingSystemMock.create() });
|
||||
server = createInternalHttpService({ logger: loggingSystemMock.create() });
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
|
|
|
@ -15,9 +15,9 @@ import supertest from 'supertest';
|
|||
import { loggingSystemMock } from '@kbn/core-logging-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import type { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import { schema } from '@kbn/config-schema';
|
||||
import { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
let server: HttpService;
|
||||
|
||||
|
@ -32,7 +32,7 @@ const setupDeps = {
|
|||
beforeEach(async () => {
|
||||
logger = loggingSystemMock.create();
|
||||
|
||||
server = createHttpService({ logger });
|
||||
server = createInternalHttpService({ logger });
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
});
|
||||
|
||||
|
|
|
@ -15,10 +15,10 @@ import supertest from 'supertest';
|
|||
import { loggingSystemMock } from '@kbn/core-logging-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import type { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { ensureRawRequest } from '@kbn/core-http-router-server-internal';
|
||||
import { createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { inspect } from 'util';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
let server: HttpService;
|
||||
|
||||
|
@ -33,7 +33,7 @@ const setupDeps = {
|
|||
beforeEach(async () => {
|
||||
logger = loggingSystemMock.create();
|
||||
|
||||
server = createHttpService({ logger });
|
||||
server = createInternalHttpService({ logger });
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
});
|
||||
|
||||
|
|
|
@ -19,10 +19,10 @@ import { loggingSystemMock } from '@kbn/core-logging-server-mocks';
|
|||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { Router } from '@kbn/core-http-router-server-internal';
|
||||
import { createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import type { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { createTestEnv, getEnvOptions } from '@kbn/config-mocks';
|
||||
import { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
const options = getEnvOptions();
|
||||
options.cliArgs.dev = false;
|
||||
|
@ -39,7 +39,7 @@ const setupDeps = {
|
|||
|
||||
beforeEach(async () => {
|
||||
logger = loggingSystemMock.create();
|
||||
server = createHttpService({ logger });
|
||||
server = createInternalHttpService({ logger });
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
});
|
||||
|
||||
|
|
|
@ -15,11 +15,12 @@ import { schema } from '@kbn/config-schema';
|
|||
import { loggingSystemMock } from '@kbn/core-logging-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { createHttpService, createConfigService } from '@kbn/core-http-server-mocks';
|
||||
import { createConfigService } from '@kbn/core-http-server-mocks';
|
||||
import type { HttpConfigType, HttpService } from '@kbn/core-http-server-internal';
|
||||
import type { IRouter } from '@kbn/core-http-server';
|
||||
import type { CliArgs } from '@kbn/config';
|
||||
import { ELASTIC_HTTP_VERSION_QUERY_PARAM } from '@kbn/core-http-common';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
let server: HttpService;
|
||||
let logger: ReturnType<typeof loggingSystemMock.create>;
|
||||
|
@ -43,7 +44,7 @@ describe('Routing versioned requests', () => {
|
|||
options.useVersionResolutionStrategyForInternalPaths ?? [],
|
||||
},
|
||||
};
|
||||
server = createHttpService({
|
||||
server = createInternalHttpService({
|
||||
logger,
|
||||
env: createTestEnv({ envOptions: getEnvOptions({ cliArgs }) }),
|
||||
configService: createConfigService({
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
import supertest from 'supertest';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import { loggingSystemMock } from '@kbn/core-logging-browser-mocks';
|
||||
import { Server } from '@hapi/hapi';
|
||||
import { MetricsService } from '@kbn/core-metrics-server-internal';
|
||||
|
@ -19,15 +18,16 @@ import { REPO_ROOT } from '@kbn/repo-info';
|
|||
import { configServiceMock, getEnvOptions } from '@kbn/config-mocks';
|
||||
import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks';
|
||||
import moment from 'moment';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
describe('GET /api/_elu_load', () => {
|
||||
let logger: ReturnType<typeof loggingSystemMock.create>;
|
||||
let server: ReturnType<typeof createHttpService>;
|
||||
let server: ReturnType<typeof createInternalHttpService>;
|
||||
let listener: Server['listener'];
|
||||
let service: MetricsService;
|
||||
beforeEach(async () => {
|
||||
logger = loggingSystemMock.create();
|
||||
server = createHttpService({ logger });
|
||||
server = createInternalHttpService({ logger });
|
||||
service = new MetricsService({
|
||||
coreId: Symbol('core'),
|
||||
env: Env.createDefault(REPO_ROOT, getEnvOptions()),
|
||||
|
|
|
@ -11,13 +11,13 @@ import { BehaviorSubject, Subject } from 'rxjs';
|
|||
import { take, filter } from 'rxjs';
|
||||
import supertest from 'supertest';
|
||||
import { Server as HapiServer } from '@hapi/hapi';
|
||||
import { createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import type { IRouter } from '@kbn/core-http-server';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import type { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { ServerMetricsCollector } from '@kbn/core-metrics-collectors-server-internal';
|
||||
import { setTimeout as setTimeoutPromise } from 'timers/promises';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
describe('ServerMetricsCollector', () => {
|
||||
let server: HttpService;
|
||||
|
@ -29,7 +29,7 @@ describe('ServerMetricsCollector', () => {
|
|||
const sendGet = (path: string) => supertest(hapiServer.listener).get(path);
|
||||
|
||||
beforeEach(async () => {
|
||||
server = createHttpService();
|
||||
server = createInternalHttpService();
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
const contextSetup = contextServiceMock.createSetupContract();
|
||||
const httpSetup = await server.setup({
|
||||
|
|
|
@ -14,14 +14,15 @@ import { getEnvOptions } from '@kbn/config-mocks';
|
|||
import { loggingSystemMock } from '@kbn/core-logging-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { createConfigService } from '@kbn/core-http-server-mocks';
|
||||
import {
|
||||
HttpService,
|
||||
InternalHttpServicePreboot,
|
||||
InternalHttpServiceSetup,
|
||||
} from '@kbn/core-http-server-internal';
|
||||
import { createConfigService, createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import { PricingService } from '@kbn/core-pricing-server-internal';
|
||||
import type { PricingProductFeature, PricingProduct } from '@kbn/core-pricing-common';
|
||||
import { createInternalHttpService } from '../utilities';
|
||||
|
||||
const coreId = Symbol('core');
|
||||
|
||||
|
@ -38,7 +39,7 @@ describe('PricingService', () => {
|
|||
let serviceSetup: Awaited<ReturnType<PricingService['setup']>>;
|
||||
|
||||
beforeEach(async () => {
|
||||
server = createHttpService();
|
||||
server = createInternalHttpService();
|
||||
httpPreboot = await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
httpSetup = await server.setup({
|
||||
context: contextServiceMock.createSetupContract(),
|
||||
|
|
|
@ -19,12 +19,14 @@ import {
|
|||
registerBulkCreateRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
} from '@kbn/core-saved-objects-server-internal';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from '../routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-from-http', hide: false, hideFromHttpApis: true },
|
||||
|
@ -32,13 +34,13 @@ const testTypes = [
|
|||
|
||||
describe('POST /api/saved_objects/_bulk_create with allowApiAccess true', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
savedObjectsClient.bulkCreate.mockResolvedValue({ saved_objects: [] });
|
||||
|
||||
|
@ -48,8 +50,7 @@ describe('POST /api/saved_objects/_bulk_create with allowApiAccess true', () =>
|
|||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsBulkCreate.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -73,7 +74,7 @@ describe('POST /api/saved_objects/_bulk_create with allowApiAccess true', () =>
|
|||
});
|
||||
|
||||
it('returns with status 200 when a type is hidden from the HTTP APIs', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_create?overwrite=true')
|
||||
.send([
|
||||
{
|
||||
|
@ -92,7 +93,7 @@ describe('POST /api/saved_objects/_bulk_create with allowApiAccess true', () =>
|
|||
migrationVersionCompatibility: 'compatible',
|
||||
overwrite: true,
|
||||
});
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_create')
|
||||
.send([
|
||||
{
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerBulkDeleteRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from '../routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-from-http', hide: false, hideFromHttpApis: true },
|
||||
|
@ -31,13 +33,13 @@ const testTypes = [
|
|||
|
||||
describe('POST /api/saved_objects/_bulk_delete with allowApiAccess as true', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
|
||||
savedObjectsClient.bulkDelete.mockResolvedValue({
|
||||
|
@ -50,8 +52,7 @@ describe('POST /api/saved_objects/_bulk_delete with allowApiAccess as true', ()
|
|||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsBulkDelete.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -77,7 +78,7 @@ describe('POST /api/saved_objects/_bulk_delete with allowApiAccess as true', ()
|
|||
});
|
||||
|
||||
it('returns with status 200 when a type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_delete')
|
||||
.send([
|
||||
{
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerBulkGetRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from '../routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-from-http', hide: false, hideFromHttpApis: true },
|
||||
|
@ -31,13 +33,13 @@ const testTypes = [
|
|||
|
||||
describe('POST /api/saved_objects/_bulk_get with allowApiAccess true', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
|
||||
savedObjectsClient.bulkGet.mockResolvedValue({
|
||||
|
@ -49,8 +51,7 @@ describe('POST /api/saved_objects/_bulk_get with allowApiAccess true', () => {
|
|||
.map((typeDesc) => createHiddenTypeVariants(typeDesc))
|
||||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsBulkGet.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -75,7 +76,7 @@ describe('POST /api/saved_objects/_bulk_get with allowApiAccess true', () => {
|
|||
});
|
||||
|
||||
it('returns with status 200 when a type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_get')
|
||||
.send([
|
||||
{
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
SetupServerReturn,
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerBulkResolveRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from '../routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-from-http', hide: false, hideFromHttpApis: true },
|
||||
|
@ -31,13 +33,13 @@ const testTypes = [
|
|||
|
||||
describe('POST /api/saved_objects/_bulk_resolve with allowApiAccess true', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
|
||||
savedObjectsClient.bulkResolve.mockResolvedValue({
|
||||
|
@ -50,8 +52,7 @@ describe('POST /api/saved_objects/_bulk_resolve with allowApiAccess true', () =>
|
|||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsBulkResolve.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -76,7 +77,7 @@ describe('POST /api/saved_objects/_bulk_resolve with allowApiAccess true', () =>
|
|||
});
|
||||
|
||||
it('returns with status 200 when a type is hidden from the HTTP APIs', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_resolve')
|
||||
.send([
|
||||
{
|
||||
|
|
|
@ -13,7 +13,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerBulkUpdateRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -21,7 +25,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from '../routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
const testTypes = [
|
||||
{ name: 'visualization', hide: false },
|
||||
{ name: 'dashboard', hide: false },
|
||||
|
@ -31,20 +34,19 @@ const testTypes = [
|
|||
|
||||
describe('PUT /api/saved_objects/_bulk_update with allowApiAccess true', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
handlerContext.savedObjects.typeRegistry.getType.mockImplementation((typename: string) => {
|
||||
return testTypes
|
||||
.map((typeDesc) => createHiddenTypeVariants(typeDesc))
|
||||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsBulkUpdate.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -69,7 +71,7 @@ describe('PUT /api/saved_objects/_bulk_update with allowApiAccess true', () => {
|
|||
});
|
||||
|
||||
it('uses config option allowHttpApiAccess to grant hiddenFromHttpApis type access', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.put('/api/saved_objects/_bulk_update')
|
||||
.send([
|
||||
{
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { setupServer, createHiddenTypeVariants } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
setupServer,
|
||||
createHiddenTypeVariants,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerCreateRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from '../routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-type', hide: true },
|
||||
|
@ -31,7 +33,7 @@ const testTypes = [
|
|||
];
|
||||
describe('POST /api/saved_objects/{type} with allowApiAccess true', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -46,12 +48,11 @@ describe('POST /api/saved_objects/{type} with allowApiAccess true', () => {
|
|||
};
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
savedObjectsClient.create.mockImplementation(() => Promise.resolve(clientResponse));
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsCreate.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -81,7 +82,7 @@ describe('POST /api/saved_objects/{type} with allowApiAccess true', () => {
|
|||
});
|
||||
|
||||
it('returns with status 200 when a type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/hidden-from-http')
|
||||
.send({
|
||||
attributes: {
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerDeleteRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from '../routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-type', hide: true },
|
||||
|
@ -32,13 +34,13 @@ const testTypes = [
|
|||
|
||||
describe('DELETE /api/saved_objects/{type}/{id} with allowApiAccess true', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.getClient();
|
||||
handlerContext.savedObjects.getClient = jest.fn().mockImplementation(() => savedObjectsClient);
|
||||
handlerContext.savedObjects.typeRegistry.getType.mockImplementation((typename: string) => {
|
||||
|
@ -47,8 +49,7 @@ describe('DELETE /api/saved_objects/{type}/{id} with allowApiAccess true', () =>
|
|||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsDelete.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -72,14 +73,14 @@ describe('DELETE /api/saved_objects/{type}/{id} with allowApiAccess true', () =>
|
|||
});
|
||||
|
||||
it('returns with status 400 if a type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.delete('/api/saved_objects/hidden-from-http/hiddenId')
|
||||
.expect(200);
|
||||
expect(result.body).toEqual({});
|
||||
});
|
||||
|
||||
it('returns with status 400 if a type is hidden from the HTTP APIs with `force` option', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.delete('/api/saved_objects/hidden-from-http/hiddenId')
|
||||
.query({ force: true })
|
||||
.expect(200);
|
||||
|
|
|
@ -15,7 +15,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import {
|
||||
registerFindRoute,
|
||||
|
@ -23,8 +27,6 @@ import {
|
|||
} from '@kbn/core-saved-objects-server-internal';
|
||||
import { deprecationMock, setupConfig } from '../routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'visualization', hide: false },
|
||||
|
@ -36,7 +38,7 @@ const testTypes = [
|
|||
];
|
||||
describe('GET /api/saved_objects/_find with allowApiAccess true', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -49,7 +51,7 @@ describe('GET /api/saved_objects/_find with allowApiAccess true', () => {
|
|||
};
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
|
||||
handlerContext.savedObjects.typeRegistry.getType.mockImplementation((typename: string) => {
|
||||
return testTypes
|
||||
|
@ -61,8 +63,7 @@ describe('GET /api/saved_objects/_find with allowApiAccess true', () => {
|
|||
|
||||
savedObjectsClient.find.mockResolvedValue(clientResponse);
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsFind.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -94,7 +95,7 @@ describe('GET /api/saved_objects/_find with allowApiAccess true', () => {
|
|||
page: 0,
|
||||
saved_objects: [],
|
||||
};
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=hidden-from-http')
|
||||
.expect(200);
|
||||
|
||||
|
@ -108,7 +109,7 @@ describe('GET /api/saved_objects/_find with allowApiAccess true', () => {
|
|||
page: 0,
|
||||
saved_objects: [],
|
||||
};
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=hidden-type')
|
||||
.expect(200);
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
import supertest from 'supertest';
|
||||
import { ContextService } from '@kbn/core-http-context-server-internal';
|
||||
import type { HttpService, InternalHttpServiceSetup } from '@kbn/core-http-server-internal';
|
||||
import { createHttpService, createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import { createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import type { ICoreUsageStatsClient } from '@kbn/core-usage-data-base-server-internal';
|
||||
|
@ -18,13 +18,14 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { contextServiceMock, coreMock } from '../../../../mocks';
|
||||
import {
|
||||
registerGetRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
} from '@kbn/core-saved-objects-server-internal';
|
||||
import { createHiddenTypeVariants } from '@kbn/core-test-helpers-test-utils';
|
||||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { contextServiceMock, coreMock } from '../../../../mocks';
|
||||
import { createInternalHttpService } from '../../../utilities';
|
||||
import { deprecationMock, setupConfig } from '../routes_test_utils';
|
||||
|
||||
const coreId = Symbol('core');
|
||||
|
@ -43,7 +44,7 @@ describe('GET /api/saved_objects/{type}/{id} with allowApiAccess true', () => {
|
|||
|
||||
beforeEach(async () => {
|
||||
const coreContext = createCoreContext({ coreId });
|
||||
server = createHttpService(coreContext);
|
||||
server = createInternalHttpService(coreContext);
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
|
||||
const contextService = new ContextService(coreContext);
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
import supertest from 'supertest';
|
||||
import { ContextService } from '@kbn/core-http-context-server-internal';
|
||||
import type { HttpService, InternalHttpServiceSetup } from '@kbn/core-http-server-internal';
|
||||
import { createHttpService, createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import { createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks';
|
||||
import type { ICoreUsageStatsClient } from '@kbn/core-usage-data-base-server-internal';
|
||||
import {
|
||||
|
@ -18,13 +18,14 @@ import {
|
|||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock, coreMock } from '../../../../mocks';
|
||||
import {
|
||||
registerResolveRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
} from '@kbn/core-saved-objects-server-internal';
|
||||
import { createHiddenTypeVariants } from '@kbn/core-test-helpers-test-utils';
|
||||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { contextServiceMock, coreMock } from '../../../../mocks';
|
||||
import { createInternalHttpService } from '../../../utilities';
|
||||
import { deprecationMock, setupConfig } from '../routes_test_utils';
|
||||
|
||||
const coreId = Symbol('core');
|
||||
|
@ -44,7 +45,7 @@ describe('GET /api/saved_objects/resolve/{type}/{id} with allowApiAccess true',
|
|||
|
||||
beforeEach(async () => {
|
||||
const coreContext = createCoreContext({ coreId });
|
||||
server = createHttpService(coreContext);
|
||||
server = createInternalHttpService(coreContext);
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
|
||||
const contextService = new ContextService(coreContext);
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerUpdateRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from '../routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-type', hide: true },
|
||||
|
@ -32,13 +34,13 @@ const testTypes = [
|
|||
|
||||
describe('PUT /api/saved_objects/{type}/{id?} with allowApiAccess true', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
|
||||
handlerContext.savedObjects.typeRegistry.getType.mockImplementation((typename: string) => {
|
||||
|
@ -47,8 +49,7 @@ describe('PUT /api/saved_objects/{type}/{id?} with allowApiAccess true', () => {
|
|||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsUpdate.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -73,7 +74,7 @@ describe('PUT /api/saved_objects/{type}/{id?} with allowApiAccess true', () => {
|
|||
});
|
||||
|
||||
it('returns with status 200 for types hidden from the HTTP APIs', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.put('/api/saved_objects/hidden-from-http/hiddenId')
|
||||
.send({
|
||||
attributes: { title: 'does not matter' },
|
||||
|
|
|
@ -19,12 +19,14 @@ import {
|
|||
registerBulkCreateRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
} from '@kbn/core-saved-objects-server-internal';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from './routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-from-http', hide: false, hideFromHttpApis: true },
|
||||
|
@ -32,7 +34,7 @@ const testTypes = [
|
|||
|
||||
describe('POST /api/saved_objects/_bulk_create', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -40,7 +42,7 @@ describe('POST /api/saved_objects/_bulk_create', () => {
|
|||
let registrationSpy: jest.SpyInstance;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
savedObjectsClient.bulkCreate.mockResolvedValue({ saved_objects: [] });
|
||||
|
||||
|
@ -50,8 +52,7 @@ describe('POST /api/saved_objects/_bulk_create', () => {
|
|||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsBulkCreate.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -93,7 +94,7 @@ describe('POST /api/saved_objects/_bulk_create', () => {
|
|||
};
|
||||
savedObjectsClient.bulkCreate.mockResolvedValue(clientResponse);
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_create')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -134,7 +135,7 @@ describe('POST /api/saved_objects/_bulk_create', () => {
|
|||
},
|
||||
];
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_create')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send(docs)
|
||||
|
@ -146,7 +147,7 @@ describe('POST /api/saved_objects/_bulk_create', () => {
|
|||
});
|
||||
|
||||
it('passes along the overwrite option', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_create?overwrite=true')
|
||||
.send([
|
||||
{
|
||||
|
@ -166,7 +167,7 @@ describe('POST /api/saved_objects/_bulk_create', () => {
|
|||
});
|
||||
|
||||
it('returns with status 400 when a type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_create')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -186,7 +187,7 @@ describe('POST /api/saved_objects/_bulk_create', () => {
|
|||
});
|
||||
|
||||
it('logs a warning message when called', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_create')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -204,7 +205,7 @@ describe('POST /api/saved_objects/_bulk_create', () => {
|
|||
});
|
||||
|
||||
it('passes deprecation config to the router arguments', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_create')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerBulkDeleteRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from './routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-from-http', hide: false, hideFromHttpApis: true },
|
||||
|
@ -31,7 +33,7 @@ const testTypes = [
|
|||
|
||||
describe('POST /api/saved_objects/_bulk_delete', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -39,7 +41,7 @@ describe('POST /api/saved_objects/_bulk_delete', () => {
|
|||
let registrationSpy: jest.SpyInstance;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
|
||||
savedObjectsClient.bulkDelete.mockResolvedValue({
|
||||
|
@ -52,8 +54,7 @@ describe('POST /api/saved_objects/_bulk_delete', () => {
|
|||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsBulkDelete.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -92,7 +93,7 @@ describe('POST /api/saved_objects/_bulk_delete', () => {
|
|||
};
|
||||
savedObjectsClient.bulkDelete.mockImplementation(() => Promise.resolve(clientResponse));
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_delete')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -118,7 +119,7 @@ describe('POST /api/saved_objects/_bulk_delete', () => {
|
|||
},
|
||||
];
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_delete')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send(docs)
|
||||
|
@ -130,7 +131,7 @@ describe('POST /api/saved_objects/_bulk_delete', () => {
|
|||
});
|
||||
|
||||
it('returns with status 400 when a type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_delete')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -144,7 +145,7 @@ describe('POST /api/saved_objects/_bulk_delete', () => {
|
|||
});
|
||||
|
||||
it('returns with status 400 with `force` when a type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_delete')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -159,7 +160,7 @@ describe('POST /api/saved_objects/_bulk_delete', () => {
|
|||
});
|
||||
|
||||
it('logs a warning message when called', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_delete')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -173,7 +174,7 @@ describe('POST /api/saved_objects/_bulk_delete', () => {
|
|||
});
|
||||
|
||||
it('passes deprecation configuration to the router arguments', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_delete')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerBulkGetRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from './routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-from-http', hide: false, hideFromHttpApis: true },
|
||||
|
@ -31,7 +33,7 @@ const testTypes = [
|
|||
|
||||
describe('POST /api/saved_objects/_bulk_get', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -39,7 +41,7 @@ describe('POST /api/saved_objects/_bulk_get', () => {
|
|||
let registrationSpy: jest.SpyInstance;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
|
||||
savedObjectsClient.bulkGet.mockResolvedValue({
|
||||
|
@ -51,8 +53,7 @@ describe('POST /api/saved_objects/_bulk_get', () => {
|
|||
.map((typeDesc) => createHiddenTypeVariants(typeDesc))
|
||||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsBulkGet.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -93,7 +94,7 @@ describe('POST /api/saved_objects/_bulk_get', () => {
|
|||
};
|
||||
savedObjectsClient.bulkGet.mockImplementation(() => Promise.resolve(clientResponse));
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_get')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -119,7 +120,7 @@ describe('POST /api/saved_objects/_bulk_get', () => {
|
|||
},
|
||||
];
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_get')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send(docs)
|
||||
|
@ -132,7 +133,7 @@ describe('POST /api/saved_objects/_bulk_get', () => {
|
|||
});
|
||||
|
||||
it('returns with status 400 when a type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_get')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -146,7 +147,7 @@ describe('POST /api/saved_objects/_bulk_get', () => {
|
|||
});
|
||||
|
||||
it('logs a warning message when called', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_get')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -160,7 +161,7 @@ describe('POST /api/saved_objects/_bulk_get', () => {
|
|||
});
|
||||
|
||||
it('passes deprecation config to the router arguments', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_get')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerBulkResolveRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from './routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-from-http', hide: false, hideFromHttpApis: true },
|
||||
|
@ -31,7 +33,7 @@ const testTypes = [
|
|||
|
||||
describe('POST /api/saved_objects/_bulk_resolve', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -39,7 +41,7 @@ describe('POST /api/saved_objects/_bulk_resolve', () => {
|
|||
let registrationSpy: jest.SpyInstance;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
|
||||
savedObjectsClient.bulkResolve.mockResolvedValue({
|
||||
|
@ -52,8 +54,7 @@ describe('POST /api/saved_objects/_bulk_resolve', () => {
|
|||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsBulkResolve.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -96,7 +97,7 @@ describe('POST /api/saved_objects/_bulk_resolve', () => {
|
|||
};
|
||||
savedObjectsClient.bulkResolve.mockImplementation(() => Promise.resolve(clientResponse));
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_resolve')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -122,7 +123,7 @@ describe('POST /api/saved_objects/_bulk_resolve', () => {
|
|||
},
|
||||
];
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_resolve')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send(docs)
|
||||
|
@ -135,7 +136,7 @@ describe('POST /api/saved_objects/_bulk_resolve', () => {
|
|||
});
|
||||
|
||||
it('returns with status 400 when a type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_resolve')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -149,7 +150,7 @@ describe('POST /api/saved_objects/_bulk_resolve', () => {
|
|||
});
|
||||
|
||||
it('logs a warning message when called', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_resolve')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -163,7 +164,7 @@ describe('POST /api/saved_objects/_bulk_resolve', () => {
|
|||
});
|
||||
|
||||
it('passes deprecation configuration to the router arguments', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/_bulk_resolve')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerBulkUpdateRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,7 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from './routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
const testTypes = [
|
||||
{ name: 'visualization', hide: false },
|
||||
{ name: 'dashboard', hide: false },
|
||||
|
@ -32,7 +35,7 @@ const testTypes = [
|
|||
|
||||
describe('PUT /api/saved_objects/_bulk_update', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -40,7 +43,7 @@ describe('PUT /api/saved_objects/_bulk_update', () => {
|
|||
let registrationSpy: jest.SpyInstance;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
|
||||
|
@ -50,8 +53,7 @@ describe('PUT /api/saved_objects/_bulk_update', () => {
|
|||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsBulkUpdate.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -103,7 +105,7 @@ describe('PUT /api/saved_objects/_bulk_update', () => {
|
|||
];
|
||||
savedObjectsClient.bulkUpdate.mockResolvedValue({ saved_objects: clientResponse });
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.put('/api/saved_objects/_bulk_update')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -134,7 +136,7 @@ describe('PUT /api/saved_objects/_bulk_update', () => {
|
|||
it('calls upon savedObjectClient.bulkUpdate', async () => {
|
||||
savedObjectsClient.bulkUpdate.mockResolvedValue({ saved_objects: [] });
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.put('/api/saved_objects/_bulk_update')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -175,7 +177,7 @@ describe('PUT /api/saved_objects/_bulk_update', () => {
|
|||
});
|
||||
|
||||
it('returns with status 400 when a type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.put('/api/saved_objects/_bulk_update')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -193,7 +195,7 @@ describe('PUT /api/saved_objects/_bulk_update', () => {
|
|||
});
|
||||
|
||||
it('logs a warning message when called', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.put('/api/saved_objects/_bulk_update')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
@ -220,7 +222,7 @@ describe('PUT /api/saved_objects/_bulk_update', () => {
|
|||
});
|
||||
|
||||
it('passes deprecation configuration to the router arguments', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.put('/api/saved_objects/_bulk_update')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send([
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { setupServer, createHiddenTypeVariants } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
setupServer,
|
||||
createHiddenTypeVariants,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerCreateRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from './routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-type', hide: true },
|
||||
|
@ -31,7 +33,7 @@ const testTypes = [
|
|||
];
|
||||
describe('POST /api/saved_objects/{type}', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -48,12 +50,11 @@ describe('POST /api/saved_objects/{type}', () => {
|
|||
};
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
savedObjectsClient.create.mockImplementation(() => Promise.resolve(clientResponse));
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsCreate.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -86,7 +87,7 @@ describe('POST /api/saved_objects/{type}', () => {
|
|||
});
|
||||
|
||||
it('formats successful response and records usage stats', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/index-pattern')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({
|
||||
|
@ -104,7 +105,7 @@ describe('POST /api/saved_objects/{type}', () => {
|
|||
});
|
||||
|
||||
it('requires attributes', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/index-pattern')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({})
|
||||
|
@ -117,7 +118,7 @@ describe('POST /api/saved_objects/{type}', () => {
|
|||
});
|
||||
|
||||
it('calls upon savedObjectClient.create', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/index-pattern')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({
|
||||
|
@ -141,7 +142,7 @@ describe('POST /api/saved_objects/{type}', () => {
|
|||
});
|
||||
|
||||
it('can specify an id', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/index-pattern/logstash-*')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({
|
||||
|
@ -162,7 +163,7 @@ describe('POST /api/saved_objects/{type}', () => {
|
|||
});
|
||||
|
||||
it('returns with status 400 if the type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/api/saved_objects/hidden-from-http')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({
|
||||
|
@ -176,7 +177,7 @@ describe('POST /api/saved_objects/{type}', () => {
|
|||
});
|
||||
|
||||
it('logs a warning message when called', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/index-pattern')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({
|
||||
|
@ -189,7 +190,7 @@ describe('POST /api/saved_objects/{type}', () => {
|
|||
});
|
||||
|
||||
it('passes deprecation configuration to the router arguments', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/saved_objects/index-pattern')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
SetupServerReturn,
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerDeleteRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from './routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'hidden-type', hide: true },
|
||||
|
@ -32,7 +34,7 @@ const testTypes = [
|
|||
|
||||
describe('DELETE /api/saved_objects/{type}/{id}', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -40,7 +42,7 @@ describe('DELETE /api/saved_objects/{type}/{id}', () => {
|
|||
let registrationSpy: jest.SpyInstance;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.getClient();
|
||||
handlerContext.savedObjects.getClient = jest.fn().mockImplementation(() => savedObjectsClient);
|
||||
handlerContext.savedObjects.typeRegistry.getType.mockImplementation((typename: string) => {
|
||||
|
@ -49,8 +51,7 @@ describe('DELETE /api/saved_objects/{type}/{id}', () => {
|
|||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsDelete.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -76,7 +77,7 @@ describe('DELETE /api/saved_objects/{type}/{id}', () => {
|
|||
});
|
||||
|
||||
it('formats successful response and records usage stats', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.delete('/api/saved_objects/index-pattern/logstash-*')
|
||||
.expect(200);
|
||||
|
||||
|
@ -88,7 +89,7 @@ describe('DELETE /api/saved_objects/{type}/{id}', () => {
|
|||
});
|
||||
|
||||
it('calls upon savedObjectClient.delete', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.delete('/api/saved_objects/index-pattern/logstash-*')
|
||||
.expect(200);
|
||||
|
||||
|
@ -98,7 +99,7 @@ describe('DELETE /api/saved_objects/{type}/{id}', () => {
|
|||
});
|
||||
|
||||
it('can specify `force` option', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.delete('/api/saved_objects/index-pattern/logstash-*')
|
||||
.query({ force: true })
|
||||
.expect(200);
|
||||
|
@ -109,14 +110,14 @@ describe('DELETE /api/saved_objects/{type}/{id}', () => {
|
|||
});
|
||||
|
||||
it('returns with status 400 if a type is hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.delete('/api/saved_objects/hidden-from-http/hiddenId')
|
||||
.expect(400);
|
||||
expect(result.body.message).toContain("Unsupported saved object type: 'hidden-from-http'");
|
||||
});
|
||||
|
||||
it('returns with status 400 if a type is hidden from the HTTP APIs with `force` option', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.delete('/api/saved_objects/hidden-from-http/hiddenId')
|
||||
.query({ force: true })
|
||||
.expect(400);
|
||||
|
@ -124,14 +125,14 @@ describe('DELETE /api/saved_objects/{type}/{id}', () => {
|
|||
});
|
||||
|
||||
it('logs a warning message when called', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.delete('/api/saved_objects/index-pattern/logstash-*')
|
||||
.expect(200);
|
||||
expect(loggerWarnSpy).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it('passes deprecation configuration to the router arguments', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.delete('/api/saved_objects/index-pattern/logstash-*')
|
||||
.expect(200);
|
||||
expect(registrationSpy.mock.calls[0][0]).toMatchObject({
|
||||
|
|
|
@ -10,27 +10,25 @@
|
|||
import supertest from 'supertest';
|
||||
import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks';
|
||||
import { typeRegistryMock } from '@kbn/core-saved-objects-base-server-mocks';
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { SetupServerReturn, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { SavedObjectsType } from '../../..';
|
||||
import {
|
||||
registerDeleteUnknownTypesRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
} from '@kbn/core-saved-objects-server-internal';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
describe('POST /internal/saved_objects/deprecations/_delete_unknown_types', () => {
|
||||
const kibanaVersion = '8.0.0';
|
||||
const kibanaIndex = '.kibana';
|
||||
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let typeRegistry: ReturnType<typeof typeRegistryMock.create>;
|
||||
let elasticsearchClient: ReturnType<typeof elasticsearchServiceMock.createScopedClusterClient>;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
elasticsearchClient = elasticsearchServiceMock.createScopedClusterClient();
|
||||
typeRegistry = typeRegistryMock.create();
|
||||
|
||||
|
@ -41,7 +39,7 @@ describe('POST /internal/saved_objects/deprecations/_delete_unknown_types', () =
|
|||
handlerContext.elasticsearch.client.asCurrentUser = elasticsearchClient.asCurrentUser;
|
||||
handlerContext.elasticsearch.client.asInternalUser = elasticsearchClient.asInternalUser;
|
||||
|
||||
const router = httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>(
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>(
|
||||
'/internal/saved_objects/'
|
||||
);
|
||||
registerDeleteUnknownTypesRoute(router, {
|
||||
|
@ -57,7 +55,7 @@ describe('POST /internal/saved_objects/deprecations/_delete_unknown_types', () =
|
|||
});
|
||||
|
||||
it('formats successful response', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post('/internal/saved_objects/deprecations/_delete_unknown_types')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -66,7 +64,7 @@ describe('POST /internal/saved_objects/deprecations/_delete_unknown_types', () =
|
|||
});
|
||||
|
||||
it('calls upon esClient.deleteByQuery', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/internal/saved_objects/deprecations/_delete_unknown_types')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
|
|
@ -16,13 +16,16 @@ import {
|
|||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { savedObjectsExporterMock } from '@kbn/core-saved-objects-import-export-server-mocks';
|
||||
import type { SavedObjectConfig } from '@kbn/core-saved-objects-base-server-internal';
|
||||
import { setupServer, createExportableType } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
setupServer,
|
||||
createExportableType,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerExportRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
} from '@kbn/core-saved-objects-server-internal';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
const allowedTypes = ['index-pattern', 'search'];
|
||||
const config = {
|
||||
maxImportPayloadBytes: 26214400,
|
||||
|
@ -32,19 +35,18 @@ let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
|||
|
||||
describe('POST /api/saved_objects/_export', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let exporter: ReturnType<typeof savedObjectsExporterMock.create>;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
handlerContext.savedObjects.typeRegistry.getImportableAndExportableTypes.mockReturnValue(
|
||||
allowedTypes.map(createExportableType)
|
||||
);
|
||||
exporter = handlerContext.savedObjects.getExporter();
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
handlerContext.savedObjects.getExporter = jest
|
||||
.fn()
|
||||
.mockImplementation(() => exporter as ReturnType<typeof savedObjectsExporterMock.create>);
|
||||
|
@ -86,13 +88,11 @@ describe('POST /api/saved_objects/_export', () => {
|
|||
|
||||
exporter.exportByTypes.mockResolvedValueOnce(createListStream(sortedObjects));
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
.post('/api/saved_objects/_export')
|
||||
.send({
|
||||
type: 'search',
|
||||
search: 'my search string',
|
||||
includeReferencesDeep: true,
|
||||
});
|
||||
const result = await supertest(server.listener).post('/api/saved_objects/_export').send({
|
||||
type: 'search',
|
||||
search: 'my search string',
|
||||
includeReferencesDeep: true,
|
||||
});
|
||||
|
||||
expect(result.status).toBe(200);
|
||||
expect(result.header).toEqual(
|
||||
|
|
|
@ -16,7 +16,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import {
|
||||
registerFindRoute,
|
||||
|
@ -24,8 +28,6 @@ import {
|
|||
} from '@kbn/core-saved-objects-server-internal';
|
||||
import { deprecationMock, setupConfig } from './routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false },
|
||||
{ name: 'visualization', hide: false },
|
||||
|
@ -37,7 +39,7 @@ const testTypes = [
|
|||
];
|
||||
describe('GET /api/saved_objects/_find', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -52,7 +54,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
};
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
|
||||
handlerContext.savedObjects.typeRegistry.getType.mockImplementation((typename: string) => {
|
||||
return testTypes
|
||||
|
@ -64,8 +66,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
|
||||
savedObjectsClient.find.mockResolvedValue(clientResponse);
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsFind.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -93,7 +94,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('returns with status 400 when type is missing', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(400);
|
||||
|
@ -109,7 +110,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
message: 'Unsupported saved object type(s): hidden-from-http: Bad Request',
|
||||
statusCode: 400,
|
||||
};
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=hidden-from-http')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(400);
|
||||
|
@ -124,7 +125,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
page: 0,
|
||||
saved_objects: [],
|
||||
};
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=hidden-type')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -164,7 +165,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
};
|
||||
savedObjectsClient.find.mockResolvedValue(findResponse);
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=index-pattern')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -177,7 +178,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('calls upon savedObjectClient.find with defaults', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=foo&type=bar')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -197,7 +198,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('accepts the query parameter page/per_page', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=foo&per_page=10&page=50')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -209,7 +210,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('accepts the optional query parameter has_reference', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=foo')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -227,7 +228,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
type: 'reference',
|
||||
})
|
||||
);
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`/api/saved_objects/_find?type=foo&has_reference=${references}`)
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -254,7 +255,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
},
|
||||
])
|
||||
);
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`/api/saved_objects/_find?type=foo&has_reference=${references}`)
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -275,7 +276,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('accepts the query parameter has_reference_operator', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=foo&has_reference_operator=AND')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -297,7 +298,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
type: 'reference',
|
||||
})
|
||||
);
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`/api/saved_objects/_find?type=foo&has_no_reference=${references}`)
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -324,7 +325,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
},
|
||||
])
|
||||
);
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`/api/saved_objects/_find?type=foo&has_no_reference=${references}`)
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -345,7 +346,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('accepts the query parameter has_no_reference_operator', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=foo&has_no_reference_operator=AND')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -361,7 +362,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('accepts the query parameter search_fields', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=foo&search_fields=title')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -377,7 +378,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('accepts the query parameter fields as a string', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=foo&fields=title')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -393,7 +394,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('accepts the query parameter fields as an array', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=foo&fields=title&fields=description')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -409,7 +410,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('accepts the query parameter type as a string', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=index-pattern')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -425,7 +426,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('accepts the query parameter type as an array', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=index-pattern&type=visualization')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -441,7 +442,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('accepts the query parameter namespaces as a string', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=index-pattern&namespaces=foo')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -457,7 +458,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('accepts the query parameter namespaces as an array', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=index-pattern&namespaces=default&namespaces=foo')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -473,7 +474,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('logs a warning message when called', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=foo&type=bar')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
@ -481,7 +482,7 @@ describe('GET /api/saved_objects/_find', () => {
|
|||
});
|
||||
|
||||
it('passes deprecation configuration to the router arguments', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get('/api/saved_objects/_find?type=foo&type=bar')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.expect(200);
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
import supertest from 'supertest';
|
||||
import { ContextService } from '@kbn/core-http-context-server-internal';
|
||||
import type { HttpService, InternalHttpServiceSetup } from '@kbn/core-http-server-internal';
|
||||
import { createHttpService, createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import { createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import type { ICoreUsageStatsClient } from '@kbn/core-usage-data-base-server-internal';
|
||||
|
@ -18,7 +18,6 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { contextServiceMock, coreMock } from '../../../mocks';
|
||||
import {
|
||||
registerGetRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -26,6 +25,8 @@ import {
|
|||
import { createHiddenTypeVariants } from '@kbn/core-test-helpers-test-utils';
|
||||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from './routes_test_utils';
|
||||
import { contextServiceMock, coreMock } from '../../../mocks';
|
||||
import { createInternalHttpService } from '../../utilities';
|
||||
|
||||
const coreId = Symbol('core');
|
||||
const testTypes = [
|
||||
|
@ -45,7 +46,7 @@ describe('GET /api/saved_objects/{type}/{id}', () => {
|
|||
|
||||
beforeEach(async () => {
|
||||
const coreContext = createCoreContext({ coreId });
|
||||
server = createHttpService(coreContext);
|
||||
server = createInternalHttpService(coreContext);
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
|
||||
const contextService = new ContextService(coreContext);
|
||||
|
|
|
@ -26,11 +26,13 @@ import {
|
|||
registerImportRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
} from '@kbn/core-saved-objects-server-internal';
|
||||
import { setupServer, createExportableType } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
setupServer,
|
||||
createExportableType,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import { loggerMock, type MockedLogger } from '@kbn/logging-mocks';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const allowedTypes = ['index-pattern', 'visualization', 'dashboard'];
|
||||
const config = { maxImportPayloadBytes: 26214400, maxImportExportSize: 10000 } as SavedObjectConfig;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -38,7 +40,7 @@ const URL = '/internal/saved_objects/_import';
|
|||
|
||||
describe(`POST ${URL}`, () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let mockLogger: MockedLogger;
|
||||
|
@ -60,7 +62,7 @@ describe(`POST ${URL}`, () => {
|
|||
};
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
mockLogger = loggerMock.create();
|
||||
handlerContext.savedObjects.typeRegistry.getImportableAndExportableTypes.mockReturnValue(
|
||||
allowedTypes.map(createExportableType)
|
||||
|
@ -85,7 +87,7 @@ describe(`POST ${URL}`, () => {
|
|||
.fn()
|
||||
.mockImplementation(() => importer as jest.Mocked<SavedObjectsImporter>);
|
||||
|
||||
const router = httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>(
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>(
|
||||
'/internal/saved_objects/'
|
||||
);
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
|
@ -101,7 +103,7 @@ describe(`POST ${URL}`, () => {
|
|||
});
|
||||
|
||||
it('formats successful response and records usage stats', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=BOUNDARY')
|
||||
.send(
|
||||
|
@ -129,7 +131,7 @@ describe(`POST ${URL}`, () => {
|
|||
it('defaults migrationVersion to empty object', async () => {
|
||||
savedObjectsClient.bulkCreate.mockResolvedValueOnce({ saved_objects: [mockIndexPattern] });
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -167,7 +169,7 @@ describe(`POST ${URL}`, () => {
|
|||
it('returns the default for managed as part of the successResults', async () => {
|
||||
savedObjectsClient.bulkCreate.mockResolvedValueOnce({ saved_objects: [mockIndexPattern] });
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -209,7 +211,7 @@ describe(`POST ${URL}`, () => {
|
|||
saved_objects: [mockIndexPattern, { ...mockDashboard, managed: false }],
|
||||
});
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -259,7 +261,7 @@ describe(`POST ${URL}`, () => {
|
|||
errors: [{ type: mockIndexPattern.type, id: mockIndexPattern.id, error }],
|
||||
});
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -311,7 +313,7 @@ describe(`POST ${URL}`, () => {
|
|||
saved_objects: [mockIndexPattern, mockDashboard],
|
||||
});
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(`${URL}?overwrite=true`)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -361,7 +363,7 @@ describe(`POST ${URL}`, () => {
|
|||
saved_objects: [{ ...mockIndexPattern, error }],
|
||||
});
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -425,7 +427,7 @@ describe(`POST ${URL}`, () => {
|
|||
errors: [{ type: 'visualization', id: 'my-vis', error: error2 }],
|
||||
});
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -495,7 +497,7 @@ describe(`POST ${URL}`, () => {
|
|||
errors: [{ type: 'visualization', id: 'my-vis', error: error2 }],
|
||||
});
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(`${URL}?overwrite=true`)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -570,7 +572,7 @@ describe(`POST ${URL}`, () => {
|
|||
};
|
||||
savedObjectsClient.bulkCreate.mockResolvedValueOnce({ saved_objects: [obj1, obj2] });
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(`${URL}?createNewCopies=true`)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -710,7 +712,7 @@ describe(`POST ${URL}`, () => {
|
|||
saved_objects: [legacyUrlAliasObj2, legacyUrlAliasObj3],
|
||||
});
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(`${URL}?compatibilityMode=true`)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -868,7 +870,7 @@ describe(`POST ${URL}`, () => {
|
|||
};
|
||||
savedObjectsClient.bulkCreate.mockResolvedValueOnce({ saved_objects: [legacyUrlAliasObj1] });
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(`${URL}?compatibilityMode=true`)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -1001,7 +1003,7 @@ describe(`POST ${URL}`, () => {
|
|||
],
|
||||
});
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(`${URL}?compatibilityMode=true`)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
import supertest from 'supertest';
|
||||
import { ContextService } from '@kbn/core-http-context-server-internal';
|
||||
import type { HttpService, InternalHttpServiceSetup } from '@kbn/core-http-server-internal';
|
||||
import { createHttpService, createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import { createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks';
|
||||
import type { ICoreUsageStatsClient } from '@kbn/core-usage-data-base-server-internal';
|
||||
import {
|
||||
|
@ -18,7 +18,6 @@ import {
|
|||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock, coreMock } from '../../../mocks';
|
||||
import {
|
||||
registerResolveRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -26,6 +25,8 @@ import {
|
|||
import { createHiddenTypeVariants } from '@kbn/core-test-helpers-test-utils';
|
||||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from './routes_test_utils';
|
||||
import { contextServiceMock, coreMock } from '../../../mocks';
|
||||
import { createInternalHttpService } from '../../utilities';
|
||||
|
||||
const coreId = Symbol('core');
|
||||
|
||||
|
@ -46,7 +47,7 @@ describe('GET /api/saved_objects/resolve/{type}/{id}', () => {
|
|||
|
||||
beforeEach(async () => {
|
||||
const coreContext = createCoreContext({ coreId });
|
||||
server = createHttpService(coreContext);
|
||||
server = createInternalHttpService(coreContext);
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
|
||||
const contextService = new ContextService(coreContext);
|
||||
|
|
|
@ -17,7 +17,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { setupServer, createExportableType } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
setupServer,
|
||||
createExportableType,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
LEGACY_URL_ALIAS_TYPE,
|
||||
SavedObjectConfig,
|
||||
|
@ -28,8 +32,6 @@ import {
|
|||
type InternalSavedObjectsRequestHandlerContext,
|
||||
} from '@kbn/core-saved-objects-server-internal';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const allowedTypes = ['index-pattern', 'visualization', 'dashboard'];
|
||||
const config = { maxImportPayloadBytes: 26214400, maxImportExportSize: 10000 } as SavedObjectConfig;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -37,7 +39,7 @@ const URL = '/api/saved_objects/_resolve_import_errors';
|
|||
|
||||
describe(`POST ${URL}`, () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
|
||||
|
@ -75,7 +77,7 @@ describe(`POST ${URL}`, () => {
|
|||
};
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
handlerContext.savedObjects.typeRegistry.getImportableAndExportableTypes.mockReturnValue(
|
||||
allowedTypes.map(createExportableType)
|
||||
);
|
||||
|
@ -101,8 +103,7 @@ describe(`POST ${URL}`, () => {
|
|||
.fn()
|
||||
.mockImplementation(() => importer as jest.Mocked<SavedObjectsImporter>);
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsResolveImportErrors.mockRejectedValue(
|
||||
new Error('Oh no!') // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
|
@ -118,7 +119,7 @@ describe(`POST ${URL}`, () => {
|
|||
});
|
||||
|
||||
it('formats successful response and records usage stats', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=BOUNDARY')
|
||||
.send(
|
||||
|
@ -149,7 +150,7 @@ describe(`POST ${URL}`, () => {
|
|||
it('defaults migrationVersion to empty object', async () => {
|
||||
savedObjectsClient.bulkCreate.mockResolvedValueOnce({ saved_objects: [mockDashboard] });
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -192,7 +193,7 @@ describe(`POST ${URL}`, () => {
|
|||
// NOTE: changes to this scenario should be reflected in the docs
|
||||
savedObjectsClient.bulkCreate.mockResolvedValueOnce({ saved_objects: [mockDashboard] });
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -230,7 +231,7 @@ describe(`POST ${URL}`, () => {
|
|||
// NOTE: changes to this scenario should be reflected in the docs
|
||||
savedObjectsClient.bulkCreate.mockResolvedValueOnce({ saved_objects: [mockDashboard] });
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -270,7 +271,7 @@ describe(`POST ${URL}`, () => {
|
|||
savedObjectsClient.bulkCreate.mockResolvedValueOnce({ saved_objects: [mockVisualization] });
|
||||
savedObjectsClient.bulkGet.mockResolvedValueOnce({ saved_objects: [mockIndexPattern] });
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -319,7 +320,7 @@ describe(`POST ${URL}`, () => {
|
|||
// NOTE: changes to this scenario should be reflected in the docs
|
||||
savedObjectsClient.bulkCreate.mockResolvedValueOnce({ saved_objects: [mockVisualization] });
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(URL)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -382,7 +383,7 @@ describe(`POST ${URL}`, () => {
|
|||
};
|
||||
savedObjectsClient.bulkCreate.mockResolvedValueOnce({ saved_objects: [obj1, obj2] });
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(`${URL}?createNewCopies=true`)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
@ -485,7 +486,7 @@ describe(`POST ${URL}`, () => {
|
|||
saved_objects: [legacyUrlAliasObj2],
|
||||
});
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.post(`${URL}?compatibilityMode=true`)
|
||||
.set('content-Type', 'multipart/form-data; boundary=EXAMPLE')
|
||||
.send(
|
||||
|
|
|
@ -14,7 +14,11 @@ import {
|
|||
coreUsageStatsClientMock,
|
||||
coreUsageDataServiceMock,
|
||||
} from '@kbn/core-usage-data-server-mocks';
|
||||
import { createHiddenTypeVariants, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
createHiddenTypeVariants,
|
||||
setupServer,
|
||||
SetupServerReturn,
|
||||
} from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
registerUpdateRoute,
|
||||
type InternalSavedObjectsRequestHandlerContext,
|
||||
|
@ -22,8 +26,6 @@ import {
|
|||
import { loggerMock } from '@kbn/logging-mocks';
|
||||
import { deprecationMock, setupConfig } from './routes_test_utils';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const testTypes = [
|
||||
{ name: 'index-pattern', hide: false }, // multi-namespace type
|
||||
{ name: 'hidden-type', hide: true }, // hidden
|
||||
|
@ -32,7 +34,7 @@ const testTypes = [
|
|||
|
||||
describe('PUT /api/saved_objects/{type}/{id?}', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let handlerContext: SetupServerReturn['handlerContext'];
|
||||
let savedObjectsClient: ReturnType<typeof savedObjectsClientMock.create>;
|
||||
let coreUsageStatsClient: jest.Mocked<ICoreUsageStatsClient>;
|
||||
|
@ -50,7 +52,7 @@ describe('PUT /api/saved_objects/{type}/{id?}', () => {
|
|||
references: [],
|
||||
};
|
||||
|
||||
({ server, httpSetup, handlerContext } = await setupServer());
|
||||
({ server, createRouter, handlerContext } = await setupServer());
|
||||
savedObjectsClient = handlerContext.savedObjects.client;
|
||||
savedObjectsClient.update.mockResolvedValue(clientResponse);
|
||||
|
||||
|
@ -60,8 +62,7 @@ describe('PUT /api/saved_objects/{type}/{id?}', () => {
|
|||
.find((fullTest) => fullTest.name === typename);
|
||||
});
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
const router = createRouter<InternalSavedObjectsRequestHandlerContext>('/api/saved_objects/');
|
||||
coreUsageStatsClient = coreUsageStatsClientMock.create();
|
||||
coreUsageStatsClient.incrementSavedObjectsUpdate.mockRejectedValue(new Error('Oh no!')); // intentionally throw this error, which is swallowed, so we can assert that the operation does not fail
|
||||
const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient);
|
||||
|
@ -98,7 +99,7 @@ describe('PUT /api/saved_objects/{type}/{id?}', () => {
|
|||
};
|
||||
savedObjectsClient.update.mockResolvedValue(clientResponse);
|
||||
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.put('/api/saved_objects/index-pattern/logstash-*')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({
|
||||
|
@ -117,7 +118,7 @@ describe('PUT /api/saved_objects/{type}/{id?}', () => {
|
|||
});
|
||||
|
||||
it('calls upon savedObjectClient.update', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.put('/api/saved_objects/index-pattern/logstash-*')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({
|
||||
|
@ -135,7 +136,7 @@ describe('PUT /api/saved_objects/{type}/{id?}', () => {
|
|||
});
|
||||
|
||||
it('returns with status 400 for types hidden from the HTTP APIs', async () => {
|
||||
const result = await supertest(httpSetup.server.listener)
|
||||
const result = await supertest(server.listener)
|
||||
.put('/api/saved_objects/hidden-from-http/hiddenId')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({
|
||||
|
@ -146,7 +147,7 @@ describe('PUT /api/saved_objects/{type}/{id?}', () => {
|
|||
});
|
||||
|
||||
it('logs a warning message when called', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.put('/api/saved_objects/index-pattern/logstash-*')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({ attributes: { title: 'Logging test' }, version: 'log' })
|
||||
|
@ -155,7 +156,7 @@ describe('PUT /api/saved_objects/{type}/{id?}', () => {
|
|||
});
|
||||
|
||||
it('passes deprecation configuration to the router arguments', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.put('/api/saved_objects/index-pattern/logstash-*')
|
||||
.set('x-elastic-internal-origin', 'kibana')
|
||||
.send({ attributes: { title: 'Logging test' }, version: 'log' })
|
||||
|
|
|
@ -8,11 +8,11 @@
|
|||
*/
|
||||
|
||||
import supertest from 'supertest';
|
||||
import { createCoreContext, createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import { createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import type { HttpService, InternalHttpServicePreboot } from '@kbn/core-http-server-internal';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
|
||||
import { registerPrebootStatusRoute } from '@kbn/core-status-server-internal/src/routes';
|
||||
import { createInternalHttpService } from '../../utilities';
|
||||
|
||||
const coreId = Symbol('core');
|
||||
|
||||
|
@ -23,7 +23,7 @@ describe('GET /api/status', () => {
|
|||
const setupServer = async () => {
|
||||
const coreContext = createCoreContext({ coreId });
|
||||
|
||||
server = createHttpService(coreContext);
|
||||
server = createInternalHttpService(coreContext);
|
||||
httpPreboot = await server.preboot({
|
||||
context: contextServiceMock.createPrebootContract(),
|
||||
});
|
||||
|
|
|
@ -12,7 +12,7 @@ import supertest from 'supertest';
|
|||
import { omit } from 'lodash';
|
||||
|
||||
import { ContextService } from '@kbn/core-http-context-server-internal';
|
||||
import { createCoreContext, createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import { createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
import type { HttpService, InternalHttpServiceSetup } from '@kbn/core-http-server-internal';
|
||||
import { metricsServiceMock } from '@kbn/core-metrics-server-mocks';
|
||||
import type { MetricsServiceSetup } from '@kbn/core-metrics-server';
|
||||
|
@ -21,6 +21,7 @@ import { statusServiceMock } from '@kbn/core-status-server-mocks';
|
|||
import { executionContextServiceMock } from '@kbn/core-execution-context-server-mocks';
|
||||
import { contextServiceMock } from '@kbn/core-http-context-server-mocks';
|
||||
import { registerStatusRoute } from '@kbn/core-status-server-internal';
|
||||
import { createInternalHttpService } from '../../utilities';
|
||||
|
||||
const coreId = Symbol('core');
|
||||
|
||||
|
@ -49,7 +50,7 @@ describe('GET /api/status', () => {
|
|||
const coreContext = createCoreContext({ coreId });
|
||||
const contextService = new ContextService(coreContext);
|
||||
|
||||
server = createHttpService(coreContext);
|
||||
server = createInternalHttpService(coreContext);
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
httpSetup = await server.setup({
|
||||
context: contextService.setup({ pluginDependencies: new Map() }),
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the "Elastic License
|
||||
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
|
||||
* Public License v 1"; you may not use this file except in compliance with, at
|
||||
* your election, the "Elastic License 2.0", the "GNU Affero General Public
|
||||
* License v3.0 only", or the "Server Side Public License, v 1".
|
||||
*/
|
||||
|
||||
import type { CoreContext } from '@kbn/core-base-server-internal';
|
||||
import { HttpService } from '@kbn/core-http-server-internal';
|
||||
import { createCoreContext } from '@kbn/core-http-server-mocks';
|
||||
|
||||
export {
|
||||
HttpService,
|
||||
type InternalHttpServicePreboot,
|
||||
type InternalHttpServiceSetup,
|
||||
} from '@kbn/core-http-server-internal';
|
||||
|
||||
/**
|
||||
* @internal
|
||||
* @remarks Only use this in core-owned code!
|
||||
*/
|
||||
export const createInternalHttpService = ({
|
||||
buildNum,
|
||||
...overrides
|
||||
}: Partial<CoreContext & { buildNum: number }> = {}): HttpService => {
|
||||
const ctx = createCoreContext(overrides);
|
||||
if (buildNum !== undefined) {
|
||||
ctx.env = {
|
||||
...ctx.env,
|
||||
packageInfo: {
|
||||
...ctx.env.packageInfo,
|
||||
buildNum,
|
||||
},
|
||||
};
|
||||
}
|
||||
return new HttpService(ctx);
|
||||
};
|
10
src/core/server/integration_tests/utilities/index.ts
Normal file
10
src/core/server/integration_tests/utilities/index.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the "Elastic License
|
||||
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
|
||||
* Public License v 1"; you may not use this file except in compliance with, at
|
||||
* your election, the "Elastic License 2.0", the "GNU Affero General Public
|
||||
* License v3.0 only", or the "Server Side Public License, v 1".
|
||||
*/
|
||||
|
||||
export { createInternalHttpService } from './create_internal_http_service';
|
|
@ -8,8 +8,7 @@
|
|||
*/
|
||||
|
||||
import supertest from 'supertest';
|
||||
import type { HttpService, InternalHttpServiceSetup } from '@kbn/core-http-server-internal';
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { setupServer, SetupServerReturn } from '@kbn/core-test-helpers-test-utils';
|
||||
import { registerCreateRoute } from '../register_create_route';
|
||||
import { MockUrlService } from '../../../../../common/mocks';
|
||||
import { httpServiceMock } from '@kbn/core/server/mocks';
|
||||
|
@ -18,13 +17,13 @@ const url = new MockUrlService();
|
|||
const http = httpServiceMock.createSetupContract();
|
||||
|
||||
describe('POST /api/short_url', () => {
|
||||
let server: HttpService;
|
||||
let httpSetup: InternalHttpServiceSetup;
|
||||
let server: SetupServerReturn['server'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
|
||||
beforeAll(async () => {
|
||||
const setup = await setupServer();
|
||||
server = setup.server;
|
||||
httpSetup = setup.httpSetup;
|
||||
createRouter = setup.createRouter;
|
||||
|
||||
url.locators.get = jest.fn().mockImplementation((locatorId) => {
|
||||
if (locatorId === 'LEGACY_SHORT_URL_LOCATOR') {
|
||||
|
@ -34,7 +33,7 @@ describe('POST /api/short_url', () => {
|
|||
});
|
||||
|
||||
http.basePath.get = jest.fn().mockReturnValue('');
|
||||
registerCreateRoute(httpSetup.createRouter(''), url, http);
|
||||
registerCreateRoute(createRouter(''), url, http);
|
||||
|
||||
await server.start();
|
||||
});
|
||||
|
@ -57,7 +56,7 @@ describe('POST /api/short_url', () => {
|
|||
},
|
||||
};
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/short_url')
|
||||
.send(payload)
|
||||
.expect(200)
|
||||
|
@ -74,7 +73,7 @@ describe('POST /api/short_url', () => {
|
|||
},
|
||||
};
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/short_url')
|
||||
.send(payload)
|
||||
.expect(400)
|
||||
|
@ -94,7 +93,7 @@ describe('POST /api/short_url', () => {
|
|||
// Override the locator mock for this test
|
||||
(url.locators.get as jest.Mock).mockReturnValueOnce(undefined);
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/api/short_url')
|
||||
.send(payload)
|
||||
.expect(409)
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
"@kbn/licensing-plugin",
|
||||
"@kbn/core-rendering-browser",
|
||||
"@kbn/std",
|
||||
"@kbn/core-http-server-internal",
|
||||
"@kbn/core-test-helpers-test-utils",
|
||||
"@kbn/core-logging-server-mocks",
|
||||
"@kbn/core-http-router-server-mocks"
|
||||
|
|
|
@ -9,25 +9,22 @@
|
|||
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
|
||||
import { type MetricsServiceSetup, ServiceStatus, ServiceStatusLevels } from '@kbn/core/server';
|
||||
import {
|
||||
type MetricsServiceSetup,
|
||||
RequestHandlerContext,
|
||||
ServiceStatus,
|
||||
ServiceStatusLevels,
|
||||
} from '@kbn/core/server';
|
||||
import {
|
||||
contextServiceMock,
|
||||
loggingSystemMock,
|
||||
metricsServiceMock,
|
||||
executionContextServiceMock,
|
||||
} from '@kbn/core/server/mocks';
|
||||
import { createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import {
|
||||
createHttpService,
|
||||
HttpIntegrationServiceSetupContractMock,
|
||||
} from '@kbn/core-http-server-mocks';
|
||||
import { registerStatsRoute } from '../stats';
|
||||
import supertest from 'supertest';
|
||||
import { CollectorSet } from '../../collector';
|
||||
|
||||
type HttpService = ReturnType<typeof createHttpService>;
|
||||
type HttpSetup = Awaited<ReturnType<HttpService['setup']>>;
|
||||
type HttpSetup = HttpIntegrationServiceSetupContractMock;
|
||||
|
||||
describe('/api/stats', () => {
|
||||
let server: HttpService;
|
||||
|
@ -37,18 +34,15 @@ describe('/api/stats', () => {
|
|||
|
||||
beforeEach(async () => {
|
||||
server = createHttpService();
|
||||
await server.preboot({ context: contextServiceMock.createPrebootContract() });
|
||||
httpSetup = await server.setup({
|
||||
context: contextServiceMock.createSetupContract(),
|
||||
executionContext: executionContextServiceMock.createInternalSetupContract(),
|
||||
});
|
||||
await server.preboot();
|
||||
httpSetup = await server.setup();
|
||||
overallStatus$ = new BehaviorSubject<ServiceStatus>({
|
||||
level: ServiceStatusLevels.available,
|
||||
summary: 'everything is working',
|
||||
});
|
||||
metrics = metricsServiceMock.createSetupContract();
|
||||
|
||||
const router = httpSetup.createRouter<RequestHandlerContext>('');
|
||||
const router = httpSetup.createRouter('');
|
||||
registerStatsRoute({
|
||||
router,
|
||||
collectorSet: new CollectorSet({
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { setupServer, SetupServerReturn } from '@kbn/core-test-helpers-test-utils';
|
||||
import { loggingSystemMock } from '@kbn/core/server/mocks';
|
||||
import { licensingMock } from '@kbn/licensing-plugin/server/mocks';
|
||||
import { INTERNAL_ROUTES } from '@kbn/reporting-common';
|
||||
|
@ -19,13 +19,11 @@ import {
|
|||
} from '../../../../test_helpers';
|
||||
import { registerDeprecationsRoutes } from '../deprecations';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
describe(`GET ${INTERNAL_ROUTES.MIGRATE.GET_ILM_POLICY_STATUS}`, () => {
|
||||
jest.setTimeout(6000);
|
||||
const reportingSymbol = Symbol('reporting');
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
|
||||
const mockConfig = createMockConfigSchema({
|
||||
queue: { indexInterval: 'year', timeout: 10000, pollEnabled: true },
|
||||
|
@ -37,13 +35,13 @@ describe(`GET ${INTERNAL_ROUTES.MIGRATE.GET_ILM_POLICY_STATUS}`, () => {
|
|||
}) =>
|
||||
createMockReportingCore(
|
||||
mockConfig,
|
||||
createMockPluginSetup({ security, router: httpSetup.createRouter('') }),
|
||||
createMockPluginSetup({ security, router: createRouter('') }),
|
||||
await createMockPluginStart({ licensing: licensingMock.createStart() }, mockConfig)
|
||||
);
|
||||
|
||||
beforeEach(async () => {
|
||||
jest.clearAllMocks();
|
||||
({ server, httpSetup } = await setupServer(reportingSymbol));
|
||||
({ server, createRouter } = await setupServer(reportingSymbol));
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
|
@ -56,7 +54,7 @@ describe(`GET ${INTERNAL_ROUTES.MIGRATE.GET_ILM_POLICY_STATUS}`, () => {
|
|||
registerDeprecationsRoutes(core, loggingSystemMock.createLogger());
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(INTERNAL_ROUTES.MIGRATE.GET_ILM_POLICY_STATUS)
|
||||
.expect(200)
|
||||
.then(/* Ignore result */);
|
||||
|
@ -70,7 +68,7 @@ describe(`GET ${INTERNAL_ROUTES.MIGRATE.GET_ILM_POLICY_STATUS}`, () => {
|
|||
registerDeprecationsRoutes(core, loggingSystemMock.createLogger());
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(INTERNAL_ROUTES.MIGRATE.GET_ILM_POLICY_STATUS)
|
||||
.expect(200)
|
||||
.then(/* Ignore result */);
|
||||
|
@ -88,7 +86,7 @@ describe(`GET ${INTERNAL_ROUTES.MIGRATE.GET_ILM_POLICY_STATUS}`, () => {
|
|||
registerDeprecationsRoutes(core, loggingSystemMock.createLogger());
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(INTERNAL_ROUTES.MIGRATE.GET_ILM_POLICY_STATUS)
|
||||
.expect(200)
|
||||
.then(/* Ignore result */);
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
import * as Rx from 'rxjs';
|
||||
import supertest from 'supertest';
|
||||
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { setupServer, SetupServerReturn } from '@kbn/core-test-helpers-test-utils';
|
||||
import { docLinksServiceMock, loggingSystemMock } from '@kbn/core/server/mocks';
|
||||
import { INTERNAL_ROUTES } from '@kbn/reporting-common';
|
||||
import { createMockConfigSchema } from '@kbn/reporting-mocks-server';
|
||||
|
@ -20,8 +20,6 @@ import { createMockPluginSetup, createMockReportingCore } from '../../../../test
|
|||
import { ReportingRequestHandlerContext } from '../../../../types';
|
||||
import { registerDiagnoseBrowser } from '../browser';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const devtoolMessage = 'DevTools listening on (ws://localhost:4000)';
|
||||
const fontNotFoundMessage = 'Could not find the default font';
|
||||
|
||||
|
@ -31,8 +29,9 @@ describe(`GET ${INTERNAL_ROUTES.DIAGNOSE.BROWSER}`, () => {
|
|||
const mockLogger = loggingSystemMock.createLogger();
|
||||
|
||||
let server: SetupServerReturn['server'];
|
||||
let registerRouteHandlerContext: SetupServerReturn['registerRouteHandlerContext'];
|
||||
let usageCounter: IUsageCounter;
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let core: ReportingCore;
|
||||
let screenshotting: jest.Mocked<ScreenshottingStart>;
|
||||
|
||||
|
@ -42,8 +41,8 @@ describe(`GET ${INTERNAL_ROUTES.DIAGNOSE.BROWSER}`, () => {
|
|||
});
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup } = await setupServer(reportingSymbol));
|
||||
httpSetup.registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
({ server, createRouter, registerRouteHandlerContext } = await setupServer(reportingSymbol));
|
||||
registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
reportingSymbol,
|
||||
'reporting',
|
||||
() => reportingMock.createStart()
|
||||
|
@ -53,7 +52,7 @@ describe(`GET ${INTERNAL_ROUTES.DIAGNOSE.BROWSER}`, () => {
|
|||
core = await createMockReportingCore(
|
||||
config,
|
||||
createMockPluginSetup({
|
||||
router: httpSetup.createRouter(''),
|
||||
router: createRouter(''),
|
||||
security: null,
|
||||
docLinks: {
|
||||
...docLinksSetupMock,
|
||||
|
@ -88,7 +87,7 @@ describe(`GET ${INTERNAL_ROUTES.DIAGNOSE.BROWSER}`, () => {
|
|||
|
||||
screenshotting.diagnose.mockReturnValue(Rx.of(devtoolMessage));
|
||||
|
||||
return supertest(httpSetup.server.listener)
|
||||
return supertest(server.listener)
|
||||
.get(INTERNAL_ROUTES.DIAGNOSE.BROWSER)
|
||||
.expect(200)
|
||||
.then(({ body }) => {
|
||||
|
@ -104,7 +103,7 @@ describe(`GET ${INTERNAL_ROUTES.DIAGNOSE.BROWSER}`, () => {
|
|||
await server.start();
|
||||
screenshotting.diagnose.mockReturnValue(Rx.of(logs));
|
||||
|
||||
return supertest(httpSetup.server.listener)
|
||||
return supertest(server.listener)
|
||||
.get(INTERNAL_ROUTES.DIAGNOSE.BROWSER)
|
||||
.expect(200)
|
||||
.then(({ body }) => {
|
||||
|
@ -128,7 +127,7 @@ describe(`GET ${INTERNAL_ROUTES.DIAGNOSE.BROWSER}`, () => {
|
|||
await server.start();
|
||||
screenshotting.diagnose.mockReturnValue(Rx.of(fontErrorLog));
|
||||
|
||||
return supertest(httpSetup.server.listener)
|
||||
return supertest(server.listener)
|
||||
.get(INTERNAL_ROUTES.DIAGNOSE.BROWSER)
|
||||
.expect(200)
|
||||
.then(({ body }) => {
|
||||
|
@ -150,7 +149,7 @@ describe(`GET ${INTERNAL_ROUTES.DIAGNOSE.BROWSER}`, () => {
|
|||
await server.start();
|
||||
screenshotting.diagnose.mockReturnValue(Rx.of(`${devtoolMessage}\n${fontNotFoundMessage}`));
|
||||
|
||||
return supertest(httpSetup.server.listener)
|
||||
return supertest(server.listener)
|
||||
.get(INTERNAL_ROUTES.DIAGNOSE.BROWSER)
|
||||
.expect(200)
|
||||
.then(({ body }) => {
|
||||
|
@ -175,7 +174,7 @@ describe(`GET ${INTERNAL_ROUTES.DIAGNOSE.BROWSER}`, () => {
|
|||
|
||||
screenshotting.diagnose.mockReturnValue(Rx.of(devtoolMessage));
|
||||
|
||||
await supertest(httpSetup.server.listener).get(INTERNAL_ROUTES.DIAGNOSE.BROWSER).expect(200);
|
||||
await supertest(server.listener).get(INTERNAL_ROUTES.DIAGNOSE.BROWSER).expect(200);
|
||||
|
||||
expect(usageCounter.incrementCounter).toHaveBeenCalledTimes(1);
|
||||
expect(usageCounter.incrementCounter).toHaveBeenCalledWith({
|
||||
|
|
|
@ -9,7 +9,7 @@ import rison from '@kbn/rison';
|
|||
import { BehaviorSubject } from 'rxjs';
|
||||
import supertest from 'supertest';
|
||||
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { SetupServerReturn, setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { coreMock, loggingSystemMock } from '@kbn/core/server/mocks';
|
||||
import { licensingMock } from '@kbn/licensing-plugin/server/mocks';
|
||||
import { INTERNAL_ROUTES } from '@kbn/reporting-common';
|
||||
|
@ -31,14 +31,13 @@ import { ReportingRequestHandlerContext } from '../../../../types';
|
|||
import { EventTracker } from '../../../../usage';
|
||||
import { registerGenerationRoutesInternal } from '../generate_from_jobparams';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
||||
const reportingSymbol = Symbol('reporting');
|
||||
let server: SetupServerReturn['server'];
|
||||
let registerRouteHandlerContext: SetupServerReturn['registerRouteHandlerContext'];
|
||||
let usageCounter: IUsageCounter;
|
||||
let eventTracker: EventTracker;
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let mockExportTypesRegistry: ExportTypesRegistry;
|
||||
let reportingCore: ReportingCore;
|
||||
let store: ReportingStore;
|
||||
|
@ -59,8 +58,8 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
);
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup } = await setupServer(reportingSymbol));
|
||||
httpSetup.registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
({ server, createRouter, registerRouteHandlerContext } = await setupServer(reportingSymbol));
|
||||
registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
reportingSymbol,
|
||||
'reporting',
|
||||
() => reportingMock.createStart()
|
||||
|
@ -68,7 +67,7 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
const mockSetupDeps = createMockPluginSetup({
|
||||
security: { license: { isEnabled: () => true, getFeature: () => true } },
|
||||
router: httpSetup.createRouter(''),
|
||||
router: createRouter(''),
|
||||
});
|
||||
|
||||
const mockStartDeps = await createMockPluginStart(
|
||||
|
@ -125,7 +124,7 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${INTERNAL_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.expect(400)
|
||||
.then(({ body }) =>
|
||||
|
@ -140,7 +139,7 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${INTERNAL_ROUTES.GENERATE_PREFIX}/printablePdfV2?jobParams=foo:`)
|
||||
.expect(400)
|
||||
.then(({ body }) => expect(body.message).toMatchInlineSnapshot('"invalid rison: foo:"'));
|
||||
|
@ -151,7 +150,7 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${INTERNAL_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({ jobParams: `foo:` })
|
||||
.expect(400)
|
||||
|
@ -163,7 +162,7 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${INTERNAL_ROUTES.GENERATE_PREFIX}/TonyHawksProSkater2`)
|
||||
.send({ jobParams: rison.encode({ title: `abc` }) })
|
||||
.expect(400)
|
||||
|
@ -177,7 +176,7 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${INTERNAL_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({ jobParams: rison.encode({ browserTimezone: 'America/Amsterdam', title: `abc` }) })
|
||||
.expect(400)
|
||||
|
@ -193,7 +192,7 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${INTERNAL_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({ jobParams: rison.encode({ title: `abc` }) })
|
||||
.expect(500);
|
||||
|
@ -204,7 +203,7 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${INTERNAL_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({
|
||||
jobParams: rison.encode({
|
||||
|
@ -245,7 +244,7 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${INTERNAL_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({
|
||||
jobParams: rison.encode({
|
||||
|
@ -269,7 +268,7 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${INTERNAL_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({
|
||||
jobParams: rison.encode({
|
||||
|
|
|
@ -14,7 +14,7 @@ jest.mock('../../../../lib/content_stream', () => ({
|
|||
}));
|
||||
|
||||
import type { estypes } from '@elastic/elasticsearch';
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { setupServer, SetupServerReturn } from '@kbn/core-test-helpers-test-utils';
|
||||
import { ElasticsearchClientMock, coreMock } from '@kbn/core/server/mocks';
|
||||
import { licensingMock } from '@kbn/licensing-plugin/server/mocks';
|
||||
import { INTERNAL_ROUTES } from '@kbn/reporting-common';
|
||||
|
@ -37,14 +37,13 @@ import { EventTracker } from '../../../../usage';
|
|||
import { STATUS_CODES } from '../../../common/jobs/constants';
|
||||
import { registerJobInfoRoutesInternal as registerJobInfoRoutes } from '../jobs';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
describe(`Reporting Job Management Routes: Internal`, () => {
|
||||
const reportingSymbol = Symbol('reporting');
|
||||
let server: SetupServerReturn['server'];
|
||||
let eventTracker: EventTracker;
|
||||
let usageCounter: IUsageCounter;
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let registerRouteHandlerContext: SetupServerReturn['registerRouteHandlerContext'];
|
||||
let exportTypesRegistry: ExportTypesRegistry;
|
||||
let reportingCore: ReportingCore;
|
||||
let mockSetupDeps: ReportingInternalSetup;
|
||||
|
@ -79,8 +78,8 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
const mockConfigSchema = createMockConfigSchema();
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup } = await setupServer(reportingSymbol));
|
||||
httpSetup.registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
({ server, createRouter, registerRouteHandlerContext } = await setupServer(reportingSymbol));
|
||||
registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
reportingSymbol,
|
||||
'reporting',
|
||||
() => reportingMock.createStart()
|
||||
|
@ -90,7 +89,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
security: {
|
||||
license: { isEnabled: () => true },
|
||||
},
|
||||
router: httpSetup.createRouter(''),
|
||||
router: createRouter(''),
|
||||
});
|
||||
|
||||
mockStartDeps = await createMockPluginStart(
|
||||
|
@ -160,7 +159,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/1`)
|
||||
.expect(400)
|
||||
.then(({ body }) =>
|
||||
|
@ -186,7 +185,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dope`)
|
||||
.expect(401)
|
||||
.then(({ body }) =>
|
||||
|
@ -200,7 +199,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/poo`)
|
||||
.expect(404);
|
||||
});
|
||||
|
@ -217,9 +216,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.INFO_PREFIX}/test`)
|
||||
.expect(200);
|
||||
await supertest(server.listener).get(`${INTERNAL_ROUTES.JOBS.INFO_PREFIX}/test`).expect(200);
|
||||
});
|
||||
|
||||
it('when a job is incomplete, "internal" API endpoint should return appropriate response', async () => {
|
||||
|
@ -233,7 +230,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`)
|
||||
.expect(STATUS_CODES.PENDING.INTERNAL)
|
||||
.expect('Content-Type', 'text/plain; charset=utf-8')
|
||||
|
@ -253,7 +250,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`)
|
||||
.expect(STATUS_CODES.FAILED.INTERNAL)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8')
|
||||
|
@ -267,7 +264,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`)
|
||||
.expect(STATUS_CODES.COMPLETED)
|
||||
.expect('Content-Type', 'text/csv; charset=utf-8')
|
||||
|
@ -284,7 +281,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dope`)
|
||||
.expect(STATUS_CODES.COMPLETED)
|
||||
.expect('Content-Type', 'text/csv; charset=utf-8')
|
||||
|
@ -300,7 +297,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`)
|
||||
.expect(STATUS_CODES.COMPLETED)
|
||||
.expect('Content-Type', 'text/csv; charset=utf-8')
|
||||
|
@ -317,7 +314,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`)
|
||||
.expect(400)
|
||||
.then(({ body }) => {
|
||||
|
@ -339,7 +336,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/japanese-dashboard`)
|
||||
.expect(STATUS_CODES.COMPLETED)
|
||||
.expect('Content-Type', 'application/pdf')
|
||||
|
@ -356,7 +353,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.INFO_PREFIX}/dank`)
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
|
@ -373,7 +370,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`)
|
||||
.expect(STATUS_CODES.COMPLETED)
|
||||
.expect('Content-Type', 'text/csv; charset=utf-8')
|
||||
|
@ -391,7 +388,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.delete(`${INTERNAL_ROUTES.JOBS.DELETE_PREFIX}/dank`)
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
|
@ -408,7 +405,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(INTERNAL_ROUTES.JOBS.COUNT)
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'text/plain; charset=utf-8');
|
||||
|
@ -438,7 +435,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.delete(`${INTERNAL_ROUTES.JOBS.DELETE_PREFIX}/dank`)
|
||||
.expect(500)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
|
@ -451,9 +448,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener).get(
|
||||
`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`
|
||||
);
|
||||
await supertest(server.listener).get(`${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`);
|
||||
|
||||
expect(eventTracker.downloadReport).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
@ -474,7 +469,7 @@ describe(`Reporting Job Management Routes: Internal`, () => {
|
|||
registerJobInfoRoutes(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.delete(`${INTERNAL_ROUTES.JOBS.DELETE_PREFIX}/dank`)
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
|
|
|
@ -13,7 +13,7 @@ jest.mock('../../../../lib/content_stream', () => ({
|
|||
getContentStream: jest.fn(),
|
||||
}));
|
||||
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { setupServer, SetupServerReturn } from '@kbn/core-test-helpers-test-utils';
|
||||
import {
|
||||
ElasticsearchClientMock,
|
||||
coreMock,
|
||||
|
@ -48,8 +48,6 @@ import {
|
|||
import { auditLoggerMock } from '@kbn/security-plugin/server/audit/mocks';
|
||||
import { TaskManagerStartContract } from '@kbn/task-manager-plugin/server';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const fakeRawRequest = {
|
||||
headers: {
|
||||
authorization: `ApiKey skdjtq4u543yt3rhewrh`,
|
||||
|
@ -150,7 +148,7 @@ describe(`Reporting Schedule Management Routes: Internal`, () => {
|
|||
let server: SetupServerReturn['server'];
|
||||
let eventTracker: EventTracker;
|
||||
let usageCounter: IUsageCounter;
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let httpSetup: SetupServerReturn;
|
||||
let exportTypesRegistry: ExportTypesRegistry;
|
||||
let reportingCore: ReportingCore;
|
||||
let mockSetupDeps: ReportingInternalSetup;
|
||||
|
@ -169,7 +167,8 @@ describe(`Reporting Schedule Management Routes: Internal`, () => {
|
|||
const mockConfigSchema = createMockConfigSchema();
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup } = await setupServer(reportingSymbol));
|
||||
httpSetup = await setupServer(reportingSymbol);
|
||||
server = httpSetup.server;
|
||||
httpSetup.registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
reportingSymbol,
|
||||
'reporting',
|
||||
|
|
|
@ -9,7 +9,7 @@ import rison from '@kbn/rison';
|
|||
import { BehaviorSubject } from 'rxjs';
|
||||
import supertest from 'supertest';
|
||||
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { setupServer, type SetupServerReturn } from '@kbn/core-test-helpers-test-utils';
|
||||
import { coreMock, loggingSystemMock } from '@kbn/core/server/mocks';
|
||||
import { licensingMock } from '@kbn/licensing-plugin/server/mocks';
|
||||
import { INTERNAL_ROUTES } from '@kbn/reporting-common';
|
||||
|
@ -29,8 +29,6 @@ import { registerScheduleRoutesInternal } from '../schedule_from_jobparams';
|
|||
import { FakeRawRequest, KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server';
|
||||
import { auditLoggerMock } from '@kbn/security-plugin/server/audit/mocks';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
const fakeRawRequest: FakeRawRequest = {
|
||||
headers: {
|
||||
authorization: `ApiKey skdjtq4u543yt3rhewrh`,
|
||||
|
@ -40,8 +38,8 @@ const fakeRawRequest: FakeRawRequest = {
|
|||
|
||||
describe(`POST ${INTERNAL_ROUTES.SCHEDULE_PREFIX}`, () => {
|
||||
const reportingSymbol = Symbol('reporting');
|
||||
let httpSetup: SetupServerReturn;
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let mockExportTypesRegistry: ExportTypesRegistry;
|
||||
let reportingCore: ReportingCore;
|
||||
let soClient: SavedObjectsClientContract;
|
||||
|
@ -61,12 +59,13 @@ describe(`POST ${INTERNAL_ROUTES.SCHEDULE_PREFIX}`, () => {
|
|||
);
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup } = await setupServer(reportingSymbol));
|
||||
httpSetup = await setupServer(reportingSymbol);
|
||||
httpSetup.registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
reportingSymbol,
|
||||
'reporting',
|
||||
() => reportingMock.createStart()
|
||||
);
|
||||
server = httpSetup.server;
|
||||
|
||||
const mockSetupDeps = createMockPluginSetup({
|
||||
security: { license: { isEnabled: () => true, getFeature: () => true } },
|
||||
|
|
|
@ -9,7 +9,7 @@ import rison from '@kbn/rison';
|
|||
import { BehaviorSubject } from 'rxjs';
|
||||
import supertest from 'supertest';
|
||||
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { setupServer, SetupServerReturn } from '@kbn/core-test-helpers-test-utils';
|
||||
import { coreMock, loggingSystemMock } from '@kbn/core/server/mocks';
|
||||
import { licensingMock } from '@kbn/licensing-plugin/server/mocks';
|
||||
import { PUBLIC_ROUTES } from '@kbn/reporting-common';
|
||||
|
@ -30,14 +30,13 @@ import { ReportingRequestHandlerContext } from '../../../types';
|
|||
import { EventTracker } from '../../../usage';
|
||||
import { registerGenerationRoutesPublic } from '../generate_from_jobparams';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
||||
const reportingSymbol = Symbol('reporting');
|
||||
let server: SetupServerReturn['server'];
|
||||
let eventTracker: EventTracker;
|
||||
let usageCounter: IUsageCounter;
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let registerRouteHandlerContext: SetupServerReturn['registerRouteHandlerContext'];
|
||||
let mockExportTypesRegistry: ExportTypesRegistry;
|
||||
let reportingCore: ReportingCore;
|
||||
let store: ReportingStore;
|
||||
|
@ -58,8 +57,8 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
);
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup } = await setupServer(reportingSymbol));
|
||||
httpSetup.registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
({ server, createRouter, registerRouteHandlerContext } = await setupServer(reportingSymbol));
|
||||
registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
reportingSymbol,
|
||||
'reporting',
|
||||
() => reportingMock.createStart()
|
||||
|
@ -67,7 +66,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
const mockSetupDeps = createMockPluginSetup({
|
||||
security: { license: { isEnabled: () => true, getFeature: () => true } },
|
||||
router: httpSetup.createRouter(''),
|
||||
router: createRouter(''),
|
||||
});
|
||||
|
||||
const mockStartDeps = await createMockPluginStart(
|
||||
|
@ -124,7 +123,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${PUBLIC_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.expect(400)
|
||||
.then(({ body }) =>
|
||||
|
@ -139,7 +138,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${PUBLIC_ROUTES.GENERATE_PREFIX}/printablePdfV2?jobParams=foo:`)
|
||||
.expect(400)
|
||||
.then(({ body }) => expect(body.message).toMatchInlineSnapshot('"invalid rison: foo:"'));
|
||||
|
@ -150,7 +149,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${PUBLIC_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({ jobParams: `foo:` })
|
||||
.expect(400)
|
||||
|
@ -162,7 +161,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${PUBLIC_ROUTES.GENERATE_PREFIX}/TonyHawksProSkater2`)
|
||||
.send({ jobParams: rison.encode({ title: `abc` }) })
|
||||
.expect(400)
|
||||
|
@ -176,7 +175,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${PUBLIC_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({ jobParams: rison.encode({ browserTimezone: 'America/Amsterdam', title: `abc` }) })
|
||||
.expect(400)
|
||||
|
@ -192,7 +191,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${PUBLIC_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({ jobParams: rison.encode({ title: `abc` }) })
|
||||
.expect(500);
|
||||
|
@ -203,7 +202,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${PUBLIC_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({
|
||||
jobParams: rison.encode({
|
||||
|
@ -243,7 +242,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${PUBLIC_ROUTES.GENERATE_PREFIX}/printablePdf`)
|
||||
.send({
|
||||
jobParams: rison.encode({
|
||||
|
@ -285,7 +284,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${PUBLIC_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({
|
||||
jobParams: rison.encode({
|
||||
|
@ -308,7 +307,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post(`${PUBLIC_ROUTES.GENERATE_PREFIX}/printablePdfV2`)
|
||||
.send({
|
||||
jobParams: rison.encode({
|
||||
|
|
|
@ -14,7 +14,7 @@ import { Readable } from 'stream';
|
|||
import supertest from 'supertest';
|
||||
|
||||
import type { estypes } from '@elastic/elasticsearch';
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { setupServer, SetupServerReturn } from '@kbn/core-test-helpers-test-utils';
|
||||
import { coreMock, type ElasticsearchClientMock } from '@kbn/core/server/mocks';
|
||||
import { licensingMock } from '@kbn/licensing-plugin/server/mocks';
|
||||
import { PUBLIC_ROUTES } from '@kbn/reporting-common';
|
||||
|
@ -35,14 +35,13 @@ import { ReportingRequestHandlerContext } from '../../../types';
|
|||
import { EventTracker } from '../../../usage';
|
||||
import { registerJobInfoRoutesPublic } from '../jobs';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
|
||||
describe(`Reporting Job Management Routes: Public`, () => {
|
||||
const reportingSymbol = Symbol('reporting');
|
||||
let server: SetupServerReturn['server'];
|
||||
let eventTracker: EventTracker;
|
||||
let usageCounter: IUsageCounter;
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let registerRouteHandlerContext: SetupServerReturn['registerRouteHandlerContext'];
|
||||
let exportTypesRegistry: ExportTypesRegistry;
|
||||
let reportingCore: ReportingCore;
|
||||
let mockSetupDeps: ReportingInternalSetup;
|
||||
|
@ -75,8 +74,8 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
const mockConfigSchema = createMockConfigSchema();
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup } = await setupServer(reportingSymbol));
|
||||
httpSetup.registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
({ server, createRouter, registerRouteHandlerContext } = await setupServer(reportingSymbol));
|
||||
registerRouteHandlerContext<ReportingRequestHandlerContext, 'reporting'>(
|
||||
reportingSymbol,
|
||||
'reporting',
|
||||
() => reportingMock.createStart()
|
||||
|
@ -86,7 +85,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
security: {
|
||||
license: { isEnabled: () => true },
|
||||
},
|
||||
router: httpSetup.createRouter(''),
|
||||
router: createRouter(''),
|
||||
});
|
||||
|
||||
mockStartDeps = await createMockPluginStart(
|
||||
|
@ -149,7 +148,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/1`)
|
||||
.expect(400)
|
||||
.then(({ body }) =>
|
||||
|
@ -175,7 +174,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dope`)
|
||||
.expect(401)
|
||||
.then(({ body }) =>
|
||||
|
@ -189,9 +188,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
|
||||
await server.start();
|
||||
|
||||
await supertest(httpSetup.server.listener)
|
||||
.get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/poo`)
|
||||
.expect(404);
|
||||
await supertest(server.listener).get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/poo`).expect(404);
|
||||
});
|
||||
|
||||
it('when a job is incomplete', async () => {
|
||||
|
@ -205,7 +202,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
registerJobInfoRoutesPublic(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`)
|
||||
.expect(503)
|
||||
.expect('Content-Type', 'text/plain; charset=utf-8')
|
||||
|
@ -225,7 +222,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
registerJobInfoRoutesPublic(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`)
|
||||
.expect(500)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8')
|
||||
|
@ -239,7 +236,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
registerJobInfoRoutesPublic(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`)
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'text/csv; charset=utf-8')
|
||||
|
@ -264,7 +261,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
registerJobInfoRoutesPublic(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.delete(`${PUBLIC_ROUTES.JOBS.DELETE_PREFIX}/denk`)
|
||||
.expect(500)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
|
@ -277,7 +274,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
registerJobInfoRoutesPublic(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`)
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'text/csv; charset=utf-8')
|
||||
|
@ -295,7 +292,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
registerJobInfoRoutesPublic(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.delete(`${PUBLIC_ROUTES.JOBS.DELETE_PREFIX}/dank`)
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
|
@ -312,7 +309,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
registerJobInfoRoutesPublic(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener).get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`);
|
||||
await supertest(server.listener).get(`${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}/dank`);
|
||||
|
||||
expect(eventTracker.downloadReport).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
@ -333,7 +330,7 @@ describe(`Reporting Job Management Routes: Public`, () => {
|
|||
registerJobInfoRoutesPublic(reportingCore);
|
||||
|
||||
await server.start();
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.delete(`${PUBLIC_ROUTES.JOBS.DELETE_PREFIX}/dank`)
|
||||
.expect(200)
|
||||
.expect('Content-Type', 'application/json; charset=utf-8');
|
||||
|
|
|
@ -7,13 +7,12 @@
|
|||
|
||||
import { of, throwError } from 'rxjs';
|
||||
import supertest from 'supertest';
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { setupServer, SetupServerReturn } from '@kbn/core-test-helpers-test-utils';
|
||||
import { GlobalSearchResult, GlobalSearchBatchedResults } from '../../../common/types';
|
||||
import { GlobalSearchFindError } from '../../../common/errors';
|
||||
import { globalSearchPluginMock } from '../../mocks';
|
||||
import { registerInternalFindRoute } from '../find';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
const pluginId = Symbol('globalSearch');
|
||||
|
||||
const createResult = (id: string): GlobalSearchResult => ({
|
||||
|
@ -32,21 +31,22 @@ const expectedResults = (...ids: string[]) => ids.map((id) => expect.objectConta
|
|||
|
||||
describe('POST /internal/global_search/find', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let registerRouteHandlerContext: SetupServerReturn['registerRouteHandlerContext'];
|
||||
let globalSearchHandlerContext: ReturnType<
|
||||
typeof globalSearchPluginMock.createRouteHandlerContext
|
||||
>;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup } = await setupServer(pluginId));
|
||||
({ server, createRouter, registerRouteHandlerContext } = await setupServer(pluginId));
|
||||
|
||||
globalSearchHandlerContext = globalSearchPluginMock.createRouteHandlerContext();
|
||||
httpSetup.registerRouteHandlerContext<
|
||||
registerRouteHandlerContext<
|
||||
ReturnType<typeof globalSearchPluginMock.createRequestHandlerContext>,
|
||||
'globalSearch'
|
||||
>(pluginId, 'globalSearch', () => globalSearchHandlerContext);
|
||||
|
||||
const router = httpSetup.createRouter<any>('/');
|
||||
const router = createRouter<any>('/');
|
||||
|
||||
registerInternalFindRoute(router);
|
||||
|
||||
|
@ -58,7 +58,7 @@ describe('POST /internal/global_search/find', () => {
|
|||
});
|
||||
|
||||
it('calls the handler context with correct parameters', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
await supertest(server.listener)
|
||||
.post('/internal/global_search/find')
|
||||
.send({
|
||||
params: {
|
||||
|
@ -86,7 +86,7 @@ describe('POST /internal/global_search/find', () => {
|
|||
of(createBatch('1', '2'), createBatch('3', '4'))
|
||||
);
|
||||
|
||||
const response = await supertest(httpSetup.server.listener)
|
||||
const response = await supertest(server.listener)
|
||||
.post('/internal/global_search/find')
|
||||
.send({
|
||||
params: {
|
||||
|
@ -105,7 +105,7 @@ describe('POST /internal/global_search/find', () => {
|
|||
throwError(GlobalSearchFindError.invalidLicense('invalid-license-message'))
|
||||
);
|
||||
|
||||
const response = await supertest(httpSetup.server.listener)
|
||||
const response = await supertest(server.listener)
|
||||
.post('/internal/global_search/find')
|
||||
.send({
|
||||
params: {
|
||||
|
@ -125,7 +125,7 @@ describe('POST /internal/global_search/find', () => {
|
|||
it('returns the default error when the observable throws any other error', async () => {
|
||||
globalSearchHandlerContext.find.mockReturnValue(throwError('any-error'));
|
||||
|
||||
const response = await supertest(httpSetup.server.listener)
|
||||
const response = await supertest(server.listener)
|
||||
.post('/internal/global_search/find')
|
||||
.send({
|
||||
params: {
|
||||
|
|
|
@ -6,33 +6,31 @@
|
|||
*/
|
||||
|
||||
import supertest from 'supertest';
|
||||
import { setupServer } from '@kbn/core-test-helpers-test-utils';
|
||||
import { setupServer, SetupServerReturn } from '@kbn/core-test-helpers-test-utils';
|
||||
import { globalSearchPluginMock } from '../../mocks';
|
||||
import { registerInternalSearchableTypesRoute } from '../get_searchable_types';
|
||||
|
||||
type SetupServerReturn = Awaited<ReturnType<typeof setupServer>>;
|
||||
const pluginId = Symbol('globalSearch');
|
||||
|
||||
describe('GET /internal/global_search/searchable_types', () => {
|
||||
let server: SetupServerReturn['server'];
|
||||
let httpSetup: SetupServerReturn['httpSetup'];
|
||||
let createRouter: SetupServerReturn['createRouter'];
|
||||
let registerRouteHandlerContext: SetupServerReturn['registerRouteHandlerContext'];
|
||||
let globalSearchHandlerContext: ReturnType<
|
||||
typeof globalSearchPluginMock.createRouteHandlerContext
|
||||
>;
|
||||
|
||||
beforeEach(async () => {
|
||||
({ server, httpSetup } = await setupServer(pluginId));
|
||||
({ server, createRouter, registerRouteHandlerContext } = await setupServer(pluginId));
|
||||
|
||||
globalSearchHandlerContext = globalSearchPluginMock.createRouteHandlerContext();
|
||||
httpSetup.registerRouteHandlerContext<
|
||||
registerRouteHandlerContext<
|
||||
ReturnType<typeof globalSearchPluginMock.createRequestHandlerContext>,
|
||||
'globalSearch'
|
||||
>(pluginId, 'globalSearch', () => globalSearchHandlerContext);
|
||||
|
||||
const router =
|
||||
httpSetup.createRouter<ReturnType<typeof globalSearchPluginMock.createRequestHandlerContext>>(
|
||||
'/'
|
||||
);
|
||||
createRouter<ReturnType<typeof globalSearchPluginMock.createRequestHandlerContext>>('/');
|
||||
|
||||
registerInternalSearchableTypesRoute(router);
|
||||
|
||||
|
@ -44,9 +42,7 @@ describe('GET /internal/global_search/searchable_types', () => {
|
|||
});
|
||||
|
||||
it('calls the handler context with correct parameters', async () => {
|
||||
await supertest(httpSetup.server.listener)
|
||||
.get('/internal/global_search/searchable_types')
|
||||
.expect(200);
|
||||
await supertest(server.listener).get('/internal/global_search/searchable_types').expect(200);
|
||||
|
||||
expect(globalSearchHandlerContext.getSearchableTypes).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
@ -54,7 +50,7 @@ describe('GET /internal/global_search/searchable_types', () => {
|
|||
it('returns the types returned from the service', async () => {
|
||||
globalSearchHandlerContext.getSearchableTypes.mockResolvedValue(['type-a', 'type-b']);
|
||||
|
||||
const response = await supertest(httpSetup.server.listener)
|
||||
const response = await supertest(server.listener)
|
||||
.get('/internal/global_search/searchable_types')
|
||||
.expect(200);
|
||||
|
||||
|
@ -66,7 +62,7 @@ describe('GET /internal/global_search/searchable_types', () => {
|
|||
it('returns the default error when the observable throws any other error', async () => {
|
||||
globalSearchHandlerContext.getSearchableTypes.mockRejectedValue(new Error());
|
||||
|
||||
const response = await supertest(httpSetup.server.listener)
|
||||
const response = await supertest(server.listener)
|
||||
.get('/internal/global_search/searchable_types')
|
||||
.expect(500);
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
* 2.0.
|
||||
*/
|
||||
import { setTimeout as setTimeoutPromise } from 'timers/promises';
|
||||
import { contextServiceMock, executionContextServiceMock } from '@kbn/core/server/mocks';
|
||||
import { createHttpService } from '@kbn/core-http-server-mocks';
|
||||
import type { ElasticsearchClient, KibanaRequest } from '@kbn/core/server';
|
||||
import type { estypes } from '@elastic/elasticsearch';
|
||||
|
@ -37,13 +36,8 @@ describe('APMEventClient', () => {
|
|||
});
|
||||
|
||||
it('cancels a search when a request is aborted', async () => {
|
||||
await server.preboot({
|
||||
context: contextServiceMock.createPrebootContract(),
|
||||
});
|
||||
const { server: innerServer, createRouter } = await server.setup({
|
||||
context: contextServiceMock.createSetupContract(),
|
||||
executionContext: executionContextServiceMock.createInternalSetupContract(),
|
||||
});
|
||||
await server.preboot();
|
||||
const { server: innerServer, createRouter } = await server.setup();
|
||||
const router = createRouter('/');
|
||||
|
||||
let abortSignal: AbortSignal | undefined;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue