geocrop-platform./apps/nextgen/server/test/signature.spec.js

26 lines
888 B
JavaScript

import { describe, it, expect } from 'vitest';
const signatureService = require('../src/services/signature.service');
describe('signature.service', () => {
it('generates a deterministic SHA-256 hash and verifies it', () => {
const payload = {
consent_id: 'abc-123',
student_id: 42,
parent_id: 7,
from_school_id: 'School A',
to_school_id: 'School B',
approved_at: new Date().toISOString(),
};
const h = signatureService.generateConsentHash(payload);
expect(typeof h).toBe('string');
expect(h.length).toBe(64); // hex SHA-256
const ok = signatureService.verifyConsentHash(payload, h);
expect(ok).toBe(true);
// Mutate payload should fail verification
const bad = { ...payload, approved_at: new Date(Date.now() + 1000).toISOString() };
expect(signatureService.verifyConsentHash(bad, h)).toBe(false);
});
});