Skip to content

Commit

Permalink
Fix integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
danielailie committed Jan 30, 2025
1 parent ff2520e commit 206d6ca
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 69 deletions.
42 changes: 14 additions & 28 deletions src/abi/interaction.local.net.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,17 @@ describe("test smart contract interactor", function () {
});

const bytecode = await promises.readFile("src/testdata/answer.wasm");
alice.nonce = (await provider.getAccount(alice.address)).nonce;

const deployTransaction = factory.createTransactionForDeploy(alice.address, {
bytecode: bytecode,
gasLimit: 3000000n,
});
deployTransaction.nonce = BigInt(alice.nonce.valueOf());
deployTransaction.nonce = alice.getNonceThenIncrement();

deployTransaction.signature = alice.signTransaction(deployTransaction);

const contractAddress = SmartContract.computeAddress(alice.address, alice.nonce);
alice.incrementNonce();

const transactionCompletionAwaiter = new TransactionWatcher({
getTransaction: async (hash: string) => {
Expand Down Expand Up @@ -85,11 +85,9 @@ describe("test smart contract interactor", function () {
function: "getUltimateAnswer",
gasLimit: 3000000n,
});
transaction.nonce = BigInt(alice.nonce.valueOf());
transaction.nonce = alice.getNonceThenIncrement();
transaction.signature = alice.signTransaction(transaction);

alice.incrementNonce();

await provider.sendTransaction(transaction);

// Execute, and wait for execution
Expand All @@ -98,11 +96,9 @@ describe("test smart contract interactor", function () {
function: "getUltimateAnswer",
gasLimit: 3000000n,
});
transaction.nonce = BigInt(alice.nonce.valueOf());
transaction.nonce = alice.getNonceThenIncrement();
transaction.signature = alice.signTransaction(transaction);

alice.incrementNonce();

const executeTxHash = await provider.sendTransaction(transaction);
transactionOnNetwork = await transactionCompletionAwaiter.awaitCompleted(executeTxHash);
const executeResponse = queryController.parseExecute(transactionOnNetwork);
Expand All @@ -124,7 +120,7 @@ describe("test smart contract interactor", function () {
});

let network = await provider.getNetworkConfig();

alice.nonce = (await provider.getAccount(alice.address)).nonce;
// Deploy the contract
let deployTransaction = await prepareDeployment({
contract: contract,
Expand Down Expand Up @@ -266,17 +262,17 @@ describe("test smart contract interactor", function () {
const parser = new SmartContractTransactionsOutcomeParser({ abi: abiRegistry });

const bytecode = await promises.readFile("src/testdata/counter.wasm");
alice.nonce = (await provider.getAccount(alice.address)).nonce;

const deployTransaction = factory.createTransactionForDeploy(alice.address, {
bytecode: bytecode,
gasLimit: 3000000n,
});
deployTransaction.nonce = BigInt(alice.nonce.valueOf());
deployTransaction.nonce = alice.getNonceThenIncrement();

deployTransaction.signature = alice.signTransaction(deployTransaction);

const contractAddress = SmartContract.computeAddress(alice.address, alice.nonce);
alice.incrementNonce();

const transactionCompletionAwaiter = new TransactionWatcher({
getTransaction: async (hash: string) => {
Expand All @@ -300,12 +296,10 @@ describe("test smart contract interactor", function () {
function: "increment",
gasLimit: 3000000n,
});
incrementTransaction.nonce = BigInt(alice.nonce.valueOf());
incrementTransaction.nonce = alice.getNonceThenIncrement();

incrementTransaction.signature = alice.signTransaction(incrementTransaction);

alice.incrementNonce();

// Query "get()"
const query = queryController.createQuery({
contract: contractAddress,
Expand All @@ -327,11 +321,9 @@ describe("test smart contract interactor", function () {
function: "decrement",
gasLimit: 3000000n,
});
decrementTransaction.nonce = alice.nonce;
decrementTransaction.nonce = alice.getNonceThenIncrement();
decrementTransaction.signature = alice.signTransaction(decrementTransaction);

alice.incrementNonce();

await provider.sendTransaction(decrementTransaction);

decrementTransaction.nonce = alice.nonce;
Expand All @@ -347,6 +339,7 @@ describe("test smart contract interactor", function () {

let abiRegistry = await loadAbiRegistry("src/testdata/lottery-esdt.abi.json");
let parser = new SmartContractTransactionsOutcomeParser({ abi: abiRegistry });
alice.nonce = (await provider.getAccount(alice.address)).nonce;

let network = await provider.getNetworkConfig();

Expand All @@ -363,12 +356,11 @@ describe("test smart contract interactor", function () {
bytecode: bytecode,
gasLimit: 100000000n,
});
deployTransaction.nonce = alice.nonce;
deployTransaction.nonce = alice.getNonceThenIncrement();

deployTransaction.signature = alice.signTransaction(deployTransaction);

const contractAddress = SmartContract.computeAddress(alice.address, alice.nonce);
alice.incrementNonce();

const transactionCompletionAwaiter = new TransactionWatcher({
getTransaction: async (hash: string) => {
Expand All @@ -388,11 +380,9 @@ describe("test smart contract interactor", function () {
arguments: ["lucky", "EGLD", 1, null, null, 1, null, null],
gasLimit: 30000000n,
});
startTransaction.nonce = alice.nonce;
startTransaction.nonce = alice.getNonceThenIncrement();
startTransaction.signature = alice.signTransaction(startTransaction);

alice.incrementNonce();

const startTxHash = await provider.sendTransaction(startTransaction);
transactionOnNetwork = await transactionCompletionAwaiter.awaitCompleted(startTxHash);
let response = parser.parseExecute({ transactionOnNetwork });
Expand All @@ -406,11 +396,9 @@ describe("test smart contract interactor", function () {
arguments: ["lucky"],
gasLimit: 5000000n,
});
lotteryStatusTransaction.nonce = alice.nonce;
lotteryStatusTransaction.nonce = alice.getNonceThenIncrement();
lotteryStatusTransaction.signature = alice.signTransaction(lotteryStatusTransaction);

alice.incrementNonce();

const statusTxHash = await provider.sendTransaction(lotteryStatusTransaction);
transactionOnNetwork = await transactionCompletionAwaiter.awaitCompleted(statusTxHash);
response = parser.parseExecute({ transactionOnNetwork });
Expand All @@ -425,11 +413,9 @@ describe("test smart contract interactor", function () {
arguments: ["lucky"],
gasLimit: 5000000n,
});
lotteryInfoTransaction.nonce = alice.nonce;
lotteryInfoTransaction.nonce = alice.getNonceThenIncrement();
lotteryInfoTransaction.signature = alice.signTransaction(lotteryInfoTransaction);

alice.incrementNonce();

const infoTxHash = await provider.sendTransaction(lotteryInfoTransaction);
transactionOnNetwork = await transactionCompletionAwaiter.awaitCompleted(infoTxHash);
response = parser.parseExecute({ transactionOnNetwork });
Expand Down
56 changes: 23 additions & 33 deletions src/abi/smartContract.local.net.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,49 +54,49 @@ describe("test on local testnet", function () {
const factory = new SmartContractTransactionsFactory({ config: config });

const bytecode = await promises.readFile("src/testdata/counter.wasm");
alice.nonce = (await provider.getAccount(alice.address)).nonce;

const deployTransaction = factory.createTransactionForDeploy(alice.address, {
bytecode: bytecode,
gasLimit: 4000000n,
});
deployTransaction.nonce = BigInt(alice.nonce.valueOf());
deployTransaction.nonce = alice.getNonceThenIncrement();

deployTransaction.signature = alice.signTransaction(deployTransaction);

const contractAddress = SmartContract.computeAddress(alice.address, alice.nonce);
alice.incrementNonce();

const smartContractCallTransaction = factory.createTransactionForExecute(alice.address, {
contract: contractAddress,
function: "increment",
gasLimit: 4000000n,
});
smartContractCallTransaction.nonce = alice.nonce;
smartContractCallTransaction.nonce = alice.getNonceThenIncrement();
smartContractCallTransaction.signature = alice.signTransaction(smartContractCallTransaction);

alice.incrementNonce();

const simulateOne = factory.createTransactionForExecute(alice.address, {
function: "increment",
contract: contractAddress,
gasLimit: 200000n,
});

simulateOne.nonce = alice.nonce;
simulateOne.nonce = alice.getNonceThenIncrement();
simulateOne.signature = alice.signTransaction(simulateOne);

alice.incrementNonce();

const simulateTwo = factory.createTransactionForExecute(alice.address, {
function: "foobar",
contract: contractAddress,
gasLimit: 700000n,
});

simulateTwo.nonce = alice.nonce;
simulateTwo.nonce = alice.getNonceThenIncrement();
simulateTwo.signature = alice.signTransaction(simulateTwo);

alice.incrementNonce();
const simulateThree = factory.createTransactionForExecute(alice.address, {
function: "foobar",
contract: contractAddress,
gasLimit: 700000n,
});
simulateThree.nonce = alice.getNonceThenIncrement();
simulateThree.signature = alice.signTransaction(simulateThree);

// Broadcast & execute
const deployTxHash = await provider.sendTransaction(deployTransaction);
Expand Down Expand Up @@ -128,39 +128,35 @@ describe("test on local testnet", function () {
const config = new TransactionsFactoryConfig({ chainID: network.chainID });
const factory = new SmartContractTransactionsFactory({ config: config });

alice.nonce = (await provider.getAccount(alice.address)).nonce;
const bytecode = await promises.readFile("src/testdata/counter.wasm");

const deployTransaction = factory.createTransactionForDeploy(alice.address, {
bytecode: bytecode,
gasLimit: 3000000n,
});
deployTransaction.nonce = alice.nonce;
deployTransaction.nonce = alice.getNonceThenIncrement();

deployTransaction.signature = alice.signTransaction(deployTransaction);

const contractAddress = SmartContract.computeAddress(alice.address, alice.nonce);
alice.incrementNonce();

const firstScCallTransaction = factory.createTransactionForExecute(alice.address, {
contract: contractAddress,
function: "increment",
gasLimit: 3000000n,
});
firstScCallTransaction.nonce = alice.nonce;
firstScCallTransaction.nonce = alice.getNonceThenIncrement();
firstScCallTransaction.signature = alice.signTransaction(firstScCallTransaction);

alice.incrementNonce();

const secondScCallTransaction = factory.createTransactionForExecute(alice.address, {
contract: contractAddress,
function: "increment",
gasLimit: 3000000n,
});
secondScCallTransaction.nonce = alice.nonce;
secondScCallTransaction.nonce = alice.getNonceThenIncrement();
secondScCallTransaction.signature = alice.signTransaction(secondScCallTransaction);

alice.incrementNonce();

// Broadcast & execute
const deployTxHash = await provider.sendTransaction(deployTransaction);
const firstScCallHash = await provider.sendTransaction(firstScCallTransaction);
Expand Down Expand Up @@ -198,41 +194,37 @@ describe("test on local testnet", function () {
const config = new TransactionsFactoryConfig({ chainID: network.chainID });
const factory = new SmartContractTransactionsFactory({ config: config });

alice.nonce = (await provider.getAccount(alice.address)).nonce;
const bytecode = await promises.readFile("src/testdata/erc20.wasm");

const deployTransaction = factory.createTransactionForDeploy(alice.address, {
bytecode: bytecode,
gasLimit: 50000000n,
arguments: [new U32Value(10000)],
});
deployTransaction.nonce = alice.nonce;
deployTransaction.nonce = alice.getNonceThenIncrement();
deployTransaction.signature = alice.signTransaction(deployTransaction);

const contractAddress = SmartContract.computeAddress(alice.address, alice.nonce);
alice.incrementNonce();

const transactionMintBob = factory.createTransactionForExecute(alice.address, {
contract: contractAddress,
function: "transferToken",
gasLimit: 9000000n,
arguments: [new AddressValue(bob.address), new U32Value(1000)],
});
transactionMintBob.nonce = alice.nonce;
transactionMintBob.nonce = alice.getNonceThenIncrement();
transactionMintBob.signature = alice.signTransaction(transactionMintBob);

alice.incrementNonce();

const transactionMintCarol = factory.createTransactionForExecute(alice.address, {
contract: contractAddress,
function: "transferToken",
gasLimit: 9000000n,
arguments: [new AddressValue(carol.address), new U32Value(1500)],
});
transactionMintCarol.nonce = alice.nonce;
transactionMintCarol.nonce = alice.getNonceThenIncrement();
transactionMintCarol.signature = alice.signTransaction(transactionMintCarol);

alice.incrementNonce();

// Broadcast & execute
const deployTxHash = await provider.sendTransaction(deployTransaction);
const mintBobTxHash = await provider.sendTransaction(transactionMintBob);
Expand Down Expand Up @@ -289,6 +281,7 @@ describe("test on local testnet", function () {
TransactionWatcher.DefaultTimeout = 50000;

let network = await provider.getNetworkConfig();
alice.nonce = (await provider.getAccount(alice.address)).nonce;

const config = new TransactionsFactoryConfig({ chainID: network.chainID });
const factory = new SmartContractTransactionsFactory({ config: config });
Expand All @@ -299,12 +292,11 @@ describe("test on local testnet", function () {
bytecode: bytecode,
gasLimit: 50000000n,
});
deployTransaction.nonce = alice.nonce;
deployTransaction.nonce = alice.getNonceThenIncrement();

deployTransaction.signature = alice.signTransaction(deployTransaction);

const contractAddress = SmartContract.computeAddress(alice.address, alice.nonce);
alice.incrementNonce();

const startTransaction = factory.createTransactionForExecute(alice.address, {
contract: contractAddress,
Expand All @@ -322,11 +314,9 @@ describe("test on local testnet", function () {
OptionalValue.newMissing(),
],
});
startTransaction.nonce = alice.nonce;
startTransaction.nonce = alice.getNonceThenIncrement();
startTransaction.signature = alice.signTransaction(startTransaction);

alice.incrementNonce();

// Broadcast & execute
const deployTx = await provider.sendTransaction(deployTransaction);
const startTx = await provider.sendTransaction(startTransaction);
Expand Down
Loading

0 comments on commit 206d6ca

Please sign in to comment.