import { Logger } from '@nestjs/common'; import { DeliveryService } from '../src/events/delivery.service'; import type { DeliveryStore } from '../src/events/delivery.store'; describe('delivery lease and logging policy', () => { afterEach(() => jest.restoreAllMocks()); it('warns when delivery succeeds after lease ownership is lost', async () => { const warning = jest .spyOn(Logger.prototype, 'warn') .mockImplementation(() => undefined); const store = { claim: jest.fn().mockResolvedValue({ eventId: 'event', leaseToken: 'lease', attempts: 1, event: { id: 'event', organizationId: 'org', orderId: 'order', kind: 'order.created', }, }), acknowledge: jest.fn().mockResolvedValue({ count: 0 }), fail: jest.fn(), }; const service = new DeliveryService( { assertConfigured() {}, async deliver() {} }, store as unknown as DeliveryStore, ); expect(await service.dispatchOne()).toBe(true); expect(warning).toHaveBeenCalledWith( JSON.stringify({ event: 'DELIVERY_LEASE_LOST', eventId: 'event' }), ); expect(store.fail).not.toHaveBeenCalled(); }); it('never logs adapter exception text or notification content', async () => { const logging = jest .spyOn(Logger.prototype, 'error') .mockImplementation(() => undefined); const store = { claim: jest.fn().mockResolvedValue({ eventId: 'event', leaseToken: 'lease', attempts: 2, event: { id: 'event', organizationId: 'org', orderId: 'order', kind: 'order.created', }, }), acknowledge: jest.fn(), fail: jest.fn().mockResolvedValue({ count: 1 }), }; const service = new DeliveryService( { assertConfigured() {}, async deliver() { throw new Error('private-address-and-secret'); }, }, store as unknown as DeliveryStore, ); await service.dispatchOne(); expect(logging).toHaveBeenCalledWith( JSON.stringify({ event: 'DELIVERY_FAILED', eventId: 'event', attempt: 2, }), ); expect(JSON.stringify(logging.mock.calls)).not.toContain('private-address'); }); });