Search Apps Documentation Source Content File Folder Download Copy Actions Download

z1a_on_send_packet_filetest.gno

1.60 Kb · 51 lines
 1// PKGPATH: gno.land/r/aib/main
 2package main
 3
 4import (
 5	"chain"
 6	"testing"
 7	"time"
 8
 9	tmtesting "gno.land/p/aib/ibc/lightclient/tendermint/testing"
10	"gno.land/p/aib/ibc/types"
11
12	"gno.land/r/aib/ibc/apps/transfer"
13	"gno.land/r/aib/ibc/core"
14)
15
16// OnSendPacket: fail w/ native coins because transfer.Transfer must be the
17// entry point for native coins.
18func main(cur realm) {
19	var (
20		chainID        = "chain-id-2"
21		clientState    = tmtesting.NewClientState(chainID, types.NewHeight(2, 2))
22		apphash        = tmtesting.Hash("apphash")
23		trustedValset  = tmtesting.GenValset()
24		consensusState = tmtesting.GenConsensusState(time.Now(), apphash, trustedValset.Hash())
25	)
26	clientID := core.CreateClient(cross(cur), clientState, consensusState)
27	core.RegisterCounterparty(cross(cur), clientID, [][]byte{[]byte("iavlStoreKey"), []byte("prefix2")}, "07-tendermint-2")
28
29	signer := cur.Previous().Address()
30	payload := transfer.NewFungibleTokenPacketData("ugnot", "100", signer.String(), "atone1user", "")
31	packet := types.MsgSendPacket{
32		SourceClient:     clientID,
33		TimeoutTimestamp: uint64(time.Now().Add(time.Hour).Unix()),
34		Payloads: []types.Payload{
35			{
36				SourcePort:      transfer.PortID,
37				DestinationPort: transfer.PortID,
38				Encoding:        transfer.EncodingProtobuf,
39				Value:           payload.ProtoMarshal(),
40				Version:         transfer.V1,
41			},
42		},
43	}
44	testing.SetOriginCaller(signer)
45	testing.SetOriginSend(chain.NewCoins(chain.NewCoin("ugnot", 100)))
46
47	core.SendPacket(cross(cur), packet)
48}
49
50// Error:
51// send packet failed for payload #0 app "transfer": native packet must be initiated through transfer.Transfer