UNPKG

@rocket.chat/apps-engine

Version:

The engine code for the Rocket.Chat Apps which manages, runs, translates, coordinates and all of that.

97 lines (77 loc) 3.01 kB
import { assertEquals, assertObjectMatch } from 'https://deno.land/std@0.203.0/assert/mod.ts'; import { afterAll, beforeEach, describe, it } from 'https://deno.land/std@0.203.0/testing/bdd.ts'; import { spy } from 'https://deno.land/std@0.203.0/testing/mock.ts'; import * as Messenger from '../messenger.ts'; import { AppObjectRegistry } from '../../AppObjectRegistry.ts'; import { Logger } from '../logger.ts'; describe('Messenger', () => { beforeEach(() => { AppObjectRegistry.clear(); AppObjectRegistry.set('logger', new Logger('test')); AppObjectRegistry.set('id', 'test'); Messenger.Transport.selectTransport('noop'); }); afterAll(() => { AppObjectRegistry.clear(); Messenger.Transport.selectTransport('stdout'); }); it('should add logs to success responses', async () => { const theSpy = spy(Messenger.Queue, 'enqueue'); const logger = AppObjectRegistry.get<Logger>('logger') as Logger; logger.info('test'); await Messenger.successResponse({ id: 'test', result: 'test' }); assertEquals(theSpy.calls.length, 1); const [responseArgument] = theSpy.calls[0].args; assertObjectMatch(responseArgument, { jsonrpc: '2.0', id: 'test', result: { value: 'test', logs: { appId: 'test', method: 'test', entries: [ { severity: 'info', method: 'test', args: ['test'], caller: 'anonymous OR constructor', }, ], }, }, }); theSpy.restore(); }); it('should add logs to error responses', async () => { const theSpy = spy(Messenger.Queue, 'enqueue'); const logger = AppObjectRegistry.get<Logger>('logger') as Logger; logger.info('test'); await Messenger.errorResponse({ id: 'test', error: { code: -32000, message: 'test' } }); assertEquals(theSpy.calls.length, 1); const [responseArgument] = theSpy.calls[0].args; assertObjectMatch(responseArgument, { jsonrpc: '2.0', id: 'test', error: { code: -32000, message: 'test', data: { logs: { appId: 'test', method: 'test', entries: [ { severity: 'info', method: 'test', args: ['test'], caller: 'anonymous OR constructor', }, ], }, }, }, }); theSpy.restore(); }); });