UNPKG

@julesl23/s5js

Version:

Enhanced TypeScript SDK for S5 decentralized storage with path-based API, media processing, and directory utilities

30 lines 2.04 kB
import { expect, test, describe } from "vitest"; import { JSCryptoImplementation } from "../src/api/crypto/js.js"; import { createRegistryEntry, deserializeRegistryEntry, serializeRegistryEntry, verifyRegistryEntry } from "../src/registry/entry.js"; import { bytesToHex } from "@noble/hashes/utils"; describe("registry", async () => { const crypto = new JSCryptoImplementation(); const keyPair = await crypto.newKeyPairEd25519(new Uint8Array(32)); test("signatures", async () => { const data = new Uint8Array(33); const revision = 1; const entry = await createRegistryEntry(keyPair, data, revision, crypto); expect(bytesToHex(entry.signature)).toBe("b5c2efc79193b5495838aaa6e9c4500ae685ab7d1f790ece3cb7244a63305c6b072a7190a088a81cc203e24cbd2cc1cf318022bdce4883d4a37600b3675a290f"); const result = await verifyRegistryEntry(entry, crypto); expect(result).toBe(true); }); test("serialization", async () => { const exampleHash = crypto.hashBlake3Sync(new Uint8Array(0)); const data = new Uint8Array([0x1e, ...exampleHash]); const revision = 42; const entry = await createRegistryEntry(keyPair, data, revision, crypto); const serialized = serializeRegistryEntry(entry); expect(bytesToHex(serialized)).toBe("07ed3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da292a00000000000000211eaf1349b9f5f9a1a6a0404dea36dcc9499bcb25c9adc112b7cc9a93cae41f326280e4e006ceb0da7934bf6308ca6b17ab5f98f1593dee44644ea252a82f77cf5dd43db1833f64c6461bc5cd20dee4e4dfcca051381021da89396693af5cfc3e0c"); const deserializedEntry = deserializeRegistryEntry(serialized); expect(bytesToHex(deserializedEntry.data)).toBe(bytesToHex(data)); expect(bytesToHex(deserializedEntry.pk)).toBe(bytesToHex(keyPair.publicKey)); expect(bytesToHex(deserializedEntry.signature)).toBe(bytesToHex(entry.signature)); expect(deserializedEntry.revision).toBe(revision); }); }); //# sourceMappingURL=registry.test.js.map