@safe-global/safe-contracts
Version:
Ethereum multisig contract
41 lines (34 loc) • 1.59 kB
text/typescript
import { expect } from "chai";
import hre, { deployments, waffle } from "hardhat";
import "@nomiclabs/hardhat-ethers";
import { AddressZero } from "@ethersproject/constants";
import { getSafeTemplate } from "../utils/setup";
describe("HandlerContext", async () => {
const [user1, user2] = waffle.provider.getWallets();
const setup = deployments.createFixture(async ({ deployments }) => {
await deployments.fixture();
const TestHandler = await hre.ethers.getContractFactory("TestHandler");
const handler = await TestHandler.deploy();
return {
safe: await getSafeTemplate(),
handler,
};
});
it("parses information correctly", async () => {
const { handler } = await setup();
const response = await user1.call({
to: handler.address,
data: handler.interface.encodeFunctionData("dudududu") + user2.address.slice(2),
});
expect(handler.interface.decodeFunctionResult("dudududu", response)).to.be.deep.eq([user2.address, user1.address]);
});
it("works with the Safe", async () => {
const { safe, handler } = await setup();
await safe.setup([user1.address, user2.address], 1, AddressZero, "0x", handler.address, AddressZero, 0, AddressZero);
const response = await user1.call({
to: safe.address,
data: handler.interface.encodeFunctionData("dudududu"),
});
expect(handler.interface.decodeFunctionResult("dudududu", response)).to.be.deep.eq([user1.address, safe.address]);
});
});