Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions x-pack/platform/plugins/shared/task_manager/kibana.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
"optionalPlugins": [
"cloud",
"usageCollection",
"spaces"
]
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ import {
} from './api_key_utils';
import { coreMock } from '@kbn/core/server/mocks';
import { httpServerMock } from '@kbn/core-http-server-mocks';
import type { SpacesPluginStart } from '@kbn/spaces-plugin/server';
import { spacesMock } from '@kbn/spaces-plugin/server/mocks';
import type { AuthenticatedUser } from '@kbn/core/server';

const mockTask = {
Expand Down Expand Up @@ -156,13 +154,8 @@ describe('api_key_utils', () => {

describe('getUserScope', () => {
test('should return the users scope based on their request', async () => {
const request = httpServerMock.createKibanaRequest();
const request = httpServerMock.createKibanaRequest({ path: '/s/test-space' });
const coreStart = coreMock.createStart();
const spacesStart: jest.Mocked<SpacesPluginStart> = spacesMock.createStart();

spacesStart.spacesService.getActiveSpace = jest.fn().mockResolvedValue({
id: 'testSpace',
});

const mockUser = {
authentication_type: 'basic',
Expand All @@ -178,18 +171,13 @@ describe('api_key_utils', () => {
api_key: 'apiKey',
});

const result = await getApiKeyAndUserScope(
[mockTask],
request,
coreStart.security,
spacesStart
);
const result = await getApiKeyAndUserScope([mockTask], request, coreStart.security);

expect(result.get('task')).toEqual({
apiKey: 'YXBpS2V5SWQ6YXBpS2V5',
userScope: {
apiKeyId: 'apiKeyId',
spaceId: 'testSpace',
spaceId: 'test-space',
apiKeyCreatedByUser: false,
},
});
Expand All @@ -198,7 +186,6 @@ describe('api_key_utils', () => {
test('should default space to default if space is not found', async () => {
const request = httpServerMock.createKibanaRequest();
const coreStart = coreMock.createStart();
const spacesStart: jest.Mocked<SpacesPluginStart> = spacesMock.createStart();

const mockUser = {
authentication_type: 'basic',
Expand All @@ -214,12 +201,7 @@ describe('api_key_utils', () => {
api_key: 'apiKey',
});

const result = await getApiKeyAndUserScope(
[mockTask],
request,
coreStart.security,
spacesStart
);
const result = await getApiKeyAndUserScope([mockTask], request, coreStart.security);

expect(result.get('task')).toEqual({
apiKey: 'YXBpS2V5SWQ6YXBpS2V5',
Expand All @@ -240,7 +222,6 @@ describe('api_key_utils', () => {
});

const coreStart = coreMock.createStart();
const spacesStart: jest.Mocked<SpacesPluginStart> = spacesMock.createStart();
const mockUser = {
authentication_type: 'api_key',
username: 'testUser',
Expand All @@ -249,12 +230,7 @@ describe('api_key_utils', () => {
coreStart.security.authc.apiKeys.areAPIKeysEnabled = jest.fn().mockReturnValueOnce(true);
coreStart.security.authc.getCurrentUser = jest.fn().mockReturnValue(mockUser);

const result = await getApiKeyAndUserScope(
[mockTask],
request,
coreStart.security,
spacesStart
);
const result = await getApiKeyAndUserScope([mockTask], request, coreStart.security);

expect(result.get('task')).toEqual({
apiKey: 'YXBpS2V5SWQ6YXBpS2V5',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

import type { AuthenticatedUser, SecurityServiceStart } from '@kbn/core/server';
import type { KibanaRequest } from '@kbn/core/server';
import type { SpacesPluginStart } from '@kbn/spaces-plugin/server';
import { truncate } from 'lodash';
import { getSpaceIdFromPath } from '@kbn/spaces-utils';
import type { TaskInstance, TaskUserScope } from '../task';

export interface APIKeyResult {
Expand Down Expand Up @@ -125,11 +125,10 @@ export const createApiKey = async (
export const getApiKeyAndUserScope = async (
taskInstances: TaskInstance[],
request: KibanaRequest,
security: SecurityServiceStart,
spaces?: SpacesPluginStart
security: SecurityServiceStart
): Promise<Map<string, ApiKeyAndUserScope>> => {
const apiKeyByTaskIdMap = await createApiKey(taskInstances, request, security);
const space = await spaces?.spacesService.getActiveSpace(request);
const space = getSpaceIdFromPath(request.url.pathname);
const user = security.authc.getCurrentUser(request);

const apiKeyAndUserScopeByTaskId = new Map<string, ApiKeyAndUserScope>();
Expand All @@ -141,7 +140,7 @@ export const getApiKeyAndUserScope = async (
apiKey: encodedApiKeyResult.apiKey,
userScope: {
apiKeyId: encodedApiKeyResult.apiKeyId,
spaceId: space?.id || 'default',
spaceId: space?.spaceId || 'default',
// Set apiKeyCreatedByUser to true if the user passed in their own API key, since we do
// not want to invalidate a specific API key that was not created by the task manager
apiKeyCreatedByUser: isRequestApiKeyType(user),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import type {
import { ServiceStatusLevels } from '@kbn/core/server';
import type { CloudSetup, CloudStart } from '@kbn/cloud-plugin/server';
import type { EncryptedSavedObjectsClient } from '@kbn/encrypted-saved-objects-shared';
import type { SpacesPluginStart } from '@kbn/spaces-plugin/server';
import {
registerDeleteInactiveNodesTaskDefinition,
scheduleDeleteInactiveNodesTaskDefinition,
Expand Down Expand Up @@ -99,7 +98,6 @@ export type TaskManagerStartContract = Pick<
export interface TaskManagerPluginsStart {
cloud?: CloudStart;
usageCollection?: UsageCollectionStart;
spaces?: SpacesPluginStart;
}

export interface TaskManagerPluginsSetup {
Expand Down Expand Up @@ -292,7 +290,7 @@ export class TaskManagerPlugin

public start(
{ http, savedObjects, elasticsearch, executionContext, security }: CoreStart,
{ cloud, spaces }: TaskManagerPluginsStart
{ cloud }: TaskManagerPluginsStart
): TaskManagerStartContract {
const savedObjectsRepository = savedObjects.createInternalRepository([
TASK_SO_NAME,
Expand Down Expand Up @@ -326,7 +324,6 @@ export class TaskManagerPlugin
requestTimeouts: this.config.request_timeouts,
security,
canEncryptSavedObjects: this.canEncryptSavedObjects,
spaces,
});

const isServerless = this.initContext.env.packageInfo.buildFlavor === 'serverless';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import type {
} from '@kbn/core/server';
import { SavedObjectsErrorHelpers } from '@kbn/core/server';
import type { UsageCounter } from '@kbn/usage-collection-plugin/server';
import { addSpaceIdToPath } from '@kbn/spaces-plugin/server';
import { addSpaceIdToPath } from '@kbn/spaces-utils';
import { kibanaRequestFactory } from '@kbn/core-http-server-utils';
import type { Middleware } from '../lib/middleware';
import type { Result } from '../lib/result_type';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ import { asErr, asOk } from './lib/result_type';
import type { UpdateByQueryResponse } from '@elastic/elasticsearch/lib/api/types';
import { MsearchError } from './lib/msearch_error';
import { getApiKeyAndUserScope } from './lib/api_key_utils';
import { spacesMock } from '@kbn/spaces-plugin/server/mocks';
import type {
EncryptedSavedObjectsClient,
EncryptedSavedObjectsClientOptions,
Expand Down Expand Up @@ -75,7 +74,6 @@ const adHocTaskCounter = new AdHocTaskCounter();
const randomId = () => `id-${_.random(1, 20)}`;

const coreStart = coreMock.createStart();
const spacesStart = spacesMock.createStart();

beforeEach(() => {
jest.resetAllMocks();
Expand Down Expand Up @@ -146,7 +144,6 @@ describe('TaskStore', () => {
},
savedObjectsService: coreStart.savedObjects,
security: coreStart.security,
spaces: spacesStart,
canEncryptSavedObjects: true,
});

Expand Down Expand Up @@ -319,12 +316,7 @@ describe('TaskStore', () => {
}
);

expect(getApiKeyAndUserScope).toHaveBeenCalledWith(
[task],
request,
coreStart.security,
spacesStart
);
expect(getApiKeyAndUserScope).toHaveBeenCalledWith([task], request, coreStart.security);

expect(savedObjectsClient.create).not.toHaveBeenCalled();

Expand Down Expand Up @@ -363,7 +355,6 @@ describe('TaskStore', () => {
},
savedObjectsService: coreStart.savedObjects,
security: coreStart.security,
spaces: spacesStart,
canEncryptSavedObjects: false,
});

Expand Down Expand Up @@ -1700,7 +1691,6 @@ describe('TaskStore', () => {
},
savedObjectsService: coreStart.savedObjects,
security: coreStart.security,
spaces: spacesStart,
canEncryptSavedObjects: true,
});

Expand Down Expand Up @@ -1821,7 +1811,6 @@ describe('TaskStore', () => {
},
savedObjectsService: coreStart.savedObjects,
security: coreStart.security,
spaces: spacesStart,
canEncryptSavedObjects: true,
});

Expand Down Expand Up @@ -2135,7 +2124,6 @@ describe('TaskStore', () => {
},
savedObjectsService: coreStart.savedObjects,
security: coreStart.security,
spaces: spacesStart,
canEncryptSavedObjects: true,
});

Expand Down Expand Up @@ -2342,8 +2330,7 @@ describe('TaskStore', () => {
expect(getApiKeyAndUserScope).toHaveBeenCalledWith(
[task1, task2],
request,
coreStart.security,
spacesStart
coreStart.security
);

expect(savedObjectsClient.create).not.toHaveBeenCalled();
Expand Down Expand Up @@ -2404,7 +2391,6 @@ describe('TaskStore', () => {
},
savedObjectsService: coreStart.savedObjects,
security: coreStart.security,
spaces: spacesStart,
canEncryptSavedObjects: false,
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import type {
} from '@kbn/core/server';

import { SECURITY_EXTENSION_ID, SPACES_EXTENSION_ID } from '@kbn/core/server';
import type { SpacesPluginStart } from '@kbn/spaces-plugin/server';

import type { EncryptedSavedObjectsClient } from '@kbn/encrypted-saved-objects-shared';

Expand Down Expand Up @@ -80,7 +79,6 @@ export interface StoreOpts {
security: SecurityServiceStart;
canEncryptSavedObjects?: boolean;
esoClient?: EncryptedSavedObjectsClient;
spaces?: SpacesPluginStart;
}

export interface SearchOpts {
Expand Down Expand Up @@ -150,7 +148,6 @@ export class TaskStore {
private requestTimeouts: RequestTimeoutsConfig;
private security: SecurityServiceStart;
private canEncryptSavedObjects?: boolean;
private spaces?: SpacesPluginStart;
private logger: Logger;

/**
Expand Down Expand Up @@ -184,7 +181,6 @@ export class TaskStore {
});
this.requestTimeouts = opts.requestTimeouts;
this.security = opts.security;
this.spaces = opts.spaces;
this.canEncryptSavedObjects = opts.canEncryptSavedObjects;
this.logger = opts.logger;
}
Expand Down Expand Up @@ -225,12 +221,7 @@ export class TaskStore {

let userScopeAndApiKey;
try {
userScopeAndApiKey = await getApiKeyAndUserScope(
taskInstances,
request,
this.security,
this.spaces
);
userScopeAndApiKey = await getApiKeyAndUserScope(taskInstances, request, this.security);
} catch (e) {
this.errors$.next(e);
throw e;
Expand Down
4 changes: 2 additions & 2 deletions x-pack/platform/plugins/shared/task_manager/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@
"@kbn/core-elasticsearch-server",
"@kbn/es-query",
"@kbn/core-http-server-mocks",
"@kbn/spaces-plugin",
"@kbn/encrypted-saved-objects-shared",
"@kbn/core-saved-objects-api-server-mocks",
"@kbn/core-http-server-utils",
"@kbn/rrule",
"@kbn/logging-mocks"
"@kbn/logging-mocks",
"@kbn/spaces-utils",
],
"exclude": ["target/**/*"]
}