UNPKG

@waku/rln

Version:

RLN (Rate Limiting Nullifier) implementation for Waku

56 lines 1.8 kB
import { expect } from "chai"; import { createRLN } from "./create.js"; export const TEST_CONSTANTS = { contentTopic: "/test/1/waku-message/utf8", emptyPubsubTopic: "", defaultIndex: 0, defaultPayload: new Uint8Array([1, 2, 3, 4, 5]) }; export const EMPTY_PROTO_MESSAGE = { timestamp: undefined, contentTopic: "", ephemeral: undefined, meta: undefined, rateLimitProof: undefined, version: undefined }; /** * Creates a basic RLN setup for codec tests */ export async function createTestRLNCodecSetup() { const rlnInstance = await createRLN(); const credential = rlnInstance.zerokit.generateIdentityCredentials(); rlnInstance.zerokit.insertMember(credential.IDCommitment); return { rlnInstance, credential, index: TEST_CONSTANTS.defaultIndex, payload: TEST_CONSTANTS.defaultPayload }; } /** * Creates a meta setter function for testing */ export function createTestMetaSetter() { return (msg) => { const buffer = new ArrayBuffer(4); const view = new DataView(buffer); view.setUint32(0, msg.payload.length, false); return new Uint8Array(buffer); }; } /** * Verifies common RLN message properties */ export function verifyRLNMessage(msg, payload, contentTopic, version, rlnInstance) { expect(msg.rateLimitProof).to.not.be.undefined; expect(msg.verify([rlnInstance.zerokit.getMerkleRoot()])).to.be.true; expect(msg.verifyNoRoot()).to.be.true; expect(msg.epoch).to.not.be.undefined; expect(msg.epoch).to.be.gt(0); expect(msg.contentTopic).to.eq(contentTopic); expect(msg.msg.version).to.eq(version); expect(msg.payload).to.deep.eq(payload); expect(msg.timestamp).to.not.be.undefined; } //# sourceMappingURL=codec.test-utils.js.map