diff --git a/src/__tests__/convert-sanitized.test.ts b/src/__tests__/convert-sanitized.test.ts
index a7aaa92..da55288 100644
--- a/src/__tests__/convert-sanitized.test.ts
+++ b/src/__tests__/convert-sanitized.test.ts
@@ -38,7 +38,7 @@ describe("convert routes use sanitized PDF options", () => {
.send({ html: "
Test
", format: "a4" });
expect(vi.mocked(renderPdf)).toHaveBeenCalledOnce();
- const opts = vi.mocked(renderPdf).mock.calls[0][1];
+ const opts = vi.mocked(renderPdf).mock.calls[0]![1] as Record;
expect(opts.format).toBe("A4");
});
@@ -51,7 +51,7 @@ describe("convert routes use sanitized PDF options", () => {
.send({ markdown: "# Test", format: "letter" });
expect(vi.mocked(renderPdf)).toHaveBeenCalledOnce();
- const opts = vi.mocked(renderPdf).mock.calls[0][1];
+ const opts = vi.mocked(renderPdf).mock.calls[0]![1] as Record;
expect(opts.format).toBe("Letter");
});
@@ -64,7 +64,7 @@ describe("convert routes use sanitized PDF options", () => {
.send({ url: "https://example.com", format: "a3" });
expect(vi.mocked(renderUrlPdf)).toHaveBeenCalledOnce();
- const opts = vi.mocked(renderUrlPdf).mock.calls[0][1];
+ const opts = vi.mocked(renderUrlPdf).mock.calls[0]![1] as Record;
expect(opts.format).toBe("A3");
});
});
@@ -79,7 +79,7 @@ describe("demo routes use sanitized PDF options", () => {
.send({ html: "Test
", format: "a4" });
expect(vi.mocked(renderPdf)).toHaveBeenCalledOnce();
- const opts = vi.mocked(renderPdf).mock.calls[0][1];
+ const opts = vi.mocked(renderPdf).mock.calls[0]![1] as Record;
expect(opts.format).toBe("A4");
});
@@ -92,7 +92,7 @@ describe("demo routes use sanitized PDF options", () => {
.send({ markdown: "# Test", format: "a4" });
expect(vi.mocked(renderPdf)).toHaveBeenCalledOnce();
- const opts = vi.mocked(renderPdf).mock.calls[0][1];
+ const opts = vi.mocked(renderPdf).mock.calls[0]![1] as Record;
expect(opts.format).toBe("A4");
});
});
diff --git a/src/__tests__/error-responses.test.ts b/src/__tests__/error-responses.test.ts
index 2dafab0..af143cc 100644
--- a/src/__tests__/error-responses.test.ts
+++ b/src/__tests__/error-responses.test.ts
@@ -226,12 +226,12 @@ describe("Error Response Security - Admin Cleanup", () => {
const mockAdminAuth = (req: any, res: any, next: any) => next();
// Mock database functions
- vi.mock("../services/database.js", () => ({
+ vi.mock("../services/db.js", () => ({
cleanupStaleData: vi.fn(),
}));
- const { cleanupStaleData } = await import("../services/database.js");
- vi.mocked(cleanupStaleData).mockResolvedValue({ deletedCount: 5 });
+ const { cleanupStaleData } = await import("../services/db.js");
+ vi.mocked(cleanupStaleData).mockResolvedValue({ expiredVerifications: 3, orphanedUsage: 2 });
// Create minimal app
app = express();
@@ -250,7 +250,7 @@ describe("Error Response Security - Admin Cleanup", () => {
});
it("does not expose error message (no 'message' field)", async () => {
- const { cleanupStaleData } = await import("../services/database.js");
+ const { cleanupStaleData } = await import("../services/db.js");
const internalError = new Error("Database connection pool exhausted");
vi.mocked(cleanupStaleData).mockRejectedValue(internalError);
diff --git a/src/__tests__/recover-initial-db-fallback.test.ts b/src/__tests__/recover-initial-db-fallback.test.ts
index bcb5951..a9e6c47 100644
--- a/src/__tests__/recover-initial-db-fallback.test.ts
+++ b/src/__tests__/recover-initial-db-fallback.test.ts
@@ -63,7 +63,7 @@ describe("POST /v1/recover DB fallback (BUG-110)", () => {
vi.clearAllMocks();
mockGetAllKeys.mockReturnValue([]);
mockCreatePending.mockResolvedValue({ code: "123456" } as any);
- mockSendEmail.mockResolvedValue(undefined);
+ mockSendEmail.mockResolvedValue(true);
});
it("sends verification email via DB fallback when key not in cache but exists in DB", async () => {
diff --git a/src/__tests__/render-timing.test.ts b/src/__tests__/render-timing.test.ts
index 79b1355..5560c28 100644
--- a/src/__tests__/render-timing.test.ts
+++ b/src/__tests__/render-timing.test.ts
@@ -108,7 +108,7 @@ describe("PDF render timing", () => {
vi.mocked(renderPdf).mockResolvedValue({ pdf: Buffer.from("%PDF-1.4 mock"), durationMs: 30 } as any);
const dbMod = await import("../services/db.js");
- if (vi.isMockFunction(dbMod.default?.prepare)) {
+ if (vi.isMockFunction((dbMod as Record).default)) {
// db is already mocked elsewhere
}
});
diff --git a/src/__tests__/usage-flush.test.ts b/src/__tests__/usage-flush.test.ts
index 886760c..18a5f86 100644
--- a/src/__tests__/usage-flush.test.ts
+++ b/src/__tests__/usage-flush.test.ts
@@ -20,8 +20,8 @@ describe("flushDirtyEntries – independent key flushing", () => {
const next = vi.fn();
const res = { status: vi.fn(() => ({ json: vi.fn() })) };
- usageMod.usageMiddleware({ apiKeyInfo: { key: "key-good" } }, res, next);
- usageMod.usageMiddleware({ apiKeyInfo: { key: "key-bad" } }, res, next);
+ usageMod.usageMiddleware({ apiKeyInfo: { key: "key-good" } } as any, res as any, next);
+ usageMod.usageMiddleware({ apiKeyInfo: { key: "key-bad" } } as any, res as any, next);
// Track which keys were successfully upserted
const flushedKeys: string[] = [];