diff --git a/src/event-bus/types.test.ts b/src/event-bus/types.test.ts
index 417323430d5c8104127295566ff16559f8da590d..e507e82adc91fb08ec70f32841c196171965a3c8 100644
--- a/src/event-bus/types.test.ts
+++ b/src/event-bus/types.test.ts
@@ -1,13 +1,4 @@
-import { EventType, Event } from './types';
-
-const expectedEventProperties = {
-    eventType: true,
-    id: true,
-    created: true,
-    payload: true,
-    version: false,
-    context: false,
-};
+import { EventType, Event, EventPublisher, EventSubscriber, EventConfig } from './types';
 
 function createValidationFunction<T>(properties: Record<keyof T, boolean>): Function {
     return function<TActual extends T>(value: TActual): T {
@@ -42,6 +33,15 @@ describe('Event Bus Types', () => {
     });
 
     it('interface Event contains expected members', () => {
+        const expectedEventProperties = {
+            eventType: true,
+            id: true,
+            created: true,
+            payload: true,
+            version: false,
+            context: false,
+        };
+
         class ExpectedToBeAnEvent {
             id = '234';
             created: Date = new Date();
@@ -51,5 +51,52 @@ describe('Event Bus Types', () => {
         const isValidEvent = createValidationFunction<Event<{}>>(expectedEventProperties);
         const ee = new ExpectedToBeAnEvent();
         expect(() => isValidEvent(ee)).not.toThrow();
+        expect(() => ee as Event<{}>).not.toThrow();
+    });
+
+    it('interface EventPublisher contains expected members', () => {
+        const expectedEventPublisherProperties = {
+            publish: true,
+        };
+
+        class ExpectedToBeAnEventPublisher {
+            publish<T extends object>(event: Event<T>): Promise<boolean> {
+                return Promise.resolve(event !== null);
+            }
+        }
+        const isValidEventPublisher = createValidationFunction<EventPublisher>(expectedEventPublisherProperties);
+        const ep = new ExpectedToBeAnEventPublisher();
+        expect(() => isValidEventPublisher(ep)).not.toThrow();
+        expect(() => ep as EventPublisher).not.toThrow();
+    });
+
+    it('interface EventSubscriber contains expected members', () => {
+        const expectedEventSubscriberProperties = {
+            subscribe: true,
+        };
+
+        class ExpectedToBeAnEventSubscriber {
+            subscribe<T extends object>(eventType: string, handler: (event: Event<T>) => Promise<boolean>): void {
+                Promise.resolve(eventType !== '' && handler !== null);
+            }
+        }
+        const isValidEventSubscriber = createValidationFunction<EventSubscriber>(expectedEventSubscriberProperties);
+        const es = new ExpectedToBeAnEventSubscriber();
+        expect(() => isValidEventSubscriber(es)).not.toThrow();
+        expect(() => es as EventSubscriber).not.toThrow();
+    });
+
+    it('interface EventConfig contains expected members', () => {
+        const expectedEventConfigProperties = {
+            url: true,
+        };
+
+        class ExpectedToBeAnEventConfig {
+            url = 'here';
+        }
+        const isValidEventConfig = createValidationFunction<EventConfig>(expectedEventConfigProperties);
+        const ep = new ExpectedToBeAnEventConfig();
+        expect(() => isValidEventConfig(ep)).not.toThrow();
+        expect(() => ep as EventConfig).not.toThrow();
     });
 });