diff --git a/x-pack/platform/plugins/private/reporting/server/services/scheduled_reports/scheduled_reports_service.test.ts b/x-pack/platform/plugins/private/reporting/server/services/scheduled_reports/scheduled_reports_service.test.ts index 1e7125d00acfd..a3e36dbe9938b 100644 --- a/x-pack/platform/plugins/private/reporting/server/services/scheduled_reports/scheduled_reports_service.test.ts +++ b/x-pack/platform/plugins/private/reporting/server/services/scheduled_reports/scheduled_reports_service.test.ts @@ -753,10 +753,11 @@ describe('ScheduledReportsService', () => { }, ]); expect(taskManager.bulkDisable).toHaveBeenCalledTimes(1); - expect(taskManager.bulkDisable).toHaveBeenCalledWith([ - 'aa8b6fb3-cf61-4903-bce3-eec9ddc823ca', - '2da1cb75-04c7-4202-a9f0-f8bcce63b0f4', - ]); + expect(taskManager.bulkDisable).toHaveBeenCalledWith( + ['aa8b6fb3-cf61-4903-bce3-eec9ddc823ca', '2da1cb75-04c7-4202-a9f0-f8bcce63b0f4'], + false, + { request: fakeRawRequest } + ); expect(auditLogger.log).toHaveBeenCalledTimes(2); expect(auditLogger.log).toHaveBeenNthCalledWith(1, { @@ -845,9 +846,11 @@ describe('ScheduledReportsService', () => { }, ]); expect(taskManager.bulkDisable).toHaveBeenCalledTimes(1); - expect(taskManager.bulkDisable).toHaveBeenCalledWith([ - 'aa8b6fb3-cf61-4903-bce3-eec9ddc823ca', - ]); + expect(taskManager.bulkDisable).toHaveBeenCalledWith( + ['aa8b6fb3-cf61-4903-bce3-eec9ddc823ca'], + false, + { request: fakeRawRequest } + ); expect(result).toEqual({ scheduled_report_ids: ['aa8b6fb3-cf61-4903-bce3-eec9ddc823ca'], @@ -953,9 +956,11 @@ describe('ScheduledReportsService', () => { }, ]); expect(taskManager.bulkDisable).toHaveBeenCalledTimes(1); - expect(taskManager.bulkDisable).toHaveBeenCalledWith([ - '2da1cb75-04c7-4202-a9f0-f8bcce63b0f4', - ]); + expect(taskManager.bulkDisable).toHaveBeenCalledWith( + ['2da1cb75-04c7-4202-a9f0-f8bcce63b0f4'], + false, + { request: fakeRawRequest } + ); expect(auditLogger.log).toHaveBeenCalledTimes(1); expect(auditLogger.log).toHaveBeenNthCalledWith(1, { @@ -1085,10 +1090,11 @@ describe('ScheduledReportsService', () => { ); expect(taskManager.bulkDisable).toHaveBeenCalledTimes(1); // TM still called with both in case the task was not disabled - expect(taskManager.bulkDisable).toHaveBeenCalledWith([ - '2da1cb75-04c7-4202-a9f0-f8bcce63b0f4', - 'aa8b6fb3-cf61-4903-bce3-eec9ddc823ca', - ]); + expect(taskManager.bulkDisable).toHaveBeenCalledWith( + ['2da1cb75-04c7-4202-a9f0-f8bcce63b0f4', 'aa8b6fb3-cf61-4903-bce3-eec9ddc823ca'], + false, + { request: fakeRawRequest } + ); expect(auditLogger.log).toHaveBeenCalledTimes(1); expect(auditLogger.log).toHaveBeenNthCalledWith(1, { @@ -1162,9 +1168,11 @@ describe('ScheduledReportsService', () => { }, ]); expect(taskManager.bulkDisable).toHaveBeenCalledTimes(1); - expect(taskManager.bulkDisable).toHaveBeenCalledWith([ - '2da1cb75-04c7-4202-a9f0-f8bcce63b0f4', - ]); + expect(taskManager.bulkDisable).toHaveBeenCalledWith( + ['2da1cb75-04c7-4202-a9f0-f8bcce63b0f4'], + false, + { request: fakeRawRequest } + ); expect(auditLogger.log).toHaveBeenCalledTimes(3); expect(auditLogger.log).toHaveBeenNthCalledWith(3, { @@ -1240,10 +1248,11 @@ describe('ScheduledReportsService', () => { }, ]); expect(taskManager.bulkDisable).toHaveBeenCalledTimes(1); - expect(taskManager.bulkDisable).toHaveBeenCalledWith([ - 'aa8b6fb3-cf61-4903-bce3-eec9ddc823ca', - '2da1cb75-04c7-4202-a9f0-f8bcce63b0f4', - ]); + expect(taskManager.bulkDisable).toHaveBeenCalledWith( + ['aa8b6fb3-cf61-4903-bce3-eec9ddc823ca', '2da1cb75-04c7-4202-a9f0-f8bcce63b0f4'], + false, + { request: fakeRawRequest } + ); expect(result).toEqual({ scheduled_report_ids: ['2da1cb75-04c7-4202-a9f0-f8bcce63b0f4'], @@ -1337,7 +1346,8 @@ describe('ScheduledReportsService', () => { expect(taskManager.bulkEnable).toHaveBeenCalledTimes(1); expect(taskManager.bulkEnable).toHaveBeenCalledWith( ['aa8b6fb3-cf61-4903-bce3-eec9ddc823ca', '2da1cb75-04c7-4202-a9f0-f8bcce63b0f4'], - false + false, + { request: fakeRawRequest } ); expect(auditLogger.log).toHaveBeenCalledTimes(2); @@ -1429,7 +1439,8 @@ describe('ScheduledReportsService', () => { expect(taskManager.bulkEnable).toHaveBeenCalledTimes(1); expect(taskManager.bulkEnable).toHaveBeenCalledWith( ['aa8b6fb3-cf61-4903-bce3-eec9ddc823ca'], - false + false, + { request: fakeRawRequest } ); expect(result).toEqual({ @@ -1538,7 +1549,8 @@ describe('ScheduledReportsService', () => { expect(taskManager.bulkEnable).toHaveBeenCalledTimes(1); expect(taskManager.bulkEnable).toHaveBeenCalledWith( ['2da1cb75-04c7-4202-a9f0-f8bcce63b0f4'], - false + false, + { request: fakeRawRequest } ); expect(auditLogger.log).toHaveBeenCalledTimes(1); @@ -1671,7 +1683,8 @@ describe('ScheduledReportsService', () => { // TM still called with both in case the task was not disabled expect(taskManager.bulkEnable).toHaveBeenCalledWith( ['2da1cb75-04c7-4202-a9f0-f8bcce63b0f4', 'aa8b6fb3-cf61-4903-bce3-eec9ddc823ca'], - false + false, + { request: fakeRawRequest } ); expect(auditLogger.log).toHaveBeenCalledTimes(1); @@ -1748,7 +1761,8 @@ describe('ScheduledReportsService', () => { expect(taskManager.bulkEnable).toHaveBeenCalledTimes(1); expect(taskManager.bulkEnable).toHaveBeenCalledWith( ['2da1cb75-04c7-4202-a9f0-f8bcce63b0f4'], - false + false, + { request: fakeRawRequest } ); expect(auditLogger.log).toHaveBeenCalledTimes(3); @@ -1827,7 +1841,8 @@ describe('ScheduledReportsService', () => { expect(taskManager.bulkEnable).toHaveBeenCalledTimes(1); expect(taskManager.bulkEnable).toHaveBeenCalledWith( ['aa8b6fb3-cf61-4903-bce3-eec9ddc823ca', '2da1cb75-04c7-4202-a9f0-f8bcce63b0f4'], - false + false, + { request: fakeRawRequest } ); expect(result).toEqual({ diff --git a/x-pack/platform/plugins/private/reporting/server/services/scheduled_reports/scheduled_reports_service.ts b/x-pack/platform/plugins/private/reporting/server/services/scheduled_reports/scheduled_reports_service.ts index 89ae504471448..0e470f67e4cdd 100644 --- a/x-pack/platform/plugins/private/reporting/server/services/scheduled_reports/scheduled_reports_service.ts +++ b/x-pack/platform/plugins/private/reporting/server/services/scheduled_reports/scheduled_reports_service.ts @@ -682,8 +682,8 @@ export class ScheduledReportsService { updatedScheduledReportIds: Set; }) { const resultFromUpdatingTasks = shouldEnable - ? await this.taskManager.bulkEnable(taskIdsToUpdate, false) - : await this.taskManager.bulkDisable(taskIdsToUpdate); + ? await this.taskManager.bulkEnable(taskIdsToUpdate, false, { request: this.request }) + : await this.taskManager.bulkDisable(taskIdsToUpdate, false, { request: this.request }); for (const error of resultFromUpdatingTasks.errors) { bulkErrors.push({ diff --git a/x-pack/platform/plugins/shared/task_manager/server/task_scheduling.test.ts b/x-pack/platform/plugins/shared/task_manager/server/task_scheduling.test.ts index dfd20fecb170d..cf66531317cae 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/task_scheduling.test.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/task_scheduling.test.ts @@ -507,6 +507,37 @@ describe('TaskScheduling', () => { 5 * 60 * 1000 ); }); + test('should call store bulk update with request when provided', async () => { + const task = taskManagerMock.createTask({ + id, + enabled: false, + schedule: { interval: '3h' }, + }); + mockTaskStore.bulkUpdate.mockImplementation(() => + Promise.resolve([{ tag: 'ok', value: task }]) + ); + const mockRequest = httpServerMock.createKibanaRequest(); + mockTaskStore.bulkGet.mockResolvedValue([asOk(task)]); + + const taskScheduling = new TaskScheduling(taskSchedulingOpts); + await taskScheduling.bulkEnable([id], false, { request: mockRequest }); + + const bulkUpdatePayload = mockTaskStore.bulkUpdate.mock.calls[0]; + + expect(bulkUpdatePayload).toEqual([ + [ + { + ...task, + enabled: true, + }, + ], + { + validate: false, + mergeAttributes: undefined, + options: { request: mockRequest }, + }, + ]); + }); }); describe('bulkDisable', () => { @@ -587,6 +618,38 @@ describe('TaskScheduling', () => { expect(bulkUpdatePayload).toHaveLength(0); }); + + test('should call store bulk update with request when provided', async () => { + const task = taskManagerMock.createTask({ + id, + enabled: true, + schedule: { interval: '3h' }, + }); + mockTaskStore.bulkUpdate.mockImplementation(() => + Promise.resolve([{ tag: 'ok', value: task }]) + ); + const mockRequest = httpServerMock.createKibanaRequest(); + mockTaskStore.bulkGet.mockResolvedValue([asOk(task)]); + + const taskScheduling = new TaskScheduling(taskSchedulingOpts); + await taskScheduling.bulkDisable([id], false, { request: mockRequest }); + + const bulkUpdatePayload = mockTaskStore.bulkUpdate.mock.calls[0]; + + expect(bulkUpdatePayload).toEqual([ + [ + { + ...task, + enabled: false, + }, + ], + { + validate: false, + mergeAttributes: undefined, + options: { request: mockRequest }, + }, + ]); + }); }); describe('bulkUpdateState', () => { diff --git a/x-pack/platform/plugins/shared/task_manager/server/task_scheduling.ts b/x-pack/platform/plugins/shared/task_manager/server/task_scheduling.ts index 9609e46648fe4..620cd50fa1597 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/task_scheduling.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/task_scheduling.ts @@ -156,7 +156,11 @@ export class TaskScheduling { ); } - public async bulkDisable(taskIds: string[], clearStateIdsOrBoolean?: string[] | boolean) { + public async bulkDisable( + taskIds: string[], + clearStateIdsOrBoolean?: string[] | boolean, + options?: ApiKeyOptions + ) { return await retryableBulkUpdate({ taskIds, store: this.store, @@ -171,10 +175,11 @@ export class TaskScheduling { : {}), }), validate: false, + options, }); } - public async bulkEnable(taskIds: string[], runSoon: boolean = true) { + public async bulkEnable(taskIds: string[], runSoon: boolean = true, options?: ApiKeyOptions) { return await retryableBulkUpdate({ taskIds, store: this.store, @@ -193,6 +198,7 @@ export class TaskScheduling { return { ...task, enabled: true }; }, validate: false, + options, }); }