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.
56 lines
1.9 KiB
TypeScript
56 lines
1.9 KiB
TypeScript
import { describe, test, expect, beforeEach, afterEach } from 'bun:test';
|
|
import { WebhookServer } from '../../src/server';
|
|
import { GroupSyncService } from '../../src/services/group-sync';
|
|
|
|
const envBackup = { ...process.env };
|
|
|
|
describe('WebhookServer - evento GROUPS_UPSERT', () => {
|
|
let originalSyncGroups: any;
|
|
let originalRefresh: any;
|
|
let originalSyncMembers: any;
|
|
|
|
beforeEach(() => {
|
|
process.env = { ...envBackup, NODE_ENV: 'test' }; // omite verificación de instancia
|
|
originalSyncGroups = GroupSyncService.syncGroups;
|
|
originalRefresh = (GroupSyncService as any).refreshActiveGroupsCache;
|
|
originalSyncMembers = GroupSyncService.syncMembersForActiveGroups;
|
|
});
|
|
|
|
afterEach(() => {
|
|
GroupSyncService.syncGroups = originalSyncGroups;
|
|
(GroupSyncService as any).refreshActiveGroupsCache = originalRefresh;
|
|
GroupSyncService.syncMembersForActiveGroups = originalSyncMembers;
|
|
process.env = envBackup;
|
|
});
|
|
|
|
test('dispara syncGroups -> refresh -> syncMembers', async () => {
|
|
const calls: string[] = [];
|
|
GroupSyncService.syncGroups = async () => {
|
|
calls.push('syncGroups');
|
|
return { added: 0, updated: 0 };
|
|
};
|
|
(GroupSyncService as any).refreshActiveGroupsCache = () => {
|
|
calls.push('refresh');
|
|
};
|
|
GroupSyncService.syncMembersForActiveGroups = async () => {
|
|
calls.push('syncMembers');
|
|
return { groups: 0, added: 0, updated: 0, deactivated: 0 };
|
|
};
|
|
|
|
const payload = {
|
|
event: 'GROUPS_UPSERT',
|
|
instance: 'any-instance',
|
|
data: {}
|
|
};
|
|
const req = new Request('http://localhost:3007', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify(payload)
|
|
});
|
|
|
|
const res = await WebhookServer.handleRequest(req);
|
|
expect(res.status).toBe(200);
|
|
expect(calls).toEqual(['syncGroups', 'refresh', 'syncMembers']);
|
|
});
|
|
});
|