lib/middleware/honeybadger.test.ts
Rama master · réplica de lectura del repositorio original.
import { Context } from 'hono';
import { afterEach, describe, expect, it, vi } from 'vitest';
afterEach(() => {
vi.resetModules();
vi.restoreAllMocks();
delete process.env.HONEYBADGER_API_KEY;
delete process.env.ERROR_TRACKING_ROUTE_TIMEOUT;
delete process.env.NODE_NAME;
});
describe('honeybadger middleware', () => {
it('initializes honeybadger and captures slow routes', async () => {
process.env.HONEYBADGER_API_KEY = 'hbp_test_key';
process.env.ERROR_TRACKING_ROUTE_TIMEOUT = '50';
process.env.NODE_NAME = 'node-a';
const { default: honeybadger } = await import('@honeybadger-io/js');
const configureSpy = vi.spyOn(honeybadger, 'configure').mockReturnValue(honeybadger);
const setContextSpy = vi.spyOn(honeybadger, 'setContext').mockReturnValue(honeybadger);
const notifySpy = vi.spyOn(honeybadger, 'notify').mockReturnValue(false);
const { default: logger } = await import('@/utils/logger');
const infoSpy = vi.spyOn(logger, 'info');
const { default: middleware } = await import('@/middleware/honeybadger');
expect(configureSpy).toHaveBeenCalledWith({
apiKey: 'hbp_test_key',
enableUncaught: false,
});
expect(setContextSpy).toHaveBeenCalledWith({ node_name: 'node-a' });
expect(infoSpy).toHaveBeenCalledWith('Honeybadger inited.');
const nowSpy = vi.spyOn(Date, 'now');
nowSpy.mockReturnValueOnce(0).mockReturnValueOnce(100);
const ctx = new Context(new Request('http://localhost/test/slow'), { env: {}, path: '/test/slow' });
await middleware(ctx, () => Promise.resolve());
expect(notifySpy).toHaveBeenCalledTimes(1);
expect(notifySpy).toHaveBeenCalledWith(expect.any(Error), {
context: { name: 'test' },
});
});
});