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();
|
|
});
|
|
});
|