26 lines
888 B
JavaScript
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);
|
|
});
|
|
}); |