Files
2026-06-14 13:18:56 +00:00

40 lines
1.2 KiB
JavaScript

// tests/hash.test.js
const { hashEvent, hashChain, sha256Async } = require('../lib/hash.js');
describe('Hash', () => {
test('hashEvent returns consistent hash', () => {
const event = { id: 'e1', type: 'tool_use' };
const h1 = hashEvent(event);
const h2 = hashEvent(event);
expect(h1).toBe(h2);
expect(h1.length).toBeGreaterThan(0);
});
test('hashEvent returns different hash for different events', () => {
const h1 = hashEvent({ id: 'e1', type: 'tool_use' });
const h2 = hashEvent({ id: 'e2', type: 'api_call' });
expect(h1).not.toBe(h2);
});
test('hashChain returns empty for empty array', () => {
expect(hashChain([])).toBe('');
});
test('hashChain returns hash for events', () => {
const chain = hashChain([{ id: 'e1' }, { id: 'e2' }]);
expect(chain.length).toBeGreaterThan(0);
});
test('hashChain is order-sensitive', () => {
const chain1 = hashChain([{ id: 'e1' }, { id: 'e2' }]);
const chain2 = hashChain([{ id: 'e2' }, { id: 'e1' }]);
expect(chain1).not.toBe(chain2);
});
test('sha256Async returns hex string', async () => {
const hash = await sha256Async('hello');
expect(hash).toMatch(/^[a-f0-9]{64}$/);
});
});