Merge remote-tracking branch 'origin/feature/audit-logs' into audit-logs/service

This commit is contained in:
Rémi de Juvigny 2022-12-12 16:42:50 +01:00
commit bdda90ebf6
3 changed files with 25 additions and 7 deletions

View File

@ -95,4 +95,24 @@ describe('Event Hub', () => {
expect(fn).toHaveBeenCalledTimes(1);
expect(fn2).toHaveBeenCalledTimes(1);
});
it('removes all subscribers on removeAllListeners()', async () => {
const { subscribe, on, emit, removeAllListeners } = createEventHub();
const fn = jest.fn();
const fn2 = jest.fn();
subscribe(fn);
on('my-event', fn2);
await emit('my-event');
expect(fn).toHaveBeenCalled();
expect(fn2).toHaveBeenCalled();
removeAllListeners();
// Subscribers are removed
await emit('my-event');
expect(fn).toHaveBeenCalledTimes(1);
expect(fn2).toHaveBeenCalledTimes(1);
});
});

View File

@ -72,6 +72,7 @@ module.exports = function createEventHub() {
return {
...eventHub,
removeListener: eventHub.off,
removeAllListeners: eventHub.destroy,
addListener: eventHub.on,
};
};

View File

@ -32,18 +32,14 @@ class WebhookRunner {
this.queue = new WorkerQueue({ logger, concurrency: 5 });
this.queue.subscribe(this.executeListener.bind(this));
strapi.eventHub.subscribe((eventName, ...args) => {
if (this.listeners.has(eventName)) {
const listener = this.listeners.get(eventName);
listener(...args);
}
});
}
deleteListener(event) {
debug(`Deleting listener for event '${event}'`);
if (this.listeners.has(event)) {
const fn = this.listeners.get(event);
this.eventHub.off(event, fn);
this.listeners.delete(event);
}
}
@ -61,6 +57,7 @@ class WebhookRunner {
};
this.listeners.set(event, listen);
this.eventHub.on(event, listen);
}
async executeListener({ event, info }) {