You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
| import { describe, test, expect, mock, beforeEach, afterEach } from 'bun:test';
 | |
| import { WebhookManager } from '../../../src/services/webhook-manager';
 | |
| 
 | |
| describe('WebhookManager', () => {
 | |
|   const envBackup = process.env;
 | |
| 
 | |
|   beforeEach(() => {
 | |
|     process.env = {
 | |
|       ...envBackup,
 | |
|       EVOLUTION_API_URL: 'https://test-api',
 | |
|       EVOLUTION_API_KEY: 'test-key',
 | |
|       EVOLUTION_API_INSTANCE: 'test-instance',
 | |
|       WEBHOOK_URL: 'https://test-webhook'
 | |
|     };
 | |
|   });
 | |
| 
 | |
|   afterEach(() => {
 | |
|     process.env = envBackup;
 | |
|   });
 | |
| 
 | |
|   test('should warn about missing port in internal URLs', () => {
 | |
|     process.env.WEBHOOK_URL = 'http://srv-captain--taskbot/webhook';
 | |
|     const consoleSpy = mock(() => {});
 | |
|     console.warn = consoleSpy;
 | |
|     
 | |
|     WebhookManager['validateConfig']();
 | |
|     
 | |
|     expect(consoleSpy).toHaveBeenCalledWith(
 | |
|       expect.stringContaining('missing port number')
 | |
|     );
 | |
|   });
 | |
| 
 | |
|   test('should accept internal URLs with ports', () => {
 | |
|     process.env.WEBHOOK_URL = 'http://srv-captain--taskbot:3007/webhook';
 | |
|     const consoleSpy = mock(() => {});
 | |
|     console.warn = consoleSpy;
 | |
|     
 | |
|     WebhookManager['validateConfig']();
 | |
|     
 | |
|     expect(consoleSpy).not.toHaveBeenCalled();
 | |
|   });
 | |
| 
 | |
|   test('should create correct config structure', () => {
 | |
|     const config = WebhookManager['getConfig']();
 | |
|     expect(config).toEqual({
 | |
|       webhook: {
 | |
|         url: 'https://test-webhook',
 | |
|         enabled: true,
 | |
|         webhook_by_events: true,
 | |
|         webhook_base64: true,
 | |
|         events: expect.any(Array)
 | |
|       }
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   test('should validate successful response', () => {
 | |
|     const validResponse = {
 | |
|       id: 'test-id',
 | |
|       url: 'https://test-webhook',
 | |
|       enabled: true,
 | |
|       events: ['APPLICATION_STARTUP']
 | |
|     };
 | |
|     // Mock the private validateResponse method
 | |
|     const mockValidate = mock(() => {});
 | |
|     WebhookManager['validateResponse'] = mockValidate;
 | |
|     WebhookManager['validateResponse'](validResponse);
 | |
|     expect(mockValidate).toHaveBeenCalled();
 | |
|   });
 | |
| 
 | |
|   test('should reject disabled webhook response', () => {
 | |
|     const invalidResponse = {
 | |
|       id: 'test-id',
 | |
|       url: 'https://test-webhook',
 | |
|       enabled: false,
 | |
|       events: ['APPLICATION_STARTUP']
 | |
|     };
 | |
|     expect(() => {
 | |
|       if (!invalidResponse.enabled) {
 | |
|         throw new Error('Webhook not enabled');
 | |
|       }
 | |
|     }).toThrow();
 | |
|   });
 | |
| });
 |