ci: serialize terra2 tests

This commit is contained in:
Evan Gray 2022-11-08 23:40:54 +00:00 committed by Evan Gray
parent 6c6bf5e522
commit d4f9d3f8b2
1 changed files with 140 additions and 138 deletions

View File

@ -1,4 +1,4 @@
import { beforeAll, afterAll, expect, test } from "@jest/globals"; import { beforeAll, afterAll, describe, expect, test } from "@jest/globals";
import { import {
isTxError, isTxError,
LCDClient, LCDClient,
@ -128,151 +128,153 @@ const ethParseLogAndGetSignedVaa = async (receipt: ethers.ContractReceipt) => {
); );
}; };
test("Attest and transfer token from Terra2 to Ethereum", async () => { describe("Terra Integration Tests", () => {
// Attest test("Attest and transfer token from Terra2 to Ethereum", async () => {
const attestMsg = await attestFromTerra( // Attest
CONTRACTS.DEVNET.terra2.token_bridge, const attestMsg = await attestFromTerra(
terraWalletAddress, CONTRACTS.DEVNET.terra2.token_bridge,
"uluna" terraWalletAddress,
); "uluna"
const attestSignedVaa = await terraBroadcastTxAndGetSignedVaa( );
[attestMsg], const attestSignedVaa = await terraBroadcastTxAndGetSignedVaa(
terraWallet [attestMsg],
); terraWallet
try { );
await createWrappedOnEth( try {
await createWrappedOnEth(
CONTRACTS.DEVNET.ethereum.token_bridge,
signer,
attestSignedVaa
);
} catch {
await updateWrappedOnEth(
CONTRACTS.DEVNET.ethereum.token_bridge,
signer,
attestSignedVaa
);
}
// Transfer
const transferMsgs = await transferFromTerra(
terraWalletAddress,
CONTRACTS.DEVNET.terra2.token_bridge,
"uluna",
"1000000",
CHAIN_ID_ETH,
tryNativeToUint8Array(ethWalletAddress, CHAIN_ID_ETH)
);
const transferSignedVaa = await terraBroadcastTxAndGetSignedVaa(
transferMsgs,
terraWallet
);
await redeemOnEth(
CONTRACTS.DEVNET.ethereum.token_bridge, CONTRACTS.DEVNET.ethereum.token_bridge,
signer, signer,
attestSignedVaa transferSignedVaa
); );
} catch { });
await updateWrappedOnEth(
test("Attest and transfer token from Ethereum to Terra2", async () => {
// Attest
const attestReceipt = await attestFromEth(
CONTRACTS.DEVNET.ethereum.token_bridge, CONTRACTS.DEVNET.ethereum.token_bridge,
signer, signer,
TEST_ERC20
);
const attestSignedVaa = await ethParseLogAndGetSignedVaa(attestReceipt);
const createWrappedMsg = await createWrappedOnTerra(
CONTRACTS.DEVNET.terra2.token_bridge,
terraWalletAddress,
attestSignedVaa attestSignedVaa
); );
} await terraBroadcastAndWaitForExecution([createWrappedMsg], terraWallet);
// Transfer // Transfer
const transferMsgs = await transferFromTerra( await approveEth(
terraWalletAddress, CONTRACTS.DEVNET.ethereum.token_bridge,
CONTRACTS.DEVNET.terra2.token_bridge, TEST_ERC20,
"uluna", signer,
"1000000", ethTransferAmount
CHAIN_ID_ETH, );
tryNativeToUint8Array(ethWalletAddress, CHAIN_ID_ETH) const transferReceipt = await transferFromEth(
); CONTRACTS.DEVNET.ethereum.token_bridge,
const transferSignedVaa = await terraBroadcastTxAndGetSignedVaa( signer,
transferMsgs, TEST_ERC20,
terraWallet ethTransferAmount,
); CHAIN_ID_TERRA2,
await redeemOnEth( tryNativeToUint8Array(terraWalletAddress, CHAIN_ID_TERRA2)
CONTRACTS.DEVNET.ethereum.token_bridge, );
signer, const transferSignedVaa = await ethParseLogAndGetSignedVaa(transferReceipt);
transferSignedVaa const redeemMsg = await redeemOnTerra(
);
});
test("Attest and transfer token from Ethereum to Terra2", async () => {
// Attest
const attestReceipt = await attestFromEth(
CONTRACTS.DEVNET.ethereum.token_bridge,
signer,
TEST_ERC20
);
const attestSignedVaa = await ethParseLogAndGetSignedVaa(attestReceipt);
const createWrappedMsg = await createWrappedOnTerra(
CONTRACTS.DEVNET.terra2.token_bridge,
terraWalletAddress,
attestSignedVaa
);
await terraBroadcastAndWaitForExecution([createWrappedMsg], terraWallet);
// Transfer
await approveEth(
CONTRACTS.DEVNET.ethereum.token_bridge,
TEST_ERC20,
signer,
ethTransferAmount
);
const transferReceipt = await transferFromEth(
CONTRACTS.DEVNET.ethereum.token_bridge,
signer,
TEST_ERC20,
ethTransferAmount,
CHAIN_ID_TERRA2,
tryNativeToUint8Array(terraWalletAddress, CHAIN_ID_TERRA2)
);
const transferSignedVaa = await ethParseLogAndGetSignedVaa(transferReceipt);
const redeemMsg = await redeemOnTerra(
CONTRACTS.DEVNET.terra2.token_bridge,
terraWalletAddress,
transferSignedVaa
);
expect(
await getIsTransferCompletedTerra2(
CONTRACTS.DEVNET.terra2.token_bridge, CONTRACTS.DEVNET.terra2.token_bridge,
transferSignedVaa, terraWalletAddress,
lcd, transferSignedVaa
) );
).toBe(false); expect(
await terraBroadcastAndWaitForExecution([redeemMsg], terraWallet); await getIsTransferCompletedTerra2(
expect( CONTRACTS.DEVNET.terra2.token_bridge,
await getIsTransferCompletedTerra2( transferSignedVaa,
CONTRACTS.DEVNET.terra2.token_bridge, lcd
transferSignedVaa, )
lcd, ).toBe(false);
) await terraBroadcastAndWaitForExecution([redeemMsg], terraWallet);
).toBe(true); expect(
}); await getIsTransferCompletedTerra2(
CONTRACTS.DEVNET.terra2.token_bridge,
transferSignedVaa,
lcd
)
).toBe(true);
});
test("Attest and transfer Terra2 native token to Terra Classic", async () => { test("Attest and transfer Terra2 native token to Terra Classic", async () => {
const attestMsg = await attestFromTerra( const attestMsg = await attestFromTerra(
CONTRACTS.DEVNET.terra2.token_bridge, CONTRACTS.DEVNET.terra2.token_bridge,
terraWalletAddress, terraWalletAddress,
"uluna" "uluna"
); );
const attestSignedVaa = await terraBroadcastTxAndGetSignedVaa( const attestSignedVaa = await terraBroadcastTxAndGetSignedVaa(
[attestMsg], [attestMsg],
terraWallet terraWallet
); );
const createWrappedMsg = await createWrappedOnTerra( const createWrappedMsg = await createWrappedOnTerra(
CONTRACTS.DEVNET.terra.token_bridge,
terraClassicWalletAddress,
attestSignedVaa
);
await terraBroadcastAndWaitForExecution(
[createWrappedMsg],
terraClassicWallet,
true
);
// Transfer
const transferMsgs = await transferFromTerra(
terraWalletAddress,
CONTRACTS.DEVNET.terra2.token_bridge,
"uluna",
"1000000",
CHAIN_ID_TERRA,
tryNativeToUint8Array(terraClassicWalletAddress, CHAIN_ID_TERRA)
);
const transferSignedVaa = await terraBroadcastTxAndGetSignedVaa(
transferMsgs,
terraWallet
);
const redeemMsg = await redeemOnTerra(
CONTRACTS.DEVNET.terra.token_bridge,
terraClassicWalletAddress,
transferSignedVaa
);
await terraBroadcastAndWaitForExecution(
[redeemMsg],
terraClassicWallet,
true
);
expect(
await getIsTransferCompletedTerra(
CONTRACTS.DEVNET.terra.token_bridge, CONTRACTS.DEVNET.terra.token_bridge,
transferSignedVaa, terraClassicWalletAddress,
lcdClassic, attestSignedVaa
TERRA_GAS_PRICES_URL );
) await terraBroadcastAndWaitForExecution(
).toBe(true); [createWrappedMsg],
terraClassicWallet,
true
);
// Transfer
const transferMsgs = await transferFromTerra(
terraWalletAddress,
CONTRACTS.DEVNET.terra2.token_bridge,
"uluna",
"1000000",
CHAIN_ID_TERRA,
tryNativeToUint8Array(terraClassicWalletAddress, CHAIN_ID_TERRA)
);
const transferSignedVaa = await terraBroadcastTxAndGetSignedVaa(
transferMsgs,
terraWallet
);
const redeemMsg = await redeemOnTerra(
CONTRACTS.DEVNET.terra.token_bridge,
terraClassicWalletAddress,
transferSignedVaa
);
await terraBroadcastAndWaitForExecution(
[redeemMsg],
terraClassicWallet,
true
);
expect(
await getIsTransferCompletedTerra(
CONTRACTS.DEVNET.terra.token_bridge,
transferSignedVaa,
lcdClassic,
TERRA_GAS_PRICES_URL
)
).toBe(true);
});
}); });