19 lines
829 B
TypeScript
19 lines
829 B
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { canonicalJson, sha256CanonicalJson } from '../../src/inspection-closing/canonical-json';
|
|
|
|
test('D5 canonical JSON sorts object keys recursively and preserves array order', () => {
|
|
const left = { z: 3, nested: { y: 2, x: 1 }, list: [{ b: 2, a: 1 }, 4] };
|
|
const right = { list: [{ a: 1, b: 2 }, 4], nested: { x: 1, y: 2 }, z: 3 };
|
|
assert.equal(canonicalJson(left), canonicalJson(right));
|
|
assert.equal(sha256CanonicalJson(left), sha256CanonicalJson(right));
|
|
assert.notEqual(sha256CanonicalJson(left), sha256CanonicalJson({ ...right, z: 4 }));
|
|
});
|
|
|
|
test('D5 canonical JSON serializes dates as ISO-8601', () => {
|
|
assert.equal(
|
|
canonicalJson({ at: new Date('2026-08-15T01:02:03.000Z') }),
|
|
'{"at":"2026-08-15T01:02:03.000Z"}',
|
|
);
|
|
});
|