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.
62 lines
2.2 KiB
TypeScript
62 lines
2.2 KiB
TypeScript
import { describe, it, beforeEach, expect } from 'bun:test';
|
|
import { makeMemDb } from '../../helpers/db';
|
|
import { AllowedGroups } from '../../../src/services/allowed-groups';
|
|
|
|
describe('AllowedGroups service', () => {
|
|
beforeEach(() => {
|
|
const memdb = makeMemDb();
|
|
(AllowedGroups as any).dbInstance = memdb;
|
|
AllowedGroups.resetForTests();
|
|
});
|
|
|
|
it('upsertPending inserta pending y es idempotente', () => {
|
|
const gid = '123@g.us';
|
|
|
|
AllowedGroups.upsertPending(gid, 'Grupo 123', 'tester');
|
|
AllowedGroups.upsertPending(gid, 'Grupo 123', 'tester');
|
|
|
|
// No se expone la DB aquí; validamos por comportamiento
|
|
expect(AllowedGroups.isAllowed(gid)).toBe(false);
|
|
});
|
|
|
|
it('setStatus cambia a allowed y isAllowed refleja el estado', () => {
|
|
const gid = '456@g.us';
|
|
|
|
expect(AllowedGroups.isAllowed(gid)).toBe(false);
|
|
const changed = AllowedGroups.setStatus(gid, 'allowed', 'Grupo 456');
|
|
expect(changed).toBe(true);
|
|
expect(AllowedGroups.isAllowed(gid)).toBe(true);
|
|
|
|
// Repetir con el mismo estado no debe cambiar
|
|
const changedAgain = AllowedGroups.setStatus(gid, 'allowed', 'Grupo 456');
|
|
expect(changedAgain).toBe(false);
|
|
});
|
|
|
|
it('listByStatus devuelve grupos por estado', () => {
|
|
AllowedGroups.setStatus('a@g.us', 'allowed', 'A');
|
|
AllowedGroups.setStatus('b@g.us', 'pending', 'B');
|
|
AllowedGroups.setStatus('c@g.us', 'blocked', 'C');
|
|
|
|
const allowed = AllowedGroups.listByStatus('allowed').map(r => r.group_id);
|
|
const pending = AllowedGroups.listByStatus('pending').map(r => r.group_id);
|
|
const blocked = AllowedGroups.listByStatus('blocked').map(r => r.group_id);
|
|
|
|
expect(allowed).toContain('a@g.us');
|
|
expect(pending).toContain('b@g.us');
|
|
expect(blocked).toContain('c@g.us');
|
|
});
|
|
|
|
it('seedFromEnv marca como allowed los ids provistos', () => {
|
|
const prev = process.env.ALLOWED_GROUPS;
|
|
process.env.ALLOWED_GROUPS = 'x@g.us, y@g.us , , z@g.us';
|
|
|
|
AllowedGroups.seedFromEnv();
|
|
|
|
expect(AllowedGroups.isAllowed('x@g.us')).toBe(true);
|
|
expect(AllowedGroups.isAllowed('y@g.us')).toBe(true);
|
|
expect(AllowedGroups.isAllowed('z@g.us')).toBe(true);
|
|
|
|
process.env.ALLOWED_GROUPS = prev;
|
|
});
|
|
});
|