forked from DecentralizedClimateFoundation/DCIPs
44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
// @format
|
|
import test from "ava";
|
|
|
|
import { Wallet, utils } from "ethers";
|
|
|
|
import { generateSignature } from "../src/index.mjs";
|
|
|
|
test("generating a compact signature for function give", async (t) => {
|
|
// from: https://docs.ethers.io/v5/api/signer/#Wallet--methods
|
|
const passiveAddress = "0x0f6A79A579658E401E0B81c6dde1F2cd51d97176";
|
|
const passivePrivateKey =
|
|
"0xad54bdeade5537fb0a553190159783e45d02d316a992db05cbed606d3ca36b39";
|
|
const signer = new Wallet(passivePrivateKey);
|
|
t.is(signer.address, passiveAddress);
|
|
|
|
const types = {
|
|
Agreement: [
|
|
{ name: "active", type: "address" },
|
|
{ name: "passive", type: "address" },
|
|
{ name: "metadata", type: "bytes" },
|
|
],
|
|
};
|
|
const domain = {
|
|
name: "Name",
|
|
version: "Version",
|
|
chainId: 31337, // the chainId of foundry
|
|
verifyingContract: "0xce71065d4017f316ec606fe4422e11eb2c47c246",
|
|
};
|
|
|
|
const agreement = {
|
|
active: "0xb4c79dab8f259c7aee6e5b2aa729821864227e84",
|
|
passive: passiveAddress,
|
|
metadata: utils.toUtf8Bytes("https://example.com/metadata.json"),
|
|
};
|
|
|
|
const signature = await generateSignature(signer, types, domain, agreement);
|
|
t.truthy(signature);
|
|
t.is(signature.length, 64 + 64 + 2 + 2);
|
|
t.is(
|
|
signature,
|
|
"0x4473afdec84287f10aa0b5eb608d360e2e9220bee657a4a5ca468e69a4de255c38691fca0c52f295d1831beaa0b7f079c1ab7959257578d2fb8d98740d9b0e111c"
|
|
);
|
|
});
|