From a2b69323b1dddfddff8be66f6300cf4a8029dc46 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger Date: Thu, 26 Feb 2026 18:47:21 +0100 Subject: [PATCH] refactor: add missing await before promise expects --- .oxlintrc.json | 10 +++++++++- app/server/core/__tests__/repository-mutex.test.ts | 12 ++++++------ .../__tests__/convert-legacy-user.test.ts | 2 +- .../backups/__tests__/backups.execution.test.ts | 12 +++++++----- .../backups/__tests__/backups.service.test.ts | 6 ++++-- .../volumes/__tests__/volumes.service.test.ts | 4 ++-- bun.lock | 3 +-- package.json | 3 +-- tsconfig.json | 2 +- 9 files changed, 32 insertions(+), 22 deletions(-) diff --git a/.oxlintrc.json b/.oxlintrc.json index cde16021..ae1c8af2 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -148,5 +148,13 @@ "builtin": true }, "globals": {}, - "ignorePatterns": ["**/api-client/**"] + "ignorePatterns": ["**/api-client/**"], + "overrides": [ + { + "files": ["**/*.test.ts", "**/*.test.tsx"], + "rules": { + "typescript/await-thenable": "off" + } + } + ] } diff --git a/app/server/core/__tests__/repository-mutex.test.ts b/app/server/core/__tests__/repository-mutex.test.ts index dc92ca54..4e968bdb 100644 --- a/app/server/core/__tests__/repository-mutex.test.ts +++ b/app/server/core/__tests__/repository-mutex.test.ts @@ -59,7 +59,7 @@ describe("RepositoryMutex", () => { controller.abort(); - expect(exclusivePromise).rejects.toThrow(); + await expect(exclusivePromise).rejects.toThrow(); expect(results).toEqual(["acquired-shared-1", "aborted-exclusive"]); releaseShared1(); @@ -83,10 +83,10 @@ describe("RepositoryMutex", () => { const p3 = repoMutex.acquireExclusive(repoId, "ex-3"); controller2.abort(); - expect(p2).rejects.toThrow(); + await expect(p2).rejects.toThrow(); controller1.abort(); - expect(p1).rejects.toThrow(); + await expect(p1).rejects.toThrow(); releaseShared1(); @@ -115,7 +115,7 @@ describe("RepositoryMutex", () => { // Trigger abort while it's waiting controller.abort(); - expect(abortedAcquisition).rejects.toThrow(); + await expect(abortedAcquisition).rejects.toThrow(); expect(removed).toBe(true); expect(repoMutex.isLocked(repoId)).toBe(true); @@ -252,8 +252,8 @@ describe("RepositoryMutex", () => { const controller = new AbortController(); controller.abort(new Error("pre-aborted")); - expect(repoMutex.acquireShared(repoId, "s1", controller.signal)).rejects.toThrow("pre-aborted"); - expect(repoMutex.acquireExclusive(repoId, "e1", controller.signal)).rejects.toThrow("pre-aborted"); + await expect(repoMutex.acquireShared(repoId, "s1", controller.signal)).rejects.toThrow("pre-aborted"); + await expect(repoMutex.acquireExclusive(repoId, "e1", controller.signal)).rejects.toThrow("pre-aborted"); expect(repoMutex.isLocked(repoId)).toBe(false); }); diff --git a/app/server/lib/auth-middlewares/__tests__/convert-legacy-user.test.ts b/app/server/lib/auth-middlewares/__tests__/convert-legacy-user.test.ts index 0eb75083..ffa6009c 100644 --- a/app/server/lib/auth-middlewares/__tests__/convert-legacy-user.test.ts +++ b/app/server/lib/auth-middlewares/__tests__/convert-legacy-user.test.ts @@ -67,7 +67,7 @@ describe("convertLegacyUserOnFirstLogin", () => { password: "wrong-password", }); - expect(convertLegacyUserOnFirstLogin(ctx)).rejects.toThrow("Invalid credentials"); + await expect(convertLegacyUserOnFirstLogin(ctx)).rejects.toThrow("Invalid credentials"); // Verify user still exists (not migrated) const user = await db.query.usersTable.findFirst({ diff --git a/app/server/modules/backups/__tests__/backups.execution.test.ts b/app/server/modules/backups/__tests__/backups.execution.test.ts index 7cf3d504..b28c21fa 100644 --- a/app/server/modules/backups/__tests__/backups.execution.test.ts +++ b/app/server/modules/backups/__tests__/backups.execution.test.ts @@ -168,14 +168,14 @@ describe("stop backup", () => { }); // act & assert - expect(backupsExecutionService.stopBackup(schedule.id)).rejects.toThrow( + await expect(backupsExecutionService.stopBackup(schedule.id)).rejects.toThrow( "No backup is currently running for this schedule", ); }); test("should throw NotFoundError when schedule does not exist", async () => { // act & assert - expect(backupsExecutionService.stopBackup(99999)).rejects.toThrow("Backup schedule not found"); + await expect(backupsExecutionService.stopBackup(99999)).rejects.toThrow("Backup schedule not found"); }); }); @@ -223,14 +223,14 @@ describe("retention policy - runForget", () => { }); // act & assert - expect(backupsExecutionService.runForget(schedule.id)).rejects.toThrow( + await expect(backupsExecutionService.runForget(schedule.id)).rejects.toThrow( "No retention policy configured for this schedule", ); }); test("should throw NotFoundError when schedule does not exist", async () => { // act & assert - expect(backupsExecutionService.runForget(99999)).rejects.toThrow("Backup schedule not found"); + await expect(backupsExecutionService.runForget(99999)).rejects.toThrow("Backup schedule not found"); }); test("should throw NotFoundError when repository does not exist", async () => { @@ -242,7 +242,9 @@ describe("retention policy - runForget", () => { }); // act & assert - expect(backupsExecutionService.runForget(schedule.id, "non-existent-repo")).rejects.toThrow("Repository not found"); + await expect(backupsExecutionService.runForget(schedule.id, "non-existent-repo")).rejects.toThrow( + "Repository not found", + ); }); }); diff --git a/app/server/modules/backups/__tests__/backups.service.test.ts b/app/server/modules/backups/__tests__/backups.service.test.ts index a9b999c6..ebeaf169 100644 --- a/app/server/modules/backups/__tests__/backups.service.test.ts +++ b/app/server/modules/backups/__tests__/backups.service.test.ts @@ -222,8 +222,10 @@ describe("getScheduleByIdOrShortId", () => { organizationId: otherOrgId, }); - expect(backupsService.getScheduleByIdOrShortId(schedule.shortId)).rejects.toThrow("Backup schedule not found"); - expect(backupsService.getScheduleByIdOrShortId(schedule.id)).rejects.toThrow("Backup schedule not found"); + await expect(backupsService.getScheduleByIdOrShortId(schedule.shortId)).rejects.toThrow( + "Backup schedule not found", + ); + await expect(backupsService.getScheduleByIdOrShortId(schedule.id)).rejects.toThrow("Backup schedule not found"); }); }); diff --git a/app/server/modules/volumes/__tests__/volumes.service.test.ts b/app/server/modules/volumes/__tests__/volumes.service.test.ts index 3eb8e50f..41b16254 100644 --- a/app/server/modules/volumes/__tests__/volumes.service.test.ts +++ b/app/server/modules/volumes/__tests__/volumes.service.test.ts @@ -85,7 +85,7 @@ describe("volumeService", () => { const { organizationId, user } = await createTestSession(); await withContext({ organizationId, userId: user.id }, async () => { - expect(volumeService.getVolume(asShortId("nonexistent"))).rejects.toThrow("Volume not found"); + await expect(volumeService.getVolume(asShortId("nonexistent"))).rejects.toThrow("Volume not found"); }); }); }); @@ -120,7 +120,7 @@ describe("volumeService security", () => { await withContext({ organizationId, userId: user.id }, async () => { const traversalPath = `../${path.basename(secretPath)}`; - expect(volumeService.listFiles(volume.shortId, traversalPath)).rejects.toThrow("Invalid path"); + await expect(volumeService.listFiles(volume.shortId, traversalPath)).rejects.toThrow("Invalid path"); }); } finally { await fs.rm(tempRoot, { recursive: true, force: true }); diff --git a/bun.lock b/bun.lock index 5294aa81..8d9af7e5 100644 --- a/bun.lock +++ b/bun.lock @@ -79,7 +79,7 @@ "@testing-library/dom": "^10.4.1", "@testing-library/react": "^16.3.2", "@total-typescript/shoehorn": "^0.1.2", - "@types/bun": "^1.3.6", + "@types/bun": "^1.3.9", "@types/content-disposition": "^0.5.9", "@types/node": "^25.3.0", "@types/react": "^19.2.14", @@ -87,7 +87,6 @@ "@types/semver": "^7.7.1", "@vitejs/plugin-react": "^5.1.4", "babel-plugin-react-compiler": "^1.0.0", - "bun-types": "^1.3.6", "dotenv-cli": "^11.0.0", "drizzle-kit": "^1.0.0-beta.15-859cf75", "lefthook": "^2.1.1", diff --git a/package.json b/package.json index f0462938..1035b00e 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "@testing-library/dom": "^10.4.1", "@testing-library/react": "^16.3.2", "@total-typescript/shoehorn": "^0.1.2", - "@types/bun": "^1.3.6", + "@types/bun": "^1.3.9", "@types/content-disposition": "^0.5.9", "@types/node": "^25.3.0", "@types/react": "^19.2.14", @@ -108,7 +108,6 @@ "@types/semver": "^7.7.1", "@vitejs/plugin-react": "^5.1.4", "babel-plugin-react-compiler": "^1.0.0", - "bun-types": "^1.3.6", "dotenv-cli": "^11.0.0", "drizzle-kit": "^1.0.0-beta.15-859cf75", "lefthook": "^2.1.1", diff --git a/tsconfig.json b/tsconfig.json index 5302ad0d..bfd4ee03 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "include": ["**/*"], "compilerOptions": { "lib": ["DOM", "DOM.Iterable", "ES2022"], - "types": ["node", "vite/client", "bun-types"], + "types": ["node", "vite/client"], "target": "ES2022", "module": "ES2022", "moduleResolution": "bundler",