diff --git a/apps/server/src/modules/deletion/api/controller/api-test/deletion-request-create.api.spec.ts b/apps/server/src/modules/deletion/api/controller/api-test/deletion-request-create.api.spec.ts index 894baab6f3e..06de3203e64 100644 --- a/apps/server/src/modules/deletion/api/controller/api-test/deletion-request-create.api.spec.ts +++ b/apps/server/src/modules/deletion/api/controller/api-test/deletion-request-create.api.spec.ts @@ -117,34 +117,30 @@ describe(`deletionRequest create (api)`, () => { expect(result.requestId).toBeDefined(); }); - describe('when the "delete in minutes" param has not been provided', () => { - it( - 'should set the "deletion planned at" date to the date after the default "delete in minutes" value ' + - '(43200 minutes which is 30 days), with some operational time tolerance', - async () => { - const { deletionRequestToCreate, defaultdeleteAfterMinutes, operationalTimeToleranceInSeconds } = setup(); - - const response = await testApiClient.post('', deletionRequestToCreate); - - const result = response.body as DeletionRequestResponse; - const createdDeletionRequestId = result.requestId; - - const createdItem = await em.findOneOrFail(DeletionRequestEntity, createdDeletionRequestId); - - const isDeletionPlannedAtDateCorrect = isDeletionPlannedWithinAcceptableRange( - createdItem.createdAt, - createdItem.deleteAfter, - defaultdeleteAfterMinutes, - operationalTimeToleranceInSeconds - ); - - expect(isDeletionPlannedAtDateCorrect).toEqual(true); - } - ); + describe('when the "delete after minutes" param has not been provided', () => { + it('should set the "deleteAfter" date to the date after the default DELETION_DELETE_AFTER_MINUTES ', async () => { + const { deletionRequestToCreate, defaultdeleteAfterMinutes, operationalTimeToleranceInSeconds } = setup(); + + const response = await testApiClient.post('', deletionRequestToCreate); + + const result = response.body as DeletionRequestResponse; + const createdDeletionRequestId = result.requestId; + + const createdItem = await em.findOneOrFail(DeletionRequestEntity, createdDeletionRequestId); + + const isDeletionPlannedAtDateCorrect = isDeletionPlannedWithinAcceptableRange( + createdItem.createdAt, + createdItem.deleteAfter, + defaultdeleteAfterMinutes, + operationalTimeToleranceInSeconds + ); + + expect(isDeletionPlannedAtDateCorrect).toEqual(true); + }); }); - describe('when the "delete in minutes" param has been set to 0', () => { - it('should set the "deletion planned at" date to now, with some operational time tolerance', async () => { + describe('when the "delete after minutes" param has been set to 0', () => { + it('should set the "deleteAfter" date to now', async () => { const { deletionRequestToImmediateRemoval, operationalTimeToleranceInSeconds } = setup(); const response = await testApiClient.post('', deletionRequestToImmediateRemoval); @@ -164,6 +160,32 @@ describe(`deletionRequest create (api)`, () => { expect(isDeletionPlannedAtDateCorrect).toEqual(true); }); }); + + describe('when the "delete after minutes" param has been set to > 0', () => { + it('should set the "deleteAfter" date to now plus "delete after minutes" ', async () => { + const { deletionRequestToCreate, operationalTimeToleranceInSeconds } = setup(); + + const deleteAfterMinutes = 120; + + deletionRequestToCreate.deleteAfterMinutes = deleteAfterMinutes; + + const response = await testApiClient.post('', deletionRequestToCreate); + + const result = response.body as DeletionRequestResponse; + const createdDeletionRequestId = result.requestId; + + const createdItem = await em.findOneOrFail(DeletionRequestEntity, createdDeletionRequestId); + + const isDeletionPlannedAtDateCorrect = isDeletionPlannedWithinAcceptableRange( + createdItem.createdAt, + createdItem.deleteAfter, + deleteAfterMinutes, + operationalTimeToleranceInSeconds + ); + + expect(isDeletionPlannedAtDateCorrect).toEqual(true); + }); + }); }); }); }); diff --git a/apps/server/src/modules/deletion/api/uc/deletion-request.uc.ts b/apps/server/src/modules/deletion/api/uc/deletion-request.uc.ts index f2a83d9b225..ebf6c51b795 100644 --- a/apps/server/src/modules/deletion/api/uc/deletion-request.uc.ts +++ b/apps/server/src/modules/deletion/api/uc/deletion-request.uc.ts @@ -65,10 +65,10 @@ export class DeletionRequestUc implements IEventHandler { async createDeletionRequest(deletionRequest: DeletionRequestBodyProps): Promise { this.logger.debug({ action: 'createDeletionRequest', deletionRequest }); - const hours = + const minutes = deletionRequest.deleteAfterMinutes ?? this.configService.get('ADMIN_API__DELETION_DELETE_AFTER_MINUTES'); const deleteAfter = new Date(); - deleteAfter.setMinutes(deleteAfter.getHours() + hours); + deleteAfter.setMinutes(deleteAfter.getMinutes() + minutes); const result = await this.deletionRequestService.createDeletionRequest( deletionRequest.targetRef.id, deletionRequest.targetRef.domain, diff --git a/apps/server/src/modules/deletion/repo/deletion-request.repo.ts b/apps/server/src/modules/deletion/repo/deletion-request.repo.ts index 4cc8ff442f0..68c6b96f97d 100644 --- a/apps/server/src/modules/deletion/repo/deletion-request.repo.ts +++ b/apps/server/src/modules/deletion/repo/deletion-request.repo.ts @@ -45,7 +45,7 @@ export class DeletionRequestRepo { scope.addQuery(statusScope.query); - const order = { createdAt: SortOrder.desc }; // TODO why decending order? Should it not be ascending? + const order = { createdAt: SortOrder.asc }; const [deletionRequestEntities] = await this.em.findAndCount(DeletionRequestEntity, scope.query, { limit,