Skip to content
Snippets Groups Projects
index.ts 1.08 KiB
Newer Older
import { EventBus, Event, EventPublisher, EventSubscriber } from '../event-bus';
Peter Hooper's avatar
Peter Hooper committed
export type AnyEvent = Event;
export type AnyHandler = (ev: AnyEvent) => Promise<boolean>;

/**
 * MockEventBus is defined here for use during testing across services that use
 * the event-bus. Examples are: audit and continuum-auth.
Cory Donkin's avatar
Cory Donkin committed

export class MockEventBus extends EventBus implements EventPublisher, EventSubscriber {
    private queues: Map<string, AnyHandler> = new Map();
Peter Hooper's avatar
Peter Hooper committed
    public async publish(event: Event): Promise<boolean> {
        const fn = this.queues.get(`${event.eventType}`);
        if (fn) {
            if (this.eventsToHandle.includes(event.eventType)) {
                return fn(event);
            }
        }
        return Promise.resolve(false);
nlisgo's avatar
nlisgo committed
    }
Peter Hooper's avatar
Peter Hooper committed
    public async subscribe(eventType: string, handler: (event: Event) => Promise<boolean>): Promise<void> {
        if (!this.serviceName) {
            Promise.reject(`Service name not set!`);
        }
        this.queues.set(`${eventType}`, handler);
nlisgo's avatar
nlisgo committed
    }
Peter Hooper's avatar
Peter Hooper committed

    destroy(): Promise<void> {
        return Promise.resolve();
    }