88 lines
1.7 KiB
Go
88 lines
1.7 KiB
Go
|
package ibc
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/tendermint/basecoin/stack"
|
||
|
"github.com/tendermint/basecoin/state"
|
||
|
"github.com/tendermint/light-client/certifiers"
|
||
|
)
|
||
|
|
||
|
type checkErr func(error) bool
|
||
|
|
||
|
func noErr(err error) bool {
|
||
|
return err == nil
|
||
|
}
|
||
|
|
||
|
func genEmptySeed(keys certifiers.ValKeys, chain string, h int,
|
||
|
appHash []byte, count int) certifiers.Seed {
|
||
|
|
||
|
vals := keys.ToValidators(10, 0)
|
||
|
cp := keys.GenCheckpoint(chain, h, nil, vals, appHash, 0, count)
|
||
|
return certifiers.Seed{cp, vals}
|
||
|
}
|
||
|
|
||
|
func TestIBCRegister(t *testing.T) {
|
||
|
assert := assert.New(t)
|
||
|
|
||
|
// the validators we use to make seeds
|
||
|
keys := certifiers.GenValKeys(5)
|
||
|
keys2 := certifiers.GenValKeys(7)
|
||
|
appHash := []byte{0, 4, 7, 23}
|
||
|
appHash2 := []byte{12, 34, 56, 78}
|
||
|
|
||
|
// badSeed doesn't validate
|
||
|
badSeed := genEmptySeed(keys2, "chain-2", 123, appHash, len(keys2))
|
||
|
badSeed.Header.AppHash = appHash2
|
||
|
|
||
|
cases := []struct {
|
||
|
seed certifiers.Seed
|
||
|
checker checkErr
|
||
|
}{
|
||
|
{
|
||
|
genEmptySeed(keys, "chain-1", 100, appHash, len(keys)),
|
||
|
noErr,
|
||
|
},
|
||
|
{
|
||
|
genEmptySeed(keys, "chain-1", 200, appHash, len(keys)),
|
||
|
IsAlreadyRegisteredErr,
|
||
|
},
|
||
|
{
|
||
|
badSeed,
|
||
|
IsInvalidCommitErr,
|
||
|
},
|
||
|
{
|
||
|
genEmptySeed(keys2, "chain-2", 123, appHash2, 5),
|
||
|
noErr,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
ctx := stack.MockContext("hub", 50)
|
||
|
store := state.NewMemKVStore()
|
||
|
// no registrar here
|
||
|
app := stack.New().Dispatch(stack.WrapHandler(NewHandler()))
|
||
|
|
||
|
for i, tc := range cases {
|
||
|
tx := RegisterChainTx{tc.seed}.Wrap()
|
||
|
_, err := app.DeliverTx(ctx, store, tx)
|
||
|
assert.True(tc.checker(err), "%d: %+v", i, err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestIBCUpdate(t *testing.T) {
|
||
|
|
||
|
}
|
||
|
|
||
|
func TestIBCCreatePacket(t *testing.T) {
|
||
|
|
||
|
}
|
||
|
|
||
|
func TestIBCPostPacket(t *testing.T) {
|
||
|
|
||
|
}
|
||
|
|
||
|
func TestIBCSendTx(t *testing.T) {
|
||
|
|
||
|
}
|