mukan-ibc/modules/light-clients/07-tendermint/tendermint_test.go
Mukan Erkin Törük 6852832fe8
Some checks failed
CodeQL / Analyze (push) Waiting to run
Docker Build & Push Simapp (main) / docker-build (push) Waiting to run
golangci-lint / lint (push) Waiting to run
Tests / Code Coverage / build (amd64) (push) Waiting to run
Tests / Code Coverage / build (arm64) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[additional-args:-tags="test_e2e" name:e2e path:./e2e]) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[name:08-wasm path:./modules/light-clients/08-wasm]) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[name:ibc-go path:.]) (push) Waiting to run
Deploy to GitHub Pages / Deploy to GitHub Pages (push) Has been cancelled
Buf-Push / push (push) Has been cancelled
initial: sovereign Mukan Network fork
2026-05-11 03:18:28 +03:00

115 lines
4.1 KiB
Go

package tendermint_test
import (
"testing"
"time"
testifysuite "github.com/stretchr/testify/suite"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
cmtbytes "github.com/cometbft/cometbft/libs/bytes"
cmttypes "github.com/cometbft/cometbft/types"
clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types"
ibctm "github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint"
ibctesting "github.com/cosmos/ibc-go/v10/testing"
"github.com/cosmos/ibc-go/v10/testing/simapp"
)
const (
chainID = "gaia"
chainIDRevision0 = "gaia-revision-0"
chainIDRevision1 = "gaia-revision-1"
clientID = "gaiamainnet"
trustingPeriod time.Duration = time.Hour * 24 * 7 * 2
ubdPeriod time.Duration = time.Hour * 24 * 7 * 3
maxClockDrift time.Duration = time.Second * 10
)
var (
height = clienttypes.NewHeight(0, 4)
newClientHeight = clienttypes.NewHeight(1, 1)
upgradePath = []string{"upgrade", "upgradedIBCState"}
invalidUpgradePath = []string{"upgrade", ""}
)
type TendermintTestSuite struct {
testifysuite.Suite
coordinator *ibctesting.Coordinator
// testing chains used for convenience and readability
chainA *ibctesting.TestChain
chainB *ibctesting.TestChain
// TODO: deprecate usage in favor of testing package
ctx sdk.Context
cdc codec.Codec
privVal cmttypes.PrivValidator
valSet *cmttypes.ValidatorSet
signers map[string]cmttypes.PrivValidator
valsHash cmtbytes.HexBytes
header *ibctm.Header
now time.Time
headerTime time.Time
clientTime time.Time
}
func (suite *TendermintTestSuite) SetupTest() {
suite.coordinator = ibctesting.NewCoordinator(suite.T(), 2)
suite.chainA = suite.coordinator.GetChain(ibctesting.GetChainID(1))
suite.chainB = suite.coordinator.GetChain(ibctesting.GetChainID(2))
// commit some blocks so that QueryProof returns valid proof (cannot return valid query if height <= 1)
suite.coordinator.CommitNBlocks(suite.chainA, 2)
suite.coordinator.CommitNBlocks(suite.chainB, 2)
// TODO: deprecate usage in favor of testing package
checkTx := false
app := simapp.Setup(suite.T(), checkTx)
suite.cdc = app.AppCodec()
// now is the time of the current chain, must be after the updating header
// mocks ctx.BlockTime()
suite.now = time.Date(2020, 1, 2, 0, 0, 0, 0, time.UTC)
suite.clientTime = time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)
// Header time is intended to be time for any new header used for updates
suite.headerTime = time.Date(2020, 1, 2, 0, 0, 0, 0, time.UTC)
suite.privVal = cmttypes.NewMockPV()
pubKey, err := suite.privVal.GetPubKey()
suite.Require().NoError(err)
heightMinus1 := clienttypes.NewHeight(0, height.RevisionHeight-1)
val := cmttypes.NewValidator(pubKey, 10)
suite.signers = make(map[string]cmttypes.PrivValidator)
suite.signers[val.Address.String()] = suite.privVal
suite.valSet = cmttypes.NewValidatorSet([]*cmttypes.Validator{val})
suite.valsHash = suite.valSet.Hash()
suite.header = suite.chainA.CreateTMClientHeader(chainID, int64(height.RevisionHeight), heightMinus1, suite.now, suite.valSet, suite.valSet, suite.valSet, suite.signers)
suite.ctx = app.NewContext(checkTx)
}
func getAltSigners(altVal *cmttypes.Validator, altPrivVal cmttypes.PrivValidator) map[string]cmttypes.PrivValidator {
return map[string]cmttypes.PrivValidator{altVal.Address.String(): altPrivVal}
}
func getBothSigners(suite *TendermintTestSuite, altVal *cmttypes.Validator, altPrivVal cmttypes.PrivValidator) (*cmttypes.ValidatorSet, map[string]cmttypes.PrivValidator) {
// Create bothValSet with both suite validator and altVal. Would be valid update
bothValSet := cmttypes.NewValidatorSet(append(suite.valSet.Validators, altVal))
// Create signer array and ensure it is in same order as bothValSet
_, suiteVal := suite.valSet.GetByIndex(0)
bothSigners := map[string]cmttypes.PrivValidator{
suiteVal.Address.String(): suite.privVal,
altVal.Address.String(): altPrivVal,
}
return bothValSet, bothSigners
}
func TestTendermintTestSuite(t *testing.T) {
testifysuite.Run(t, new(TendermintTestSuite))
}