@zanii/testing
v0.1.1
Published
Zanii test utilities: an in-memory ledger (with real Merkle proofs) plus identity/cert/receipt fixtures — unit-test instrumented agents with no server or network.
Readme
@zanii/testing
Unit-test agents instrumented with Zanii — no server, no network.
createTestLedger() gives you a fetch to drop into ZaniiAgent; it's a real
in-memory transparency log that keeps a Merkle tree and serves valid inclusion
proofs + a signed tree head, so fetchAndVerifyProof and verifyAuditBundle
actually verify against it. Plus fixtures to mint identities, certs, and receipts.
npm install -D @zanii/testingUse it
import { ZaniiAgent, fetchAndVerifyProof } from '@zanii/sdk';
import { createTestLedger, makeIdentity, makeCert } from '@zanii/testing';
const ledger = createTestLedger();
const owner = makeIdentity();
const agent = makeIdentity();
const zanii = new ZaniiAgent({
serverUrl: 'http://test.local',
agentDid: agent.did,
agentPrivateKey: agent.privateKey,
delegation: [makeCert(owner, agent, ['crm.*'])],
fetchImpl: ledger.fetch, // ← point the agent at the in-memory ledger
});
const { hash } = await zanii.record({ target: 'crm.lookup', payload: { email: '[email protected]' } });
await zanii.flush();
expect(ledger.hasRecorded('crm.lookup')).toBe(true);
expect(ledger.verifyAll()).toBe(true);
expect((await fetchAndVerifyProof('http://test.local', hash, ledger.fetch)).ok).toBe(true);API
Ledger — createTestLedger(logKey?) → TestLedger:
fetch— pass tonew ZaniiAgent({ fetchImpl })and tofetchAndVerifyProof.size,receipts,sth(),logKey.hasRecorded(target),recordedTargets(),verifyAll(),reset().- Handles
GET /v1/head/:did,POST /v1/receipts,GET /v1/proof/:hash,GET /v1/sth,GET /v1/recent.
Fixtures:
makeIdentity()→ a freshdid:keykeypair.makeCert(owner, agent, scopes, exp?)→ an owner-signed delegation.makeReceipt(agent, delegation, { target, action?, payload?, prev?, ts? })→ a signed receipt.
Changelog
- 0.1.0 — initial release:
createTestLedger(in-memory ledger with real proofs) +makeIdentity/makeCert/makeReceiptfixtures.
License
Apache-2.0.
