From c484bd99b61b36ddabd0d1a7edfbb9cfbf28c445 Mon Sep 17 00:00:00 2001 From: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> Date: Mon, 22 Jun 2026 15:56:24 +0200 Subject: [PATCH] fix: ignore external libraries for integrity report checksum check (#29248) --- server/src/queries/integrity.repository.sql | 1 + server/src/repositories/integrity.repository.ts | 1 + .../specs/services/integrity.service.spec.ts | 16 ++++++++++++++++ 3 files changed, 18 insertions(+) diff --git a/server/src/queries/integrity.repository.sql b/server/src/queries/integrity.repository.sql index b9ff92b091..d9940970d9 100644 --- a/server/src/queries/integrity.repository.sql +++ b/server/src/queries/integrity.repository.sql @@ -129,6 +129,7 @@ from and "integrity_report"."type" = $1 where "asset"."deletedAt" is null + and "asset"."isExternal" = false and "integrity_report"."createdAt" >= $2 and "integrity_report"."createdAt" <= $3 order by diff --git a/server/src/repositories/integrity.repository.ts b/server/src/repositories/integrity.repository.ts index 84ba4bdf48..12f0b98634 100644 --- a/server/src/repositories/integrity.repository.ts +++ b/server/src/repositories/integrity.repository.ts @@ -177,6 +177,7 @@ export class IntegrityRepository { 'asset.id as assetId', 'integrity_report.id as reportId', ]) + .where('asset.isExternal', '=', sql.lit(false)) .$if(startMarker !== undefined, (qb) => qb.where('integrity_report.createdAt', '>=', startMarker!)) .$if(endMarker !== undefined, (qb) => qb.where('integrity_report.createdAt', '<=', endMarker!)) .orderBy('integrity_report.createdAt', 'asc') diff --git a/server/test/medium/specs/services/integrity.service.spec.ts b/server/test/medium/specs/services/integrity.service.spec.ts index 758fb5ab00..db0f6f3ff2 100644 --- a/server/test/medium/specs/services/integrity.service.spec.ts +++ b/server/test/medium/specs/services/integrity.service.spec.ts @@ -686,6 +686,22 @@ describe(IntegrityService.name, () => { nextCursor: undefined, }); }); + + it('should skip external library files', async () => { + const { sut, ctx } = setup(); + const job = ctx.getMock(JobRepository); + job.queue.mockResolvedValue(void 0); + + const { user } = await ctx.newUser(); + + await ctx.newAsset({ ownerId: user.id, isExternal: true }); + + await sut.handleChecksumFiles({ refreshOnly: false }); + + await expect( + ctx.get(IntegrityRepository).getIntegrityReport({ limit: 100 }, IntegrityReport.ChecksumFail), + ).resolves.toEqual({ items: [], nextCursor: undefined }); + }); }); describe('handleChecksumRefresh', () => {