import { crearTokenVistaPrevia, verificarTokenVistaPrevia } from './preview-token';

describe('token de vista previa', () => {
  const secreto = 's3cr3t';

  it('devuelve la empresa con un token válido', () => {
    const t = crearTokenVistaPrevia('emp-1', secreto, 1000);
    expect(verificarTokenVistaPrevia(t, secreto, 2000)).toBe('emp-1');
  });

  it('rechaza un token vencido, adulterado o firmado con otro secreto', () => {
    const t = crearTokenVistaPrevia('emp-1', secreto, 0);
    expect(verificarTokenVistaPrevia(t, secreto, 31 * 60 * 1000)).toBeNull();
    const [p, f] = crearTokenVistaPrevia('emp-1', secreto, 1000).split('.');
    const otroPayload = Buffer.from(JSON.stringify({ e: 'emp-2', x: 9e15 })).toString('base64url');
    expect(verificarTokenVistaPrevia(`${otroPayload}.${f}`, secreto, 2000)).toBeNull();
    expect(verificarTokenVistaPrevia(`${p}.${f}`, 'otro', 2000)).toBeNull();
    expect(verificarTokenVistaPrevia(undefined, secreto)).toBeNull();
    expect(verificarTokenVistaPrevia('basura', secreto)).toBeNull();
  });
});
