Skip to content
This repository has been archived by the owner on Jun 20, 2024. It is now read-only.

Commit

Permalink
feat(camp 4): faster hardhat tests
Browse files Browse the repository at this point in the history
  • Loading branch information
0xLucqs committed Jun 15, 2022
1 parent 3e86813 commit d216d65
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 235 deletions.
193 changes: 0 additions & 193 deletions camp_4/buidl/contracts/contract.cairo

This file was deleted.

4 changes: 2 additions & 2 deletions camp_4/buidl/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"clean": "rm -rf starknet-artifacts",
"compile": "npx hardhat starknet-compile",
"compile-debug": "npx hardhat starknet-compile --disable-hint-validation",
"devnet": "starknet-devnet 2> /dev/null &",
"devnet": "starknet-devnet --lite-mode --seed 1 2> /dev/null &",
"kawaii": "cairo-format -i contracts/*.cairo",
"lint": "eslint --fix --ext .ts .",
"prettier": "prettier --write .",
Expand Down Expand Up @@ -42,4 +42,4 @@
"engines": {
"node": ">=14.0.0"
}
}
}
123 changes: 83 additions & 40 deletions camp_4/buidl/test/test.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,35 @@ describe("Multisig", async function () {
let erc20Contract: StarknetContract;

before(async () => {
account1 = await starknet.deployAccount("OpenZeppelin");
account2 = await starknet.deployAccount("OpenZeppelin");
account3 = await starknet.deployAccount("OpenZeppelin");
account4 = await starknet.deployAccount("OpenZeppelin");
account5 = await starknet.deployAccount("OpenZeppelin");

multisigContractFactory = await starknet.getContractFactory("contract");
account1 = await starknet.getAccountFromAddress(
"0x2109334107efc348a86e72fc3c313061c599e359d46d7b2cd48d22415585b24",
"0xcd613e30d8f16adf91b7584a2265b1f5",
"OpenZeppelin"
);
account2 = await starknet.getAccountFromAddress(
"0x7a578ffc71480273c4283a007ead8ae92c1242b02e652d93a4afc0da11ee0b4",
"0x1e2feb89414c343c1027c4d1c386bbc4",
"OpenZeppelin"
);
account3 = await starknet.getAccountFromAddress(
"0x6e6320bd27219d0889092987d6d630b78781d118a7b25ab36bbe4de7d984dee",
"0x78e510617311d8a3c2ce6f447ed4d57b",
"OpenZeppelin"
);
account4 = await starknet.getAccountFromAddress(
"0x2e6011ebab72e33eb75881f969584491fde2240b709ed02cefef9fcb9f9f150",
"0x35bf992dc9e9c616612e7696a6cecc1b",
"OpenZeppelin"
);
account5 = await starknet.getAccountFromAddress(
"0x5b74e49305fa73170b68e09e4ed329b56bd2bfee3d66ea45fbf1eaa13e590cf",
"0xe4b06ce60741c7a87ce42c8218072e8c",
"OpenZeppelin"
);

multisigContractFactory = await starknet.getContractFactory(
"contract_final"
);
multisigContract = await multisigContractFactory.deploy({
_signers: [
account1.starknetContract.address,
Expand Down Expand Up @@ -60,35 +82,41 @@ describe("Multisig", async function () {
to_: BigInt(account1.starknetContract.address),
targetERC20: BigInt(erc20Contract.address),
});
// const prop = await multisigContract.call("view_proposal", {
// proposal_nb: UINT_0,
// });
// const expectedProp = {
// amount: AMOUNT,
// to_: BigInt(account1.starknetContract.address),
// executed: BigInt(0),
// numberOfSigners: { low: BigInt(1), high: BigInt(0) },
// targetERC20: BigInt(erc20Contract.address),
// timestamp: BigInt(0),
// };

// expect(prop.proposal).to.be.deep.eq(expectedProp);

// const newCounter = await multisigContract.call("view_counter");
// expect(newCounter.res).to.deep.eq(AMOUNT);
const prop = await multisigContract.call("view_proposal", {
proposal_nb: UINT_0,
});
const expectedProp = {
amount: AMOUNT,
to_: BigInt(account1.starknetContract.address),
executed: BigInt(0),
numberOfSigners: { low: BigInt(1), high: BigInt(0) },
targetERC20: BigInt(erc20Contract.address),
timestamp: BigInt(0),
};

expect(prop.proposal.amount).to.be.deep.eq(expectedProp.amount);
expect(prop.proposal.to_).to.be.deep.eq(expectedProp.to_);
expect(prop.proposal.executed).to.be.deep.eq(expectedProp.executed);
expect(prop.proposal.numberOfSigners).to.be.deep.eq(
expectedProp.numberOfSigners
);
expect(prop.proposal.targetERC20).to.be.deep.eq(expectedProp.targetERC20);

const newCounter = await multisigContract.call("view_counter");
expect(newCounter.res).to.deep.eq(AMOUNT);
});

it("random tries to create a proposal, should fail", async () => {
account5
const error = await account5
.invoke(multisigContract, "create_proposal", {
amount: AMOUNT,
to_: BigInt(account1.starknetContract.address),
targetERC20: BigInt(erc20Contract.address),
})
.catch(async (e) => {
await expect(e.message.includes("Error message: Only signer")).to.be
.true;
return e.message;
});
expect(error).to.include("Error message: Only signer");
});
});

Expand Down Expand Up @@ -125,33 +153,44 @@ describe("Multisig", async function () {
});

it("Signer signs proposal again shouldn't work", async () => {
await account1
const error = await account1
.invoke(multisigContract, "sign_proposal", { proposal_nb: UINT_0 })
.catch((e) => {
e.message.includes("Error message: Sender has already signed");
return e.message;
});
expect(error).to.include("Error message: Sender has already signed");
});

it("random tries to sign a proposal, should fail", async () => {
account5.invoke(multisigContract, "sign_proposal", UINT_0).catch((e) => {
e.message.includes("Error message: Only signer");
});
const error = await account5
.invoke(multisigContract, "sign_proposal", { proposal_nb: UINT_0 })
.catch((e) => {
return e.message;
});
console.log(error);
expect(error).to.include("Error message: Only signer");
});

it("random tries to sign an unknown proposal, should fail", async () => {
account5
.invoke(multisigContract, "sign_proposal", { low: 1, high: 0 })
const error = await account5
.invoke(multisigContract, "sign_proposal", {
proposal_nb: { low: 1, high: 0 },
})
.catch((e) => {
e.message.includes("Error message: Only signer");
return e.message;
});
expect(error).to.include("Error message: Only signer");
});

it("signer tries to sign an unknown proposal, should fail", async () => {
account1
.invoke(multisigContract, "sign_proposal", { low: 1, high: 0 })
const error = await account1
.invoke(multisigContract, "sign_proposal", {
proposal_nb: { low: 1, high: 0 },
})
.catch((e) => {
e.message.includes("Error message: Only signer");
return e.message;
});
expect(error).to.include("Error message: Proposal doesn't exist");
});

it("Signer signs and executes a proposal, should work", async () => {
Expand Down Expand Up @@ -200,11 +239,15 @@ describe("Multisig", async function () {
});

it("signer tries to an already executed proposal, should fail", async () => {
account1
.invoke(multisigContract, "sign_proposal", { low: 1, high: 0 })
const error = await account4
.invoke(multisigContract, "sign_proposal", {
proposal_nb: UINT_0,
})
.catch((e) => {
e.message.includes("Error message: Proposal already executed");
return e.message;
});
console.log(error);
expect(error).to.include("Error message: Proposal already executed");
});
});
});

0 comments on commit d216d65

Please sign in to comment.