mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
Introduce the KibanaRequest interface (#135401)
* Introduce the IKibanaRequest interface * swap to keeping the KibanaRequest name for the interface * adapt usages * fix mock * export CoreKibanaRequest for now... * adapt imports from tests * lint * more missed usages in tests * fix another instanceof... * improve tsdoc
This commit is contained in:
parent
d50434ed7b
commit
98c73d5278
26 changed files with 216 additions and 126 deletions
|
@ -15,9 +15,10 @@ import { stringify } from 'query-string';
|
|||
import { schema } from '@kbn/config-schema';
|
||||
|
||||
import {
|
||||
KibanaRequest,
|
||||
CoreKibanaRequest,
|
||||
LifecycleResponseFactory,
|
||||
RouteMethod,
|
||||
KibanaRequest,
|
||||
KibanaResponseFactory,
|
||||
RouteValidationSpec,
|
||||
KibanaRouteOptions,
|
||||
|
@ -62,13 +63,16 @@ function createKibanaRequestMock<P = any, Q = any, B = any>({
|
|||
routeAuthRequired,
|
||||
validation = {},
|
||||
kibanaRouteOptions = { xsrfRequired: true },
|
||||
kibanaRequestState = { requestId: '123', requestUuid: '123e4567-e89b-12d3-a456-426614174000' },
|
||||
kibanaRequestState = {
|
||||
requestId: '123',
|
||||
requestUuid: '123e4567-e89b-12d3-a456-426614174000',
|
||||
},
|
||||
auth = { isAuthenticated: true },
|
||||
}: RequestFixtureOptions<P, Q, B> = {}) {
|
||||
}: RequestFixtureOptions<P, Q, B> = {}): KibanaRequest<P, Q, B> {
|
||||
const queryString = stringify(query, { sort: false });
|
||||
const url = new URL(`${path}${queryString ? `?${queryString}` : ''}`, 'http://localhost');
|
||||
|
||||
return KibanaRequest.from<P, Q, B>(
|
||||
return CoreKibanaRequest.from<P, Q, B>(
|
||||
createRawRequestMock({
|
||||
app: kibanaRequestState,
|
||||
auth,
|
||||
|
|
|
@ -14,7 +14,7 @@ export type { AuthStatus, GetAuthState, IsAuthenticated } from './auth_state_sto
|
|||
export {
|
||||
isKibanaRequest,
|
||||
isRealRequest,
|
||||
KibanaRequest,
|
||||
CoreKibanaRequest,
|
||||
kibanaResponseFactory,
|
||||
validBodyOutput,
|
||||
} from './router';
|
||||
|
@ -25,6 +25,7 @@ export type {
|
|||
HttpResponseOptions,
|
||||
HttpResponsePayload,
|
||||
ErrorHttpResponseOptions,
|
||||
KibanaRequest,
|
||||
KibanaRequestEvents,
|
||||
KibanaRequestRoute,
|
||||
KibanaRequestRouteOptions,
|
||||
|
|
|
@ -11,6 +11,7 @@ import type { Logger } from '@kbn/logging';
|
|||
import {
|
||||
HapiResponseAdapter,
|
||||
KibanaRequest,
|
||||
CoreKibanaRequest,
|
||||
IKibanaResponse,
|
||||
lifecycleResponseFactory,
|
||||
LifecycleResponseFactory,
|
||||
|
@ -161,7 +162,7 @@ export function adoptToHapiAuthFormat(
|
|||
responseToolkit: ResponseToolkit
|
||||
): Promise<Lifecycle.ReturnValue> {
|
||||
const hapiResponseAdapter = new HapiResponseAdapter(responseToolkit);
|
||||
const kibanaRequest = KibanaRequest.from(request, undefined, false);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request, undefined, false);
|
||||
|
||||
try {
|
||||
const result = await fn(kibanaRequest, lifecycleResponseFactory, toolkit);
|
||||
|
|
|
@ -10,6 +10,7 @@ import { Lifecycle, Request, ResponseToolkit as HapiResponseToolkit } from '@hap
|
|||
import type { Logger } from '@kbn/logging';
|
||||
import {
|
||||
HapiResponseAdapter,
|
||||
CoreKibanaRequest,
|
||||
KibanaRequest,
|
||||
KibanaResponse,
|
||||
lifecycleResponseFactory,
|
||||
|
@ -71,7 +72,7 @@ export function adoptToHapiOnPostAuthFormat(fn: OnPostAuthHandler, log: Logger)
|
|||
): Promise<Lifecycle.ReturnValue> {
|
||||
const hapiResponseAdapter = new HapiResponseAdapter(responseToolkit);
|
||||
try {
|
||||
const result = await fn(KibanaRequest.from(request), lifecycleResponseFactory, toolkit);
|
||||
const result = await fn(CoreKibanaRequest.from(request), lifecycleResponseFactory, toolkit);
|
||||
if (result instanceof KibanaResponse) {
|
||||
return hapiResponseAdapter.handle(result);
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import type { Logger } from '@kbn/logging';
|
|||
import {
|
||||
HapiResponseAdapter,
|
||||
KibanaRequest,
|
||||
CoreKibanaRequest,
|
||||
KibanaResponse,
|
||||
lifecycleResponseFactory,
|
||||
LifecycleResponseFactory,
|
||||
|
@ -72,7 +73,7 @@ export function adoptToHapiOnPreAuth(fn: OnPreAuthHandler, log: Logger) {
|
|||
const hapiResponseAdapter = new HapiResponseAdapter(responseToolkit);
|
||||
|
||||
try {
|
||||
const result = await fn(KibanaRequest.from(request), lifecycleResponseFactory, toolkit);
|
||||
const result = await fn(CoreKibanaRequest.from(request), lifecycleResponseFactory, toolkit);
|
||||
if (result instanceof KibanaResponse) {
|
||||
return hapiResponseAdapter.handle(result);
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ import {
|
|||
import Boom from '@hapi/boom';
|
||||
import type { Logger } from '@kbn/logging';
|
||||
|
||||
import { HapiResponseAdapter, KibanaRequest, ResponseHeaders } from '../router';
|
||||
import { HapiResponseAdapter, CoreKibanaRequest, KibanaRequest, ResponseHeaders } from '../router';
|
||||
|
||||
enum ResultType {
|
||||
render = 'render',
|
||||
|
@ -126,7 +126,7 @@ export function adoptToHapiOnPreResponseFormat(fn: OnPreResponseHandler, log: Lo
|
|||
? response.output.statusCode
|
||||
: response.statusCode;
|
||||
|
||||
const result = await fn(KibanaRequest.from(request), { statusCode }, toolkit);
|
||||
const result = await fn(CoreKibanaRequest.from(request), { statusCode }, toolkit);
|
||||
|
||||
if (preResponseResult.isNext(result)) {
|
||||
if (result.headers) {
|
||||
|
|
|
@ -10,6 +10,7 @@ import { Lifecycle, Request, ResponseToolkit as HapiResponseToolkit } from '@hap
|
|||
import type { Logger } from '@kbn/logging';
|
||||
import {
|
||||
HapiResponseAdapter,
|
||||
CoreKibanaRequest,
|
||||
KibanaRequest,
|
||||
KibanaResponse,
|
||||
lifecycleResponseFactory,
|
||||
|
@ -88,7 +89,7 @@ export function adoptToHapiOnRequest(fn: OnPreRoutingHandler, log: Logger) {
|
|||
const hapiResponseAdapter = new HapiResponseAdapter(responseToolkit);
|
||||
|
||||
try {
|
||||
const result = await fn(KibanaRequest.from(request), lifecycleResponseFactory, toolkit);
|
||||
const result = await fn(CoreKibanaRequest.from(request), lifecycleResponseFactory, toolkit);
|
||||
if (result instanceof KibanaResponse) {
|
||||
return hapiResponseAdapter.handle(result);
|
||||
}
|
||||
|
|
|
@ -16,13 +16,14 @@ export type {
|
|||
RouteRegistrar,
|
||||
RouterRoute,
|
||||
} from './router';
|
||||
export { isKibanaRequest, isRealRequest, ensureRawRequest, KibanaRequest } from './request';
|
||||
export { isKibanaRequest, isRealRequest, ensureRawRequest, CoreKibanaRequest } from './request';
|
||||
export type {
|
||||
KibanaRequestEvents,
|
||||
KibanaRequestRoute,
|
||||
KibanaRequestRouteOptions,
|
||||
KibanaRouteOptions,
|
||||
KibanaRequestState,
|
||||
KibanaRequest,
|
||||
} from './request';
|
||||
export { isSafeMethod, validBodyOutput } from './route';
|
||||
export type {
|
||||
|
|
|
@ -11,17 +11,17 @@ jest.mock('uuid', () => ({
|
|||
}));
|
||||
|
||||
import { RouteOptions } from '@hapi/hapi';
|
||||
import { KibanaRequest } from './request';
|
||||
import { CoreKibanaRequest } from './request';
|
||||
import { httpServerMock } from '../http_server.mocks';
|
||||
import { schema } from '@kbn/config-schema';
|
||||
|
||||
describe('KibanaRequest', () => {
|
||||
describe('CoreKibanaRequest', () => {
|
||||
describe('id property', () => {
|
||||
it('uses the request.app.requestId property if present', () => {
|
||||
const request = httpServerMock.createRawRequest({
|
||||
app: { requestId: 'fakeId' },
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
expect(kibanaRequest.id).toEqual('fakeId');
|
||||
});
|
||||
|
||||
|
@ -30,7 +30,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
app: undefined,
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
expect(kibanaRequest.id).toEqual('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
|
||||
});
|
||||
|
||||
|
@ -39,7 +39,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
app: {},
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
expect(kibanaRequest.id).toEqual('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
|
||||
});
|
||||
});
|
||||
|
@ -49,7 +49,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
app: { requestUuid: '123e4567-e89b-12d3-a456-426614174000' },
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
expect(kibanaRequest.uuid).toEqual('123e4567-e89b-12d3-a456-426614174000');
|
||||
});
|
||||
|
||||
|
@ -58,7 +58,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
app: undefined,
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
expect(kibanaRequest.uuid).toEqual('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
|
||||
});
|
||||
|
||||
|
@ -67,7 +67,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
app: {},
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
expect(kibanaRequest.uuid).toEqual('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
|
||||
});
|
||||
});
|
||||
|
@ -77,7 +77,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
headers: { custom: 'one', authorization: 'token' },
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
expect(kibanaRequest.headers).toEqual({ custom: 'one', authorization: 'token' });
|
||||
});
|
||||
});
|
||||
|
@ -88,7 +88,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
headers: rawRequestHeaders,
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
|
||||
expect(kibanaRequest.headers).toEqual({ custom: 'one' });
|
||||
expect(kibanaRequest.headers).not.toBe(rawRequestHeaders);
|
||||
|
@ -99,7 +99,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
headers: { custom: 'one', authorization: 'token' },
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
expect(kibanaRequest.headers).toEqual({
|
||||
custom: 'one',
|
||||
});
|
||||
|
@ -109,7 +109,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
headers: { custom: 'one', authorization: 'token' },
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request, undefined, false);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request, undefined, false);
|
||||
expect(kibanaRequest.headers).toEqual({
|
||||
custom: 'one',
|
||||
authorization: 'token',
|
||||
|
@ -122,7 +122,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
headers: { custom: 'one' },
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
expect(kibanaRequest.isSystemRequest).toBe(false);
|
||||
});
|
||||
|
||||
|
@ -130,7 +130,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
headers: { custom: 'one', 'kbn-system-request': 'true' },
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
expect(kibanaRequest.isSystemRequest).toBe(true);
|
||||
});
|
||||
|
||||
|
@ -138,7 +138,7 @@ describe('KibanaRequest', () => {
|
|||
const request = httpServerMock.createRawRequest({
|
||||
headers: { custom: 'one', 'kbn-system-request': 'false' },
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
expect(kibanaRequest.isSystemRequest).toBe(false);
|
||||
});
|
||||
});
|
||||
|
@ -153,7 +153,7 @@ describe('KibanaRequest', () => {
|
|||
},
|
||||
},
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
|
||||
expect(kibanaRequest.route.options.authRequired).toBe(true);
|
||||
});
|
||||
|
@ -167,7 +167,7 @@ describe('KibanaRequest', () => {
|
|||
},
|
||||
},
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
|
||||
expect(kibanaRequest.route.options.authRequired).toBe(false);
|
||||
});
|
||||
|
@ -179,7 +179,7 @@ describe('KibanaRequest', () => {
|
|||
},
|
||||
},
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
|
||||
expect(kibanaRequest.route.options.authRequired).toBe(true);
|
||||
});
|
||||
|
@ -192,7 +192,7 @@ describe('KibanaRequest', () => {
|
|||
},
|
||||
},
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
|
||||
expect(kibanaRequest.route.options.authRequired).toBe('optional');
|
||||
});
|
||||
|
@ -205,7 +205,7 @@ describe('KibanaRequest', () => {
|
|||
},
|
||||
},
|
||||
});
|
||||
const kibanaRequest = KibanaRequest.from(request);
|
||||
const kibanaRequest = CoreKibanaRequest.from(request);
|
||||
|
||||
expect(kibanaRequest.route.options.authRequired).toBe('optional');
|
||||
});
|
||||
|
@ -219,7 +219,7 @@ describe('KibanaRequest', () => {
|
|||
},
|
||||
});
|
||||
|
||||
expect(() => KibanaRequest.from(request)).toThrowErrorMatchingInlineSnapshot(
|
||||
expect(() => CoreKibanaRequest.from(request)).toThrowErrorMatchingInlineSnapshot(
|
||||
`"unexpected authentication options: {\\"strategies\\":[\\"session\\"]} for route: /"`
|
||||
);
|
||||
});
|
||||
|
@ -233,7 +233,7 @@ describe('KibanaRequest', () => {
|
|||
},
|
||||
});
|
||||
|
||||
expect(() => KibanaRequest.from(request)).toThrowErrorMatchingInlineSnapshot(
|
||||
expect(() => CoreKibanaRequest.from(request)).toThrowErrorMatchingInlineSnapshot(
|
||||
`"unexpected authentication options: {} for route: /"`
|
||||
);
|
||||
});
|
||||
|
@ -249,7 +249,7 @@ describe('KibanaRequest', () => {
|
|||
}),
|
||||
payload: body, // Set outside because the mock is using `merge` by lodash and breaks the Buffer into arrays
|
||||
} as any;
|
||||
const kibanaRequest = KibanaRequest.from(request, {
|
||||
const kibanaRequest = CoreKibanaRequest.from(request, {
|
||||
params: schema.object({ id: schema.string() }),
|
||||
query: schema.object({ search: schema.string() }),
|
||||
body: schema.buffer(),
|
||||
|
@ -271,7 +271,7 @@ describe('KibanaRequest', () => {
|
|||
}),
|
||||
payload: body, // Set outside because the mock is using `merge` by lodash and breaks the Buffer into arrays
|
||||
} as any;
|
||||
const kibanaRequest = KibanaRequest.from(request, {
|
||||
const kibanaRequest = CoreKibanaRequest.from(request, {
|
||||
params: schema.object({ id: schema.string() }),
|
||||
query: schema.object({ search: schema.string() }),
|
||||
body: (data, { ok, badRequest }) => {
|
||||
|
|
|
@ -77,16 +77,115 @@ export interface KibanaRequestEvents {
|
|||
completed$: Observable<void>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Auth status for this request.
|
||||
* @public
|
||||
*/
|
||||
export interface KibanaRequestAuth {
|
||||
/** true if the request has been successfully authenticated, false otherwise. */
|
||||
isAuthenticated: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Kibana specific abstraction for an incoming request.
|
||||
* @public
|
||||
*/
|
||||
export class KibanaRequest<
|
||||
export interface KibanaRequest<
|
||||
Params = unknown,
|
||||
Query = unknown,
|
||||
Body = unknown,
|
||||
Method extends RouteMethod = any
|
||||
> {
|
||||
/**
|
||||
* A identifier to identify this request.
|
||||
*
|
||||
* @remarks
|
||||
* Depending on the user's configuration, this value may be sourced from the
|
||||
* incoming request's `X-Opaque-Id` header which is not guaranteed to be unique
|
||||
* per request.
|
||||
*/
|
||||
readonly id: string;
|
||||
|
||||
/**
|
||||
* A UUID to identify this request.
|
||||
*
|
||||
* @remarks
|
||||
* This value is NOT sourced from the incoming request's `X-Opaque-Id` header. it
|
||||
* is always a UUID uniquely identifying the request.
|
||||
*/
|
||||
readonly uuid: string;
|
||||
|
||||
/** a WHATWG URL standard object. */
|
||||
readonly url: URL;
|
||||
|
||||
/** matched route details */
|
||||
readonly route: RecursiveReadonly<KibanaRequestRoute<Method>>;
|
||||
|
||||
/**
|
||||
* Readonly copy of incoming request headers.
|
||||
* @remarks
|
||||
* This property will contain a `filtered` copy of request headers.
|
||||
*/
|
||||
readonly headers: Headers;
|
||||
|
||||
/**
|
||||
* Whether or not the request is a "system request" rather than an application-level request.
|
||||
* Can be set on the client using the `HttpFetchOptions#asSystemRequest` option.
|
||||
*/
|
||||
readonly isSystemRequest: boolean;
|
||||
|
||||
/**
|
||||
* The socket associated with this request.
|
||||
* See {@link IKibanaSocket}.
|
||||
*/
|
||||
readonly socket: IKibanaSocket;
|
||||
|
||||
/**
|
||||
* Allow to listen to events bound to this request.
|
||||
* See {@link KibanaRequestEvents}.
|
||||
*/
|
||||
readonly events: KibanaRequestEvents;
|
||||
|
||||
/**
|
||||
* The auth status of this request.
|
||||
* See {@link KibanaRequestAuth}.
|
||||
*/
|
||||
readonly auth: KibanaRequestAuth;
|
||||
|
||||
/**
|
||||
* URL rewritten in onPreRouting request interceptor.
|
||||
*/
|
||||
readonly rewrittenUrl?: URL;
|
||||
|
||||
/**
|
||||
* The path parameter of this request.
|
||||
*/
|
||||
readonly params: Params;
|
||||
|
||||
/**
|
||||
* The query parameter of this request.
|
||||
*/
|
||||
readonly query: Query;
|
||||
|
||||
/**
|
||||
* The body payload of this request.
|
||||
*/
|
||||
readonly body: Body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Core internal implementation of {@link KibanaRequest}
|
||||
* @internal
|
||||
* @remarks Only publicly exposed for consumers that need to forge requests using {@link CoreKibanaRequest.from}.
|
||||
* All other usages should import and use the {@link KibanaRequest} interface instead.
|
||||
*/
|
||||
export class CoreKibanaRequest<
|
||||
Params = unknown,
|
||||
Query = unknown,
|
||||
Body = unknown,
|
||||
Method extends RouteMethod = any
|
||||
> implements KibanaRequest<Params, Query, Body, Method>
|
||||
{
|
||||
/**
|
||||
* Factory for creating requests. Validates the request before creating an
|
||||
* instance of a KibanaRequest.
|
||||
|
@ -98,8 +197,8 @@ export class KibanaRequest<
|
|||
withoutSecretHeaders: boolean = true
|
||||
) {
|
||||
const routeValidator = RouteValidator.from<P, Q, B>(routeSchemas);
|
||||
const requestParts = KibanaRequest.validate(req, routeValidator);
|
||||
return new KibanaRequest(
|
||||
const requestParts = CoreKibanaRequest.validate(req, routeValidator);
|
||||
return new CoreKibanaRequest(
|
||||
req,
|
||||
requestParts.params,
|
||||
requestParts.query,
|
||||
|
@ -128,51 +227,25 @@ export class KibanaRequest<
|
|||
return { query, params, body };
|
||||
}
|
||||
|
||||
/**
|
||||
* A identifier to identify this request.
|
||||
*
|
||||
* @remarks
|
||||
* Depending on the user's configuration, this value may be sourced from the
|
||||
* incoming request's `X-Opaque-Id` header which is not guaranteed to be unique
|
||||
* per request.
|
||||
*/
|
||||
/** {@inheritDoc IKibanaRequest.id} */
|
||||
public readonly id: string;
|
||||
/**
|
||||
* A UUID to identify this request.
|
||||
*
|
||||
* @remarks
|
||||
* This value is NOT sourced from the incoming request's `X-Opaque-Id` header. it
|
||||
* is always a UUID uniquely identifying the request.
|
||||
*/
|
||||
/** {@inheritDoc IKibanaRequest.uuid} */
|
||||
public readonly uuid: string;
|
||||
/** a WHATWG URL standard object. */
|
||||
/** {@inheritDoc IKibanaRequest.url} */
|
||||
public readonly url: URL;
|
||||
/** matched route details */
|
||||
/** {@inheritDoc IKibanaRequest.route} */
|
||||
public readonly route: RecursiveReadonly<KibanaRequestRoute<Method>>;
|
||||
/**
|
||||
* Readonly copy of incoming request headers.
|
||||
* @remarks
|
||||
* This property will contain a `filtered` copy of request headers.
|
||||
*/
|
||||
/** {@inheritDoc IKibanaRequest.headers} */
|
||||
public readonly headers: Headers;
|
||||
/**
|
||||
* Whether or not the request is a "system request" rather than an application-level request.
|
||||
* Can be set on the client using the `HttpFetchOptions#asSystemRequest` option.
|
||||
*/
|
||||
/** {@inheritDoc IKibanaRequest.isSystemRequest} */
|
||||
public readonly isSystemRequest: boolean;
|
||||
|
||||
/** {@link IKibanaSocket} */
|
||||
/** {@inheritDoc IKibanaRequest.socket} */
|
||||
public readonly socket: IKibanaSocket;
|
||||
/** Request events {@link KibanaRequestEvents} */
|
||||
/** {@inheritDoc IKibanaRequest.events} */
|
||||
public readonly events: KibanaRequestEvents;
|
||||
public readonly auth: {
|
||||
/* true if the request has been successfully authenticated, otherwise false. */
|
||||
isAuthenticated: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
* URL rewritten in onPreRouting request interceptor.
|
||||
*/
|
||||
/** {@inheritDoc IKibanaRequest.auth} */
|
||||
public readonly auth: KibanaRequestAuth;
|
||||
/** {@inheritDoc IKibanaRequest.rewrittenUrl} */
|
||||
public readonly rewrittenUrl?: URL;
|
||||
|
||||
/** @internal */
|
||||
|
@ -312,14 +385,14 @@ export class KibanaRequest<
|
|||
* @internal
|
||||
*/
|
||||
export const ensureRawRequest = (request: KibanaRequest | Request) =>
|
||||
isKibanaRequest(request) ? request[requestSymbol] : request;
|
||||
isKibanaRequest(request) ? request[requestSymbol] : (request as Request);
|
||||
|
||||
/**
|
||||
* Checks if an incoming request is a {@link KibanaRequest}
|
||||
* @internal
|
||||
*/
|
||||
export function isKibanaRequest(request: unknown): request is KibanaRequest {
|
||||
return request instanceof KibanaRequest;
|
||||
export function isKibanaRequest(request: unknown): request is CoreKibanaRequest {
|
||||
return request instanceof CoreKibanaRequest;
|
||||
}
|
||||
|
||||
function isRequest(request: any): request is Request {
|
||||
|
|
|
@ -15,7 +15,7 @@ import {
|
|||
isUnauthorizedError as isElasticsearchUnauthorizedError,
|
||||
UnauthorizedError as EsNotAuthorizedError,
|
||||
} from '../../elasticsearch/client/errors';
|
||||
import { KibanaRequest } from './request';
|
||||
import { KibanaRequest, CoreKibanaRequest } from './request';
|
||||
import {
|
||||
KibanaResponseFactory,
|
||||
kibanaResponseFactory,
|
||||
|
@ -266,7 +266,7 @@ export class Router<Context extends RequestHandlerContext = RequestHandlerContex
|
|||
let kibanaRequest: KibanaRequest<P, Q, B, typeof request.method>;
|
||||
const hapiResponseAdapter = new HapiResponseAdapter(responseToolkit);
|
||||
try {
|
||||
kibanaRequest = KibanaRequest.from(request, routeSchemas);
|
||||
kibanaRequest = CoreKibanaRequest.from(request, routeSchemas);
|
||||
} catch (e) {
|
||||
return hapiResponseAdapter.toBadRequest(e.message);
|
||||
}
|
||||
|
|
|
@ -235,7 +235,8 @@ export type {
|
|||
SafeRouteMethod,
|
||||
} from './http';
|
||||
|
||||
export { KibanaRequest, kibanaResponseFactory, validBodyOutput } from './http';
|
||||
export { kibanaResponseFactory, validBodyOutput, CoreKibanaRequest } from './http';
|
||||
export type { KibanaRequest } from './http';
|
||||
|
||||
export type {
|
||||
HttpResourcesRenderOptions,
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*/
|
||||
|
||||
import { SavedObject } from '../../../types';
|
||||
import { KibanaRequest } from '../../http';
|
||||
import { CoreKibanaRequest } from '../../http';
|
||||
import { httpServerMock } from '../../http/http_server.mocks';
|
||||
import { applyExportTransforms } from './apply_export_transforms';
|
||||
import { SavedObjectsExportTransform } from './types';
|
||||
|
@ -30,7 +30,7 @@ const createTransform = (
|
|||
const toMap = <V>(record: Record<string, V>): Map<string, V> => new Map(Object.entries(record));
|
||||
|
||||
const expectedContext = {
|
||||
request: expect.any(KibanaRequest),
|
||||
request: expect.any(CoreKibanaRequest),
|
||||
};
|
||||
|
||||
describe('applyExportTransforms', () => {
|
||||
|
|
|
@ -14,6 +14,7 @@ import {
|
|||
Logger,
|
||||
SavedObjectsClientContract,
|
||||
KibanaRequest,
|
||||
CoreKibanaRequest,
|
||||
SavedObjectReference,
|
||||
IBasePath,
|
||||
SavedObject,
|
||||
|
@ -226,7 +227,7 @@ function getFakeRequest(apiKey?: string) {
|
|||
|
||||
// Since we're using API keys and accessing elasticsearch can only be done
|
||||
// via a request, we're faking one with the proper authorization headers.
|
||||
const fakeRequest = KibanaRequest.from({
|
||||
const fakeRequest = CoreKibanaRequest.from({
|
||||
headers: requestHeaders,
|
||||
path: '/',
|
||||
route: { settings: {} },
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
import { Request } from '@hapi/hapi';
|
||||
import { ruleTypeRegistryMock } from './rule_type_registry.mock';
|
||||
import { KibanaRequest } from '@kbn/core/server';
|
||||
import { CoreKibanaRequest } from '@kbn/core/server';
|
||||
import { savedObjectsClientMock } from '@kbn/core/server/mocks';
|
||||
import { securityMock } from '@kbn/security-plugin/server/mocks';
|
||||
import {
|
||||
|
@ -60,7 +60,7 @@ test('creates an alerting authorization client with proper constructor arguments
|
|||
securityPluginStart,
|
||||
...alertingAuthorizationClientFactoryParams,
|
||||
});
|
||||
const request = KibanaRequest.from(fakeRequest);
|
||||
const request = CoreKibanaRequest.from(fakeRequest);
|
||||
|
||||
factory.create(request);
|
||||
|
||||
|
@ -78,7 +78,7 @@ test('creates an alerting authorization client with proper constructor arguments
|
|||
test('creates an alerting authorization client with proper constructor arguments', async () => {
|
||||
const factory = new AlertingAuthorizationClientFactory();
|
||||
factory.initialize(alertingAuthorizationClientFactoryParams);
|
||||
const request = KibanaRequest.from(fakeRequest);
|
||||
const request = CoreKibanaRequest.from(fakeRequest);
|
||||
|
||||
factory.create(request);
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ import { Request } from '@hapi/hapi';
|
|||
import { RulesClientFactory, RulesClientFactoryOpts } from './rules_client_factory';
|
||||
import { ruleTypeRegistryMock } from './rule_type_registry.mock';
|
||||
import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks';
|
||||
import { KibanaRequest } from '@kbn/core/server';
|
||||
import { CoreKibanaRequest } from '@kbn/core/server';
|
||||
import {
|
||||
savedObjectsClientMock,
|
||||
savedObjectsServiceMock,
|
||||
|
@ -85,7 +85,7 @@ beforeEach(() => {
|
|||
test('creates a rules client with proper constructor arguments when security is enabled', async () => {
|
||||
const factory = new RulesClientFactory();
|
||||
factory.initialize({ securityPluginSetup, securityPluginStart, ...rulesClientFactoryParams });
|
||||
const request = KibanaRequest.from(fakeRequest);
|
||||
const request = CoreKibanaRequest.from(fakeRequest);
|
||||
|
||||
savedObjectsService.getScopedClient.mockReturnValue(savedObjectsClient);
|
||||
alertingAuthorizationClientFactory.create.mockReturnValue(
|
||||
|
@ -127,7 +127,7 @@ test('creates a rules client with proper constructor arguments when security is
|
|||
test('creates a rules client with proper constructor arguments', async () => {
|
||||
const factory = new RulesClientFactory();
|
||||
factory.initialize(rulesClientFactoryParams);
|
||||
const request = KibanaRequest.from(fakeRequest);
|
||||
const request = CoreKibanaRequest.from(fakeRequest);
|
||||
|
||||
savedObjectsService.getScopedClient.mockReturnValue(savedObjectsClient);
|
||||
alertingAuthorizationClientFactory.create.mockReturnValue(
|
||||
|
@ -165,7 +165,7 @@ test('creates a rules client with proper constructor arguments', async () => {
|
|||
test('getUserName() returns null when security is disabled', async () => {
|
||||
const factory = new RulesClientFactory();
|
||||
factory.initialize(rulesClientFactoryParams);
|
||||
factory.create(KibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
factory.create(CoreKibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
const constructorCall = jest.requireMock('./rules_client').RulesClient.mock.calls[0][0];
|
||||
|
||||
const userNameResult = await constructorCall.getUserName();
|
||||
|
@ -179,7 +179,7 @@ test('getUserName() returns a name when security is enabled', async () => {
|
|||
securityPluginSetup,
|
||||
securityPluginStart,
|
||||
});
|
||||
factory.create(KibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
factory.create(CoreKibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
const constructorCall = jest.requireMock('./rules_client').RulesClient.mock.calls[0][0];
|
||||
|
||||
securityPluginStart.authc.getCurrentUser.mockReturnValueOnce({
|
||||
|
@ -192,7 +192,7 @@ test('getUserName() returns a name when security is enabled', async () => {
|
|||
test('getActionsClient() returns ActionsClient', async () => {
|
||||
const factory = new RulesClientFactory();
|
||||
factory.initialize(rulesClientFactoryParams);
|
||||
factory.create(KibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
factory.create(CoreKibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
const constructorCall = jest.requireMock('./rules_client').RulesClient.mock.calls[0][0];
|
||||
|
||||
const actionsClient = await constructorCall.getActionsClient();
|
||||
|
@ -202,7 +202,7 @@ test('getActionsClient() returns ActionsClient', async () => {
|
|||
test('createAPIKey() returns { apiKeysEnabled: false } when security is disabled', async () => {
|
||||
const factory = new RulesClientFactory();
|
||||
factory.initialize(rulesClientFactoryParams);
|
||||
factory.create(KibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
factory.create(CoreKibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
const constructorCall = jest.requireMock('./rules_client').RulesClient.mock.calls[0][0];
|
||||
|
||||
const createAPIKeyResult = await constructorCall.createAPIKey();
|
||||
|
@ -212,7 +212,7 @@ test('createAPIKey() returns { apiKeysEnabled: false } when security is disabled
|
|||
test('createAPIKey() returns { apiKeysEnabled: false } when security is enabled but ES security is disabled', async () => {
|
||||
const factory = new RulesClientFactory();
|
||||
factory.initialize(rulesClientFactoryParams);
|
||||
factory.create(KibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
factory.create(CoreKibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
const constructorCall = jest.requireMock('./rules_client').RulesClient.mock.calls[0][0];
|
||||
|
||||
securityPluginStart.authc.apiKeys.grantAsInternalUser.mockResolvedValueOnce(null);
|
||||
|
@ -227,7 +227,7 @@ test('createAPIKey() returns an API key when security is enabled', async () => {
|
|||
securityPluginSetup,
|
||||
securityPluginStart,
|
||||
});
|
||||
factory.create(KibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
factory.create(CoreKibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
const constructorCall = jest.requireMock('./rules_client').RulesClient.mock.calls[0][0];
|
||||
|
||||
securityPluginStart.authc.apiKeys.grantAsInternalUser.mockResolvedValueOnce({
|
||||
|
@ -249,7 +249,7 @@ test('createAPIKey() throws when security plugin createAPIKey throws an error',
|
|||
securityPluginSetup,
|
||||
securityPluginStart,
|
||||
});
|
||||
factory.create(KibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
factory.create(CoreKibanaRequest.from(fakeRequest), savedObjectsService);
|
||||
const constructorCall = jest.requireMock('./rules_client').RulesClient.mock.calls[0][0];
|
||||
|
||||
securityPluginStart.authc.apiKeys.grantAsInternalUser.mockRejectedValueOnce(
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
import { encryptedSavedObjectsMock } from '@kbn/encrypted-saved-objects-plugin/server/mocks';
|
||||
import { KibanaRequest } from '@kbn/core/server';
|
||||
import { CoreKibanaRequest } from '@kbn/core/server';
|
||||
import { schema } from '@kbn/config-schema';
|
||||
|
||||
import { getDecryptedAttributes, getFakeKibanaRequest, loadRule } from './rule_loader';
|
||||
|
@ -234,12 +234,12 @@ describe('rule_loader', () => {
|
|||
|
||||
describe('getFakeKibanaRequest()', () => {
|
||||
test('has API key, in default space', async () => {
|
||||
const kibanaRequestFromMock = jest.spyOn(KibanaRequest, 'from');
|
||||
const kibanaRequestFromMock = jest.spyOn(CoreKibanaRequest, 'from');
|
||||
const fakeRequest = getFakeKibanaRequest(context, 'default', apiKey);
|
||||
|
||||
const bpsSetParams = mockBasePathService.set.mock.calls[0];
|
||||
expect(bpsSetParams).toEqual([fakeRequest, '/']);
|
||||
expect(fakeRequest).toEqual(expect.any(KibanaRequest));
|
||||
expect(fakeRequest).toEqual(expect.any(CoreKibanaRequest));
|
||||
expect(kibanaRequestFromMock.mock.calls[0]).toMatchInlineSnapshot(`
|
||||
Array [
|
||||
Object {
|
||||
|
@ -264,12 +264,12 @@ describe('rule_loader', () => {
|
|||
});
|
||||
|
||||
test('has API key, in non-default space', async () => {
|
||||
const kibanaRequestFromMock = jest.spyOn(KibanaRequest, 'from');
|
||||
const kibanaRequestFromMock = jest.spyOn(CoreKibanaRequest, 'from');
|
||||
const fakeRequest = getFakeKibanaRequest(context, spaceId, apiKey);
|
||||
|
||||
const bpsSetParams = mockBasePathService.set.mock.calls[0];
|
||||
expect(bpsSetParams).toEqual([fakeRequest, '/s/rule-spaceId']);
|
||||
expect(fakeRequest).toEqual(expect.any(KibanaRequest));
|
||||
expect(fakeRequest).toEqual(expect.any(CoreKibanaRequest));
|
||||
expect(kibanaRequestFromMock.mock.calls[0]).toMatchInlineSnapshot(`
|
||||
Array [
|
||||
Object {
|
||||
|
@ -294,13 +294,13 @@ describe('rule_loader', () => {
|
|||
});
|
||||
|
||||
test('does not have API key, in default space', async () => {
|
||||
const kibanaRequestFromMock = jest.spyOn(KibanaRequest, 'from');
|
||||
const kibanaRequestFromMock = jest.spyOn(CoreKibanaRequest, 'from');
|
||||
const fakeRequest = getFakeKibanaRequest(context, 'default', null);
|
||||
|
||||
const bpsSetParams = mockBasePathService.set.mock.calls[0];
|
||||
expect(bpsSetParams).toEqual([fakeRequest, '/']);
|
||||
|
||||
expect(fakeRequest).toEqual(expect.any(KibanaRequest));
|
||||
expect(fakeRequest).toEqual(expect.any(CoreKibanaRequest));
|
||||
expect(kibanaRequestFromMock.mock.calls[0]).toMatchInlineSnapshot(`
|
||||
Array [
|
||||
Object {
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
import { PublicMethodsOf } from '@kbn/utility-types';
|
||||
import type { Request } from '@hapi/hapi';
|
||||
import { addSpaceIdToPath } from '@kbn/spaces-plugin/server';
|
||||
import { KibanaRequest } from '@kbn/core/server';
|
||||
import { CoreKibanaRequest } from '@kbn/core/server';
|
||||
import { TaskRunnerContext } from './task_runner_factory';
|
||||
import { ErrorWithReason, validateRuleTypeParams } from '../lib';
|
||||
import {
|
||||
|
@ -127,7 +127,7 @@ export function getFakeKibanaRequest(
|
|||
|
||||
const path = addSpaceIdToPath('/', spaceId);
|
||||
|
||||
const fakeRequest = KibanaRequest.from({
|
||||
const fakeRequest = CoreKibanaRequest.from({
|
||||
headers: requestHeaders,
|
||||
path: '/',
|
||||
route: { settings: {} },
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
*/
|
||||
|
||||
import { httpServerMock } from '@kbn/core/server/mocks';
|
||||
import { KibanaRequest } from '@kbn/core/server';
|
||||
import { CoreKibanaRequest } from '@kbn/core/server';
|
||||
import { spacesServiceMock } from '@kbn/spaces-plugin/server/spaces_service/spaces_service.mock';
|
||||
|
||||
import { getSpaceId } from './get_space_id';
|
||||
|
||||
describe('get_space_id', () => {
|
||||
let request = KibanaRequest.from(httpServerMock.createRawRequest({}));
|
||||
let request = CoreKibanaRequest.from(httpServerMock.createRawRequest({}));
|
||||
beforeEach(() => {
|
||||
request = KibanaRequest.from(httpServerMock.createRawRequest({}));
|
||||
request = CoreKibanaRequest.from(httpServerMock.createRawRequest({}));
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
|
|
|
@ -6,16 +6,16 @@
|
|||
*/
|
||||
|
||||
import { httpServerMock } from '@kbn/core/server/mocks';
|
||||
import { KibanaRequest } from '@kbn/core/server';
|
||||
import { CoreKibanaRequest } from '@kbn/core/server';
|
||||
import { securityMock } from '@kbn/security-plugin/server/mocks';
|
||||
|
||||
import { getUser } from './get_user';
|
||||
|
||||
describe('get_user', () => {
|
||||
let request = KibanaRequest.from(httpServerMock.createRawRequest({}));
|
||||
let request = CoreKibanaRequest.from(httpServerMock.createRawRequest({}));
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
request = KibanaRequest.from(httpServerMock.createRawRequest({}));
|
||||
request = CoreKibanaRequest.from(httpServerMock.createRawRequest({}));
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
|
|
|
@ -12,7 +12,7 @@ import type {
|
|||
UiSettingsServiceStart,
|
||||
} from '@kbn/core/server';
|
||||
import type { SpacesPluginStart } from '@kbn/spaces-plugin/server';
|
||||
import { KibanaRequest } from '@kbn/core/server';
|
||||
import { CoreKibanaRequest, KibanaRequest } from '@kbn/core/server';
|
||||
import type { CloudSetup } from '@kbn/cloud-plugin/server';
|
||||
import type { PluginStart as DataViewsPluginStart } from '@kbn/data-views-plugin/server';
|
||||
import type { SecurityPluginSetup } from '@kbn/security-plugin/server';
|
||||
|
@ -59,8 +59,11 @@ export type MlServicesProviders = JobsHealthServiceProvider;
|
|||
|
||||
interface Guards {
|
||||
isMinimumLicense(): Guards;
|
||||
|
||||
isFullLicense(): Guards;
|
||||
|
||||
hasMlCapabilities: (caps: MlCapabilitiesKey[]) => Guards;
|
||||
|
||||
ok(callback: OkCallback): any;
|
||||
}
|
||||
|
||||
|
@ -100,6 +103,7 @@ export function createSharedServices(
|
|||
internalServicesProviders: MlServicesProviders;
|
||||
} {
|
||||
const { isFullLicense, isMinimumLicense } = licenseChecks(mlLicense);
|
||||
|
||||
function getGuards(
|
||||
request: KibanaRequest,
|
||||
savedObjectsClient: SavedObjectsClientContract
|
||||
|
@ -239,7 +243,7 @@ function getRequestItemsProvider(
|
|||
};
|
||||
|
||||
let mlSavedObjectService;
|
||||
if (request instanceof KibanaRequest) {
|
||||
if (request instanceof CoreKibanaRequest) {
|
||||
hasMlCapabilities = getHasMlCapabilities(request);
|
||||
scopedClient = clusterClient.asScoped(request);
|
||||
mlSavedObjectService = getSobSavedObjectService(scopedClient);
|
||||
|
|
|
@ -17,7 +17,7 @@ import type {
|
|||
StatusServiceSetup,
|
||||
UiSettingsServiceStart,
|
||||
} from '@kbn/core/server';
|
||||
import { KibanaRequest, ServiceStatusLevels } from '@kbn/core/server';
|
||||
import { KibanaRequest, CoreKibanaRequest, ServiceStatusLevels } from '@kbn/core/server';
|
||||
import type { PluginStart as DataPluginStart } from '@kbn/data-plugin/server';
|
||||
import type { PluginSetupContract as FeaturesPluginSetup } from '@kbn/features-plugin/server';
|
||||
import type { FieldFormatsStart } from '@kbn/field-formats-plugin/server';
|
||||
|
@ -322,7 +322,7 @@ export class ReportingCore {
|
|||
}
|
||||
|
||||
public getFakeRequest(baseRequest: object, spaceId: string | undefined, logger = this.logger) {
|
||||
const fakeRequest = KibanaRequest.from({
|
||||
const fakeRequest = CoreKibanaRequest.from({
|
||||
path: '/',
|
||||
route: { settings: {} },
|
||||
url: { href: '/' },
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
import { Request } from '@hapi/hapi';
|
||||
|
||||
import { AlertsClientFactory, AlertsClientFactoryProps } from './alerts_client_factory';
|
||||
import { ElasticsearchClient, KibanaRequest } from '@kbn/core/server';
|
||||
import { ElasticsearchClient, KibanaRequest, CoreKibanaRequest } from '@kbn/core/server';
|
||||
import { loggingSystemMock } from '@kbn/core/server/mocks';
|
||||
import { securityMock } from '@kbn/security-plugin/server/mocks';
|
||||
import { auditLoggerMock } from '@kbn/security-plugin/server/audit/mocks';
|
||||
|
@ -56,7 +56,7 @@ describe('AlertsClientFactory', () => {
|
|||
test('creates an alerts client with proper constructor arguments', async () => {
|
||||
const factory = new AlertsClientFactory();
|
||||
factory.initialize({ ...alertsClientFactoryParams });
|
||||
const request = KibanaRequest.from(fakeRequest);
|
||||
const request = CoreKibanaRequest.from(fakeRequest);
|
||||
await factory.create(request);
|
||||
|
||||
expect(jest.requireMock('./alerts_client').AlertsClient).toHaveBeenCalledWith({
|
||||
|
|
|
@ -12,9 +12,10 @@ import type {
|
|||
CapabilitiesStart,
|
||||
IBasePath,
|
||||
IClusterClient,
|
||||
KibanaRequest,
|
||||
Logger,
|
||||
} from '@kbn/core/server';
|
||||
import { KibanaRequest } from '@kbn/core/server';
|
||||
import { CoreKibanaRequest } from '@kbn/core/server';
|
||||
import { addSpaceIdToPath } from '@kbn/spaces-plugin/common';
|
||||
import type { SpacesServiceStart } from '@kbn/spaces-plugin/server';
|
||||
|
||||
|
@ -165,7 +166,7 @@ export class AnonymousAccessService {
|
|||
* anonymous service account credentials.
|
||||
*/
|
||||
private createFakeAnonymousRequest({ authenticateRequest }: { authenticateRequest: boolean }) {
|
||||
return KibanaRequest.from({
|
||||
return CoreKibanaRequest.from({
|
||||
headers:
|
||||
authenticateRequest && this.httpAuthorizationHeader
|
||||
? { authorization: this.httpAuthorizationHeader.toString() }
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import type { IBasePath, IClusterClient, LoggerFactory } from '@kbn/core/server';
|
||||
import { KibanaRequest } from '@kbn/core/server';
|
||||
import type { IBasePath, IClusterClient, KibanaRequest, LoggerFactory } from '@kbn/core/server';
|
||||
import { CoreKibanaRequest } from '@kbn/core/server';
|
||||
import type { Logger } from '@kbn/logging';
|
||||
import type { PublicMethodsOf } from '@kbn/utility-types';
|
||||
|
||||
|
@ -131,7 +131,7 @@ const ACCESS_AGREEMENT_ROUTE = '/security/access_agreement';
|
|||
const OVERWRITTEN_SESSION_ROUTE = '/security/overwritten_session';
|
||||
|
||||
function assertRequest(request: KibanaRequest) {
|
||||
if (!(request instanceof KibanaRequest)) {
|
||||
if (!(request instanceof CoreKibanaRequest)) {
|
||||
throw new Error(`Request should be a valid "KibanaRequest" instance, was [${typeof request}].`);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import { KibanaRequest } from '@kbn/core/server';
|
||||
import { CoreKibanaRequest } from '@kbn/core/server';
|
||||
import { loggingSystemMock, httpServerMock } from '@kbn/core/server/mocks';
|
||||
import { securityMock } from '@kbn/security-plugin/server/mocks';
|
||||
import { ReindexStep, ReindexStatus, ReindexSavedObject } from '../../../common/types';
|
||||
|
@ -14,7 +14,7 @@ import { credentialStoreFactory } from './credential_store';
|
|||
const basicAuthHeader = 'Basic abc';
|
||||
|
||||
const logMock = loggingSystemMock.create().get();
|
||||
const requestMock = KibanaRequest.from(
|
||||
const requestMock = CoreKibanaRequest.from(
|
||||
httpServerMock.createRawRequest({
|
||||
headers: {
|
||||
authorization: basicAuthHeader,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue