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