-
Notifications
You must be signed in to change notification settings - Fork 358
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
import { expect } from "chai"; | ||
import type { BytesLike } from "ethers"; | ||
Check failure on line 2 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 2 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
|
||
import { BigNumber } from "ethers"; | ||
Check failure on line 3 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 3 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
|
||
import { ethers, network } from "hardhat"; | ||
import type { Wallet } from "zksync-web3"; | ||
import * as zksync from "zksync-web3"; | ||
Check failure on line 6 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 6 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
|
||
import type { PubdataChunkPublisher } from "../typechain"; | ||
import { PubdataChunkPublisherFactory } from "../typechain"; | ||
import { | ||
Check failure on line 9 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 9 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 9 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
|
||
TEST_L1_MESSENGER_SYSTEM_CONTRACT_ADDRESS, | ||
TEST_PUBDATA_CHUNK_PUBLISHER_ADDRESS, | ||
} from "./shared/constants"; | ||
import { encodeCalldata, getMock, prepareEnvironment, setResult } from "./shared/mocks"; | ||
Check failure on line 13 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 13 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 13 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 13 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 13 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 13 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 13 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 13 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
|
||
import { deployContractOnAddress, getWallets } from "./shared/utils"; | ||
|
||
describe("PubdataChunkPublisher tests", () => { | ||
let wallet: Wallet; | ||
Check failure on line 17 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 17 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
|
||
let l1MessengerAccount: ethers.Signer; | ||
Check failure on line 18 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 18 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
|
||
|
||
let pubdataChunkPublisher: PubdataChunkPublisher; | ||
Check failure on line 20 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
Check failure on line 20 in system-contracts/test/PubdataChunkPublisher.spec.ts GitHub Actions / lint
|
||
|
||
const genRanHex = size => [...Array(size*2)].map(() => Math.floor(Math.random() * 16).toString(16)).join(''); | ||
const blobSizeInBytes = 126_976; | ||
const maxNumberBlobs = 2; | ||
|
||
before(async () => { | ||
await prepareEnvironment(); | ||
wallet = getWallets()[0]; | ||
|
||
await deployContractOnAddress(TEST_PUBDATA_CHUNK_PUBLISHER_ADDRESS, "PubdataChunkPublisher"); | ||
pubdataChunkPublisher = PubdataChunkPublisherFactory.connect(TEST_PUBDATA_CHUNK_PUBLISHER_ADDRESS, wallet); | ||
|
||
l1MessengerAccount = await ethers.getImpersonatedSigner(TEST_L1_MESSENGER_SYSTEM_CONTRACT_ADDRESS); | ||
}); | ||
|
||
after(async () => { | ||
await network.provider.request({ | ||
method: "hardhat_stopImpersonatingAccount", | ||
params: [TEST_L1_MESSENGER_SYSTEM_CONTRACT_ADDRESS], | ||
}); | ||
}); | ||
|
||
describe("chunkAndPublishPubdata", () => { | ||
it("non-L1Messenger failed to call", async () => { | ||
await expect(pubdataChunkPublisher.chunkAndPublishPubdata("0x1337")).to.be.revertedWith( | ||
"Inappropriate caller" | ||
); | ||
}); | ||
|
||
it("Too Much Pubdata", async () => { | ||
let pubdata = '0x' + genRanHex(blobSizeInBytes * maxNumberBlobs + 1); | ||
await expect( | ||
pubdataChunkPublisher.connect(l1MessengerAccount).chunkAndPublishPubdata(pubdata) | ||
).to.be.revertedWith("pubdata should fit in 2 blobs"); | ||
}); | ||
|
||
it("Publish 1 Blob", async () => { | ||
let pubdata = '0x' + genRanHex(blobSizeInBytes); | ||
pubdataChunkPublisher.connect(l1MessengerAccount).chunkAndPublishPubdata(pubdata); | ||
}); | ||
|
||
it("Publish 2 Blobs", async () => { | ||
let pubdata = '0x' + genRanHex(blobSizeInBytes * maxNumberBlobs); | ||
pubdataChunkPublisher.connect(l1MessengerAccount).chunkAndPublishPubdata(pubdata); | ||
}); | ||
}); | ||
}); |