Skip to content

Commit fb986d3

Browse files
committed
add integration test
1 parent 2f9cd18 commit fb986d3

3 files changed

Lines changed: 101 additions & 11 deletions

File tree

integration_tests/cosmoscli.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1404,3 +1404,29 @@ def query_grant(self, granter, grantee):
14041404
home=self.data_dir,
14051405
)
14061406
)
1407+
1408+
def query_batches(self):
1409+
"query all gravity batches"
1410+
return json.loads(
1411+
self.raw(
1412+
"query",
1413+
"gravity",
1414+
"batch-txs",
1415+
home=self.data_dir,
1416+
)
1417+
)
1418+
1419+
def turn_bridge(self, enable, **kwargs):
1420+
kwargs.setdefault("gas_prices", DEFAULT_GAS_PRICE)
1421+
kwargs.setdefault("gas", DEFAULT_GAS)
1422+
return json.loads(
1423+
self.raw(
1424+
"tx",
1425+
"cronos",
1426+
"turn-bridge",
1427+
enable,
1428+
"-y",
1429+
home=self.data_dir,
1430+
**kwargs,
1431+
)
1432+
)

integration_tests/test_gravity.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,3 +795,74 @@ def check():
795795
gravity.contract.functions.redeemVoucher(
796796
old_nonce, ADDRS["signer2"]
797797
).build_transaction({"from": ADDRS["signer1"]})
798+
799+
800+
def test_gravity_turn_bridge(gravity):
801+
geth = gravity.geth
802+
cli = gravity.cronos.cosmos_cli()
803+
cronos_w3 = gravity.cronos.w3
804+
805+
# deploy test erc20 contract
806+
erc20 = deploy_contract(
807+
geth,
808+
CONTRACTS["TestERC20A"],
809+
)
810+
811+
balance = erc20.caller.balanceOf(ADDRS["validator"])
812+
assert balance == 100000000000000000000000000
813+
amount = 1000
814+
815+
print("send to cronos crc20")
816+
recipient = HexBytes(ADDRS["community"])
817+
txreceipt = send_to_cosmos(
818+
gravity.contract, erc20, geth, recipient, amount, KEYS["validator"]
819+
)
820+
assert txreceipt.status == 1, "should success"
821+
assert erc20.caller.balanceOf(ADDRS["validator"]) == balance - amount
822+
823+
denom = f"gravity{erc20.address}"
824+
825+
def check_gravity_native_tokens():
826+
"check the balance of gravity native token"
827+
return cli.balance(eth_to_bech32(recipient), denom=denom) == amount
828+
829+
if gravity.cronos.enable_auto_deployment:
830+
crc21_contract = None
831+
832+
def local_check_auto_deployment():
833+
nonlocal crc21_contract
834+
crc21_contract = check_auto_deployment(
835+
cli, denom, cronos_w3, recipient, amount
836+
)
837+
return crc21_contract
838+
839+
wait_for_fn("send-to-crc21", local_check_auto_deployment)
840+
else:
841+
wait_for_fn("send-to-gravity-native", check_gravity_native_tokens)
842+
843+
# turn off bridge
844+
rsp = cli.turn_bridge("false", from_="community")
845+
assert rsp["code"] != 0, "should not have the permission"
846+
847+
rsp = cli.turn_bridge("false", from_="validator")
848+
assert rsp["code"] == 0, rsp["raw_log"]
849+
wait_for_new_blocks(cli, 1)
850+
851+
if gravity.cronos.enable_auto_deployment:
852+
# send it back to erc20, should fail
853+
tx = crc21_contract.functions.send_to_evm_chain(
854+
ADDRS["validator"], amount, 1, 0, b""
855+
).build_transaction({"from": ADDRS["community"]})
856+
txreceipt = send_transaction(cronos_w3, tx, KEYS["community"])
857+
assert txreceipt.status == 0, "should fail"
858+
else:
859+
# send back the gravity native tokens, should fail
860+
rsp = cli.send_to_ethereum(
861+
ADDRS["validator"], f"{amount}{denom}", f"0{denom}", from_="community"
862+
)
863+
assert rsp["code"] == 3, rsp["raw_log"]
864+
865+
wait_for_new_blocks(cli, 10)
866+
# check no new batch is created
867+
rsp = cli.query_batches()
868+
assert len(rsp["batches"]) == 0

x/cronos/client/cli/tx.go

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cli
22

33
import (
44
"fmt"
5+
"strconv"
56
"strings"
67

78
"github.com/cosmos/cosmos-sdk/client/flags"
@@ -251,28 +252,22 @@ func CmdUpdateTokenMapping() *cobra.Command {
251252
return cmd
252253
}
253254

254-
// FlagEnable TurnBridgeCmd flags
255-
const (
256-
FlagEnable = "enable"
257-
)
258-
259255
// CmdTurnBridge returns a CLI command handler for enable or disable the bridge
260256
func CmdTurnBridge() *cobra.Command {
261257
cmd := &cobra.Command{
262-
Use: "turn-bridge",
258+
Use: "turn-bridge [true/false]",
263259
Short: "Turn Bridge",
264-
Args: cobra.ExactArgs(0),
260+
Args: cobra.ExactArgs(1),
265261
RunE: func(cmd *cobra.Command, args []string) error {
266262
clientCtx, err := client.GetClientTxContext(cmd)
267263
if err != nil {
268264
return err
269265
}
270266

271-
enable, err := cmd.Flags().GetBool(FlagEnable)
267+
enable, err := strconv.ParseBool(args[0])
272268
if err != nil {
273269
return err
274270
}
275-
276271
msg := types.NewMsgTurnBridge(clientCtx.GetFromAddress().String(), enable)
277272
if err := msg.ValidateBasic(); err != nil {
278273
return err
@@ -282,7 +277,5 @@ func CmdTurnBridge() *cobra.Command {
282277
}
283278

284279
flags.AddTxFlagsToCmd(cmd)
285-
cmd.Flags().Bool(FlagEnable, true, "")
286-
287280
return cmd
288281
}

0 commit comments

Comments
 (0)