807 lines
23 KiB
Go
807 lines
23 KiB
Go
// Copyright (c) BlockVision, Inc. All rights reserved.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package sui
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"github.com/block-vision/sui-go-sdk/constant"
|
|
"github.com/block-vision/sui-go-sdk/models"
|
|
"github.com/block-vision/sui-go-sdk/utils"
|
|
"testing"
|
|
)
|
|
|
|
var ctx = context.Background()
|
|
var cli = NewSuiClient(constant.BvTestnetEndpoint)
|
|
|
|
func TestOnReadSystemFromSui(t *testing.T) {
|
|
t.Run("test on sui_getCheckpoint", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetCheckpoint(ctx, models.SuiGetCheckpointRequest{
|
|
CheckpointID: "1628214",
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on sui_getCheckpoints", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetCheckpoints(ctx, models.SuiGetCheckpointsRequest{
|
|
Limit: 5,
|
|
DescendingOrder: true,
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
for _, checkpoint := range rsp.Data {
|
|
utils.PrettyPrint(checkpoint)
|
|
}
|
|
})
|
|
|
|
t.Run("test on sui_getLatestCheckpointSequenceNumber", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetLatestCheckpointSequenceNumber(ctx)
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getReferenceGasPrice", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetReferenceGasPrice(ctx)
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getCommitteeInfo", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetCommitteeInfo(ctx, models.SuiXGetCommitteeInfoRequest{
|
|
Epoch: "754",
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getReferenceGasPrice", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetReferenceGasPrice(ctx)
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getStakes", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetStakes(ctx, models.SuiXGetStakesRequest{
|
|
Owner: "0xe335d84c489084474aac4322fb9ac5173369d27487c404558e99c7c5ec608075",
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getStakesByIds", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetStakesByIds(ctx, models.SuiXGetStakesByIdsRequest{
|
|
StakedSuiIds: []string{"0x9898fae07add84f032eb109ffc548d4afae7c78cb9b0836aed674e7aec55df19"},
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getLatestSuiSystemState", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetLatestSuiSystemState(ctx)
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
}
|
|
|
|
func TestOnReadCoinFromSui(t *testing.T) {
|
|
|
|
t.Run("test on suix_getBalance", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetBalance(ctx, models.SuiXGetBalanceRequest{
|
|
Owner: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
CoinType: "0x2::sui::SUI",
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getAllBalances", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetAllBalance(ctx, models.SuiXGetAllBalanceRequest{
|
|
Owner: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getCoins", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetCoins(ctx, models.SuiXGetCoinsRequest{
|
|
Owner: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
CoinType: "0x2::sui::SUI",
|
|
Limit: 5,
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getAllCoins", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetAllCoins(ctx, models.SuiXGetAllCoinsRequest{
|
|
Owner: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
Limit: 5,
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getCoinMetadata", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetCoinMetadata(ctx, models.SuiXGetCoinMetadataRequest{
|
|
CoinType: "0xf7a0b8cc24808220226301e102dae27464ea46e0d74bb968828318b9e3a921fa::busd::BUSD",
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getCoinMetadata", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetTotalSupply(ctx, models.SuiXGetTotalSupplyRequest{
|
|
CoinType: "0x3d5ef021274cdc194009ea17e8018ac00ff63843d34dd0fdb57e2696a2020293::polat::POLAT",
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
}
|
|
|
|
func TestOnReadTransactionFromSui(t *testing.T) {
|
|
|
|
t.Run("test on sui_getTotalTransactionBlocks", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetTotalTransactionBlocks(ctx)
|
|
|
|
if err != nil {
|
|
fmt.Println()
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on sui_getTransactionBlock", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetTransactionBlock(ctx, models.SuiGetTransactionBlockRequest{
|
|
Digest: "CeVpDXKKU3Gs89efej9pKiYYQyTzifE2BDxWwquUaUht",
|
|
Options: models.SuiTransactionBlockOptions{
|
|
ShowInput: true,
|
|
ShowRawInput: true,
|
|
ShowEffects: true,
|
|
ShowEvents: true,
|
|
},
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on sui_multiGetTransactionBlocks", func(t *testing.T) {
|
|
rsp, err := cli.SuiMultiGetTransactionBlocks(ctx, models.SuiMultiGetTransactionBlocksRequest{
|
|
Digests: []string{"CeVpDXKKU3Gs89efej9pKiYYQyTzifE2BDxWwquUaUht", "C2zZu2dpX2sLQy2234yt6ecRiNTVgQTXeQpgw9GhxGgo"},
|
|
Options: models.SuiTransactionBlockOptions{
|
|
ShowInput: true,
|
|
ShowRawInput: true,
|
|
ShowEffects: true,
|
|
},
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
t.FailNow()
|
|
}
|
|
|
|
for _, transactionBlock := range rsp {
|
|
utils.PrettyPrint(*transactionBlock)
|
|
}
|
|
})
|
|
|
|
t.Run("test on suix_queryTransactionBlocks", func(t *testing.T) {
|
|
rsp, err := cli.SuiXQueryTransactionBlocks(ctx, models.SuiXQueryTransactionBlocksRequest{
|
|
SuiTransactionBlockResponseQuery: models.SuiTransactionBlockResponseQuery{
|
|
TransactionFilter: models.TransactionFilter{
|
|
"FromAddress": "0x7d20dcdb2bca4f508ea9613994683eb4e76e9c4ed371169677c1be02aaf0b58e",
|
|
},
|
|
Options: models.SuiTransactionBlockOptions{
|
|
ShowInput: true,
|
|
ShowRawInput: true,
|
|
ShowEffects: true,
|
|
},
|
|
},
|
|
Limit: 5,
|
|
DescendingOrder: false,
|
|
})
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
t.FailNow()
|
|
}
|
|
|
|
for _, transactionBlock := range rsp.Data {
|
|
utils.PrettyPrint(transactionBlock)
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestOnReadObjectFromSui(t *testing.T) {
|
|
t.Run("test on sui_getObject", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetObject(ctx, models.SuiGetObjectRequest{
|
|
ObjectId: "0xeeb964d1e640219c8ddb791cc8548f3242a3392b143ff47484a3753291cad898",
|
|
Options: models.SuiObjectDataOptions{
|
|
ShowContent: true,
|
|
ShowDisplay: true,
|
|
ShowType: true,
|
|
ShowBcs: true,
|
|
ShowOwner: true,
|
|
ShowPreviousTransaction: true,
|
|
ShowStorageRebate: true,
|
|
},
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on suix_getOwnedObjects", func(t *testing.T) {
|
|
suiObjectResponseQuery := models.SuiObjectResponseQuery{
|
|
Options: models.SuiObjectDataOptions{
|
|
ShowType: true,
|
|
ShowContent: true,
|
|
ShowBcs: true,
|
|
ShowOwner: true,
|
|
ShowPreviousTransaction: true,
|
|
ShowStorageRebate: true,
|
|
ShowDisplay: true,
|
|
},
|
|
}
|
|
|
|
rsp, err := cli.SuiXGetOwnedObjects(ctx, models.SuiXGetOwnedObjectsRequest{
|
|
Address: "0x00432a757bb5d93b2c88936e63692b24baed581090fc0d9a8ffb7e8b633d7ad8",
|
|
Query: suiObjectResponseQuery,
|
|
Limit: 5,
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on sui_multiGetObjects", func(t *testing.T) {
|
|
rsp, err := cli.SuiMultiGetObjects(ctx, models.SuiMultiGetObjectsRequest{
|
|
ObjectIds: []string{"0xeeb964d1e640219c8ddb791cc8548f3242a3392b143ff47484a3753291cad898"},
|
|
Options: models.SuiObjectDataOptions{
|
|
ShowContent: true,
|
|
ShowDisplay: true,
|
|
ShowType: true,
|
|
ShowBcs: true,
|
|
ShowOwner: true,
|
|
ShowPreviousTransaction: true,
|
|
ShowStorageRebate: true,
|
|
},
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
|
|
})
|
|
|
|
t.Run("test on suix_getDynamicFields", func(t *testing.T) {
|
|
rsp, err := cli.SuiXGetDynamicField(ctx, models.SuiXGetDynamicFieldRequest{
|
|
ObjectId: "0xeeb964d1e640219c8ddb791cc8548f3242a3392b143ff47484a3753291cad898",
|
|
Limit: 5,
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
|
|
})
|
|
|
|
t.Run("test on sui_tryGetPastObject", func(t *testing.T) {
|
|
rsp, err := cli.SuiTryGetPastObject(ctx, models.SuiTryGetPastObjectRequest{
|
|
ObjectId: "0xeeb964d1e640219c8ddb791cc8548f3242a3392b143ff47484a3753291cad898",
|
|
Version: 9636,
|
|
Options: models.SuiObjectDataOptions{
|
|
ShowContent: true,
|
|
ShowDisplay: true,
|
|
ShowType: true,
|
|
ShowBcs: true,
|
|
ShowOwner: true,
|
|
ShowPreviousTransaction: true,
|
|
ShowStorageRebate: true,
|
|
},
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
|
|
})
|
|
}
|
|
|
|
func TestOnReadEventFromSui(t *testing.T) {
|
|
|
|
t.Run("test on sui_getEvents", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetEvents(ctx, models.SuiGetEventsRequest{
|
|
Digest: "HATq5p7MNynkBL5bLsdVqL3K38PxWHbqs7vndGiz5qrA",
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
for _, event := range rsp {
|
|
utils.PrettyPrint(*event)
|
|
}
|
|
})
|
|
|
|
t.Run("test on suix_queryEvents", func(t *testing.T) {
|
|
rsp, err := cli.SuiXQueryEvents(ctx, models.SuiXQueryEventsRequest{
|
|
SuiEventFilter: models.EventFilterByMoveEventType{
|
|
MoveEventType: "0x3::validator::StakingRequestEvent",
|
|
},
|
|
Limit: 5,
|
|
DescendingOrder: false,
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
}
|
|
|
|
func TestOnWriteTransactionToSui(t *testing.T) {
|
|
|
|
t.Run("test on sui_executeTransactionBlock", func(t *testing.T) {
|
|
rsp, err := cli.SuiExecuteTransactionBlock(ctx, models.SuiExecuteTransactionBlockRequest{
|
|
TxBytes: "AAACAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQEAAAAAAAAAAQEAjgDW4hJZlqvw654RGR3SdndKkdjoC0pzXQLxja/NUahLowQAAAAAACBEQGwClI9RQX68dzbN7PN29/Pw/Sc1hbtZwNAny7wZ+wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMKc3VpX3N5c3RlbRZyZXF1ZXN0X3dpdGhkcmF3X3N0YWtlAAIBAAABAQC3+Y0yfxn2dDR+HkBkFAglMULW5+UJOnyW7ajN/X2btQEqzrI5x8BMQ6LjmCSgAykfjisdYCcyTfW79nyzDB/PvtZBpwAAAAAAIAm+IREDziwoZLm7lc4ZKegZ2J5viEgoss9zgrFkHLh6t/mNMn8Z9nQ0fh5AZBQIJTFC1uflCTp8lu2ozf19m7XoAwAAAAAAAFDhjyoAAAAAAA==",
|
|
Signature: []string{"ALISOTYXKlmBvQ1Uc4UrlWieczU9cGwkyT0Mg65Y2r6VvriElBGB63JDjqg1714Z8B0m84g3S4yrJIIws+leugKOjKY5Wf3dV/la/GVL26whJPWy7WsrWUH2wtmlmcgN6w=="},
|
|
Options: models.SuiTransactionBlockOptions{
|
|
ShowInput: true,
|
|
ShowRawInput: true,
|
|
ShowEffects: true,
|
|
ShowEvents: true,
|
|
},
|
|
RequestType: "WaitForLocalExecution",
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on unsafe_moveCall", func(t *testing.T) {
|
|
rsp, err := cli.MoveCall(ctx, models.MoveCallRequest{
|
|
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
PackageObjectId: "0x7d584c9a27ca4a546e8203b005b0e9ae746c9bec6c8c3c0bc84611bcf4ceab5f",
|
|
Module: "auction",
|
|
Function: "start_an_auction",
|
|
TypeArguments: []interface{}{},
|
|
Arguments: []interface{}{
|
|
"0x342e959f8d9d1fa9327a05fd54fefd929bbedad47190bdbb58743d8ba3bd3420",
|
|
"0x3fd0fdedb84cf1f59386b6251ba6dd2cb495094da26e0a5a38239acd9d437f96",
|
|
"0xb3de4235cb04167b473de806d00ba351e5860500253cf8e62d711e578e1d92ae",
|
|
"web3",
|
|
"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
},
|
|
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
GasBudget: "1000",
|
|
})
|
|
|
|
if err != nil {
|
|
t.Error(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
|
|
})
|
|
|
|
t.Run("test on unsafe_mergeCoins", func(t *testing.T) {
|
|
rsp, err := cli.MergeCoins(ctx, models.MergeCoinsRequest{
|
|
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
PrimaryCoin: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
CoinToMerge: "0x92f03fdec6e0278dcb6fa3f4467eeee3e0bee1ac41825351ef53431677d2e2f7",
|
|
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
GasBudget: "1000",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on unsafe_publish", func(t *testing.T) {
|
|
rsp, err := cli.Publish(ctx, models.PublishRequest{
|
|
Sender: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
CompiledModules: []string{
|
|
"oRzrCwUAAAALAQAOAg4kAzJZBIsBFgWhAZoBB7sC5wEIogQoBsoECgrUBBoM7gSjAQ2RBgQAAAEBAQIBAwEEAQUBBgAHCAAACAgAAAkIAAIKDAEAAQQLAgAGDAIAAxIEAAEUBAEAAQANAAEAAA4CAQAADwMBAAAQBAEAAhUHCAEAAhYJCgEAARcLDAEAARgNCAEAAxkEDgAGGg8QAAUFEQEBCAEVEwgBAAIbFBUBAAMcDgEAAR0BDAEABR4ZAQEIBAYFBgYGBwYKAwsGDAYKFgoXDgYPGAMHCAEHCwMBCAQHCAUAAwYIAgcIAQcIBQEIAAEHCAUCBwsHAQgECwcBCAQBCAQBBgsDAQkAAQMBBwsDAQkAAQcLBwEJAAIHCwcBCQADAQsHAQkAAgcLBwEJAAsHAQkAAQgGAQYIBQEFAgkABQIDCwMBCAQBBgsHAQkAAwcLBwEJAAMHCAUBCwMBCQABCwMBCAQBCAIBCAEBCQAGZG9udXRzB2JhbGFuY2UEY29pbgZvYmplY3QDc3VpCHRyYW5zZmVyCnR4X2NvbnRleHQFRG9udXQJRG9udXRTaG9wDFNob3BPd25lckNhcARDb2luA1NVSQlUeENvbnRleHQJYnV5X2RvbnV0D2NvbGxlY3RfcHJvZml0cwllYXRfZG9udXQEaW5pdAJpZANVSUQFcHJpY2UHQmFsYW5jZQV2YWx1ZQtiYWxhbmNlX211dAVzcGxpdARqb2luA25ldwZzZW5kZXIEdGFrZQZkZWxldGUEemVybwxzaGFyZV9vYmplY3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwgAAAAAAAAAAAACAREIBgECAxEIBhMDAQsHAQgEAgIBEQgGAAEEAAUmCgEuOAAKABAAFCYDEAsAAQsBAQsCAQcAJwsBOAEMAwsDCgAQABQ4AgwECwAPAQsEOAMBCgIRCBIACwIuEQk4BAIBAQQAEhAKARABOAUMAwsBDwELAwoCOAYMBAsECwIuEQk4BwICAQQADgYLABMADAELARENAgMAAAABDgoAEQgSAgoALhEJOAgLABEIBugDAAAAAAAAOAkSATgKAgEBAQIA",
|
|
},
|
|
Dependencies: []string{"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1"},
|
|
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
GasBudget: "1000",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on unsafe_splitCoin", func(t *testing.T) {
|
|
rsp, err := cli.SplitCoin(ctx, models.SplitCoinRequest{
|
|
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
CoinObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
SplitAmounts: []string{"1000", "1000"},
|
|
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
GasBudget: "1000",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on unsafe_splitCoinEqual", func(t *testing.T) {
|
|
rsp, err := cli.SplitCoinEqual(ctx, models.SplitCoinEqualRequest{
|
|
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
CoinObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
SplitCount: "2",
|
|
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
GasBudget: "1000",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on unsafe_transferObject", func(t *testing.T) {
|
|
rsp, err := cli.TransferObject(ctx, models.TransferObjectRequest{
|
|
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
ObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
GasBudget: "1000",
|
|
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on unsafe_transferSui", func(t *testing.T) {
|
|
rsp, err := cli.TransferSui(ctx, models.TransferSuiRequest{
|
|
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
SuiObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
GasBudget: "1000",
|
|
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
Amount: "1",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on unsafe_pay", func(t *testing.T) {
|
|
rsp, err := cli.Pay(ctx, models.PayRequest{
|
|
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
SuiObjectId: []string{"0x92f03fdec6e0278dcb6fa3f4467eeee3e0bee1ac41825351ef53431677d2e2f7"},
|
|
Recipient: []string{"0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff"},
|
|
Amount: []string{"1"},
|
|
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
GasBudget: "1000",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on unsafe_paySui", func(t *testing.T) {
|
|
rsp, err := cli.PaySui(ctx, models.PaySuiRequest{
|
|
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
SuiObjectId: []string{"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1"},
|
|
Recipient: []string{"0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff"},
|
|
Amount: []string{"1"},
|
|
GasBudget: "1000",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on unsafe_payAllSui", func(t *testing.T) {
|
|
rsp, err := cli.PayAllSui(ctx, models.PayAllSuiRequest{
|
|
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
SuiObjectId: []string{"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1"},
|
|
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
GasBudget: "1000",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on unsafe_batchTransaction", func(t *testing.T) {
|
|
rsp, err := cli.BatchTransaction(ctx, models.BatchTransactionRequest{
|
|
Signer: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
RPCTransactionRequestParams: []models.RPCTransactionRequestParams{
|
|
{
|
|
MoveCallRequestParams: &models.MoveCallRequest{
|
|
PackageObjectId: "0x7d584c9a27ca4a546e8203b005b0e9ae746c9bec6c8c3c0bc84611bcf4ceab5f",
|
|
Module: "auction",
|
|
Function: "start_an_auction",
|
|
TypeArguments: []interface{}{},
|
|
Arguments: []interface{}{
|
|
"0x342e959f8d9d1fa9327a05fd54fefd929bbedad47190bdbb58743d8ba3bd3420",
|
|
"0x3fd0fdedb84cf1f59386b6251ba6dd2cb495094da26e0a5a38239acd9d437f96",
|
|
"0xb3de4235cb04167b473de806d00ba351e5860500253cf8e62d711e578e1d92ae",
|
|
"web3",
|
|
"0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
TransferObjectRequestParams: &models.TransferObjectRequest{
|
|
ObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
},
|
|
},
|
|
},
|
|
Gas: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
GasBudget: "1000",
|
|
SuiTransactionBlockBuilderMode: "DevInspect",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
/*
|
|
t.Run("test on SignAndExecuteTransactionBlock", func(t *testing.T) {
|
|
signerAccount, err := signer.NewSignertWithMnemonic("input your mnemonic")
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
priKey := signerAccount.PriKey
|
|
fmt.Printf("signerAccount.Address: %s\n", signerAccount.Address)
|
|
|
|
rsp, err := cli.TransferSui(ctx, models.TransferSuiRequest{
|
|
Signer: signerAccount.Address,
|
|
SuiObjectId: "0xc699c6014da947778fe5f740b2e9caf905ca31fb4c81e346f467ae126e3c03f1",
|
|
GasBudget: "100000000",
|
|
Recipient: "0x4ae8be62692d1bbf892b657ee78a59954240ee0525f20a5b5687a70995cf0eff",
|
|
Amount: "1",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
// see the successful transaction url: https://suivision.xyz/txblock/C7iYsH4tU5RdY1KBeNax4mCBn3XLZ5UswsuDpKrVkcH6
|
|
rsp2, err := cli.SignAndExecuteTransactionBlock(ctx, models.SignAndExecuteTransactionBlockRequest{
|
|
TxnMetaData: rsp,
|
|
PriKey: priKey,
|
|
Options: models.SuiTransactionBlockOptions{
|
|
ShowInput: true,
|
|
ShowRawInput: true,
|
|
ShowEffects: true,
|
|
},
|
|
RequestType: "WaitForLocalExecution",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp2)
|
|
})
|
|
*/
|
|
|
|
}
|
|
|
|
func TestOnReadMoveDataFromSui(t *testing.T) {
|
|
t.Run("test on sui_getMoveFunctionArgTypes", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetMoveFunctionArgTypes(ctx, models.GetMoveFunctionArgTypesRequest{
|
|
Package: "0x7d584c9a27ca4a546e8203b005b0e9ae746c9bec6c8c3c0bc84611bcf4ceab5f",
|
|
Module: "auction",
|
|
Function: "start_an_auction",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on sui_getNormalizedMoveModulesByPackage", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetNormalizedMoveModulesByPackage(ctx, models.GetNormalizedMoveModulesByPackageRequest{
|
|
Package: "0x7d584c9a27ca4a546e8203b005b0e9ae746c9bec6c8c3c0bc84611bcf4ceab5f",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on sui_getNormalizedMoveModule", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetNormalizedMoveModule(ctx, models.GetNormalizedMoveModuleRequest{
|
|
Package: "0x7d584c9a27ca4a546e8203b005b0e9ae746c9bec6c8c3c0bc84611bcf4ceab5f",
|
|
ModuleName: "auction",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on sui_getNormalizedMoveStruct", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetNormalizedMoveStruct(ctx, models.GetNormalizedMoveStructRequest{
|
|
Package: "0x7d584c9a27ca4a546e8203b005b0e9ae746c9bec6c8c3c0bc84611bcf4ceab5f",
|
|
ModuleName: "auction",
|
|
StructName: "BidDetail",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
t.Run("test on sui_getNormalizedMoveFunction", func(t *testing.T) {
|
|
rsp, err := cli.SuiGetNormalizedMoveFunction(ctx, models.GetNormalizedMoveFunctionRequest{
|
|
Package: "0x7d584c9a27ca4a546e8203b005b0e9ae746c9bec6c8c3c0bc84611bcf4ceab5f",
|
|
ModuleName: "auction",
|
|
FunctionName: "configure_auction",
|
|
})
|
|
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.FailNow()
|
|
}
|
|
|
|
utils.PrettyPrint(rsp)
|
|
})
|
|
|
|
}
|