64 lines
1.5 KiB
JavaScript
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");
|
||
|
|
});
|
||
|
|
});
|