Skip to content
Merged
34 changes: 32 additions & 2 deletions packages/daemon/__tests__/services/services.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1675,12 +1675,42 @@ describe('checkForMissedEvents', () => {
);
});

it('should throw error when context has no event', async () => {
it('should throw error when context has no event and no initialEventId', async () => {
const context = {};

await expect(checkForMissedEvents(context as any))
.rejects
.toThrow('No event in context when checking for missed events');
.toThrow('No event in context and no initialEventId when checking for missed events');
});

it('should use initialEventId when context.event is null', async () => {
const mockResponse = {
status: 200,
data: {
events: [],
latest_event_id: 25717039,
},
};

(axios.get as jest.Mock).mockResolvedValue(mockResponse);

const context = {
event: null,
initialEventId: 25717039,
};

const result = await checkForMissedEvents(context as any);

expect(result.hasNewEvents).toBe(false);
expect(axios.get).toHaveBeenCalledWith(
expect.stringContaining('/event'),
expect.objectContaining({
params: {
last_ack_event_id: 25717039,
size: 1,
},
}),
);
});

it('should handle API response with non-array events field', async () => {
Expand Down
8 changes: 4 additions & 4 deletions packages/daemon/src/services/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1078,11 +1078,11 @@ export const handleTokenCreated = async (context: Context) => {
* This is used to detect if we lost an event due to network packet loss
*/
export const checkForMissedEvents = async (context: Context): Promise<{ hasNewEvents: boolean; events: any[] }> => {
if (!context.event) {
throw new Error('No event in context when checking for missed events');
}
const lastAckEventId = context.event?.event.id ?? context.initialEventId;

const lastAckEventId = context.event.event.id;
if (lastAckEventId === null || lastAckEventId === undefined) {
throw new Error('No event in context and no initialEventId when checking for missed events');
}
const fullnodeUrl = getFullnodeHttpUrl();

logger.debug(`Checking for missed events after event ID ${lastAckEventId}`);
Expand Down
1 change: 1 addition & 0 deletions packages/wallet-service/src/api/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@ const _generatePolicy = (principalId: string, effect: string, resource: string,
`${resourcePrefix}/wallet/status`,
`${resourcePrefix}/wallet/addresses`,
`${resourcePrefix}/wallet/addresses/new`,
`${resourcePrefix}/wallet/addresses/has-transactions-outside-first-address`,
`${resourcePrefix}/wallet/balances`,
`${resourcePrefix}/wallet/tokens`,
`${resourcePrefix}/wallet/tokens/*/details`,
Expand Down