Files
TeleUploader/test/bootstrap.test.js
T
MythEclipseandClaude Opus 4.7 99b820709d feat: setup HTTP server and bootstrap application
Setup HTTP server with Bun.serve and bootstrap Telegram bot and other services.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 07:14:35 +07:00

64 lines
1.5 KiB
JavaScript

import { describe, it, expect, mock, beforeEach, afterAll } from "bun:test";
const mockServe = mock((options) => {
return {
port: options.port,
routes: options.routes,
stop: mock()
};
});
const originalServe = Bun.serve;
Bun.serve = mockServe;
const mockStartBot = mock(() => Promise.resolve({
stop: mock()
}));
mock.module("../src/bot.js", () => ({
startBot: mockStartBot
}));
mock.module("../src/routes/upload.js", () => ({
handleUpload: mock()
}));
mock.module("../src/routes/files.js", () => ({
handleFileRedirect: mock(),
handleFileInfo: mock()
}));
mock.module("../src/routes/health.js", () => ({
handleHealth: mock()
}));
mock.module("../src/utils/rateLimit.js", () => ({
cleanupRateLimitCache: mock()
}));
describe("Bootstrap Server", () => {
beforeEach(() => {
mockServe.mockClear();
mockStartBot.mockClear();
});
afterAll(() => {
Bun.serve = originalServe;
});
it("should bootstrap the application successfully", async () => {
await import("../src/index.js");
expect(mockServe).toHaveBeenCalled();
expect(mockStartBot).toHaveBeenCalled();
const serveCallArgs = mockServe.mock.calls[0][0];
expect(serveCallArgs).toHaveProperty("port");
expect(serveCallArgs).toHaveProperty("routes");
expect(serveCallArgs.routes).toHaveProperty("/api/upload");
expect(serveCallArgs.routes).toHaveProperty("/f/:public_id");
expect(serveCallArgs.routes).toHaveProperty("/file/:public_id/info");
expect(serveCallArgs.routes).toHaveProperty("/health");
});
});