added test cases

adjusted to the linter requirements

Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
This commit is contained in:
Jürgen Eckel 2025-05-22 10:26:33 +02:00
parent 8b8331f79b
commit 16c4f1e077
No known key found for this signature in database
5 changed files with 139 additions and 69 deletions

17
tests/e2e/der/cli_test.go Normal file
View File

@ -0,0 +1,17 @@
package der
import (
"testing"
"time"
"github.com/planetmint/planetmint-go/testutil/network"
"github.com/stretchr/testify/suite"
)
func TestE2EMachineTestSuite(t *testing.T) {
time.Sleep(2 * time.Second)
cfg := network.LoaderDefaultConfig()
cfg.NumValidators = 3
suite.Run(t, NewE2ETestSuite(cfg))
}

83
tests/e2e/der/suite.go Normal file
View File

@ -0,0 +1,83 @@
package der
import (
clitestutil "github.com/planetmint/planetmint-go/testutil/cli"
e2etestutil "github.com/planetmint/planetmint-go/testutil/e2e"
"github.com/planetmint/planetmint-go/testutil/network"
"github.com/planetmint/planetmint-go/testutil/sample"
dercli "github.com/planetmint/planetmint-go/x/der/client/cli"
dertypes "github.com/planetmint/planetmint-go/x/der/types"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"
)
// E2ETestSuite struct definition of machine suite
type E2ETestSuite struct {
suite.Suite
cfg network.Config
network *network.Network
feeDenom string
}
// NewE2ETestSuite returns configured machine E2ETestSuite
func NewE2ETestSuite(cfg network.Config) *E2ETestSuite {
return &E2ETestSuite{cfg: cfg}
}
// SetupSuite initializes machine E2ETestSuite
func (s *E2ETestSuite) SetupSuite() {
s.T().Log("setting up e2e machine test suite")
s.feeDenom = sample.FeeDenom
s.network = network.Load(s.T(), s.cfg)
// create machine account for attestation
account, err := e2etestutil.CreateAccount(s.network, sample.Name, sample.Mnemonic)
s.Require().NoError(err)
err = e2etestutil.FundAccount(s.network, account, s.feeDenom)
s.Require().NoError(err)
}
// TearDownSuite clean up after testing
func (s *E2ETestSuite) TearDownSuite() {
s.T().Log("tearing down e2e machine test suite")
}
// TestRegisterDER attests a DER and queries the attested DER from the chain
func (s *E2ETestSuite) TestRegisterDER() {
val := s.network.Validators[0]
der := dertypes.DER{
ZigbeeID: "0123456789123456",
DirigeraID: "1123456789123456",
DirigeraMAC: "",
PlmntAddress: val.Address.String(),
LiquidAddress: "liquidder",
}
msg1 := dertypes.NewMsgRegisterDER(val.Address.String(), &der)
out, err := e2etestutil.BuildSignBroadcastTx(s.T(), val.Address, msg1)
s.Require().NoError(err)
s.Require().NoError(s.network.WaitForNextBlock())
s.Require().NoError(s.network.WaitForNextBlock())
rawLog, err := clitestutil.GetRawLogFromTxOut(val, out)
s.Require().NoError(err)
assert.Contains(s.T(), rawLog, "planetmintgo.der.MsgRegisterDER")
// Check if DER can be resolved
output, err := clitestutil.ExecTestCLICmd(val.ClientCtx, dercli.CmdDer(), []string{
der.ZigbeeID,
})
s.Require().NoError(err)
assert.Contains(s.T(), output.String(), "0123456789123456")
// Check if the NFT got created
output, err = clitestutil.ExecTestCLICmd(val.ClientCtx, dercli.CmdNft(), []string{
der.ZigbeeID,
})
s.Require().NoError(err)
assert.Contains(s.T(), output.String(), "0123456789123456")
}

View File

@ -1,57 +1,25 @@
package keeper package keeper
import ( import (
"testing"
"github.com/cosmos/cosmos-sdk/codec"
cdctypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/store"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
dertypes "github.com/planetmint/planetmint-go/x/der/types" dertypes "github.com/planetmint/planetmint-go/x/der/types"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"testing"
dbm "github.com/cometbft/cometbft-db"
"github.com/cometbft/cometbft/libs/log"
tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
) )
func createTestKeeper(t *testing.T) (Keeper, sdk.Context) {
db := dbm.NewMemDB()
cms := store.NewCommitMultiStore(db)
storeKey := sdk.NewKVStoreKey("der")
memKey := storetypes.NewMemoryStoreKey("mem_der")
cms.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db)
cms.MountStoreWithDB(memKey, storetypes.StoreTypeMemory, nil)
err := cms.LoadLatestVersion()
require.NoError(t, err)
interfaceRegistry := cdctypes.NewInterfaceRegistry()
cdc := codec.NewProtoCodec(interfaceRegistry)
ps := paramtypes.NewSubspace(cdc, codec.NewLegacyAmino(), storeKey, memKey, "DerParams")
keeper := NewKeeper(cdc, storeKey, memKey, ps, nil, "") // pass nil for MachineKeeper and empty rootDir for this test
ctx := sdk.NewContext(cms, tmproto.Header{}, false, log.NewNopLogger())
return *keeper, ctx
}
func TestStoreDerAssetAndLookupDerAsset(t *testing.T) { func TestStoreDerAssetAndLookupDerAsset(t *testing.T) {
keeper, ctx := createTestKeeper(t) keeper, ctx := CreateTestKeeper(t)
asset := dertypes.DER{ asset := dertypes.DER{
ZigbeeID: "test-zigbee-id", ZigbeeID: "test-zigbee-id",
// Add other fields as needed for your DER struct
} }
keeper.StoreDerAsset(ctx, asset) keeper.StoreDerAsset(ctx, asset)
result, found := keeper.LookupDerAsset(ctx, "test-zigbee-id") result, found := keeper.LookupDerAsset(ctx, "test-zigbee-id")
require.True(t, found) require.True(t, found)
require.Equal(t, asset.ZigbeeID, result.ZigbeeID) require.Equal(t, asset.ZigbeeID, result.ZigbeeID)
// Add more assertions for other fields as needed
} }
func TestLookupDerAsset_NotFound(t *testing.T) { func TestLookupDerAsset_NotFound(t *testing.T) {
keeper, ctx := createTestKeeper(t) keeper, ctx := CreateTestKeeper(t)
_, found := keeper.LookupDerAsset(ctx, "nonexistent-id") _, found := keeper.LookupDerAsset(ctx, "nonexistent-id")
require.False(t, found) require.False(t, found)
} }

View File

@ -3,55 +3,23 @@ package keeper
import ( import (
"testing" "testing"
"github.com/cosmos/cosmos-sdk/codec"
cdctypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/store"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
dertypes "github.com/planetmint/planetmint-go/x/der/types" dertypes "github.com/planetmint/planetmint-go/x/der/types"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
dbm "github.com/cometbft/cometbft-db"
"github.com/cometbft/cometbft/libs/log"
tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
) )
func createTestKeeperNft(t *testing.T) (Keeper, sdk.Context) {
db := dbm.NewMemDB()
cms := store.NewCommitMultiStore(db)
storeKey := sdk.NewKVStoreKey("der")
memKey := storetypes.NewMemoryStoreKey("mem_der")
cms.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db)
cms.MountStoreWithDB(memKey, storetypes.StoreTypeMemory, nil)
err := cms.LoadLatestVersion()
require.NoError(t, err)
interfaceRegistry := cdctypes.NewInterfaceRegistry()
cdc := codec.NewProtoCodec(interfaceRegistry)
ps := paramtypes.NewSubspace(cdc, codec.NewLegacyAmino(), storeKey, memKey, "DerParams")
keeper := NewKeeper(cdc, storeKey, memKey, ps, nil, "")
ctx := sdk.NewContext(cms, tmproto.Header{}, false, log.NewNopLogger())
return *keeper, ctx
}
func TestStoreLiquidDerAssetAndLookupLiquidDerAsset(t *testing.T) { func TestStoreLiquidDerAssetAndLookupLiquidDerAsset(t *testing.T) {
keeper, ctx := createTestKeeperNft(t) keeper, ctx := CreateTestKeeper(t)
asset := dertypes.LiquidDerAsset{ asset := dertypes.LiquidDerAsset{
ZigbeeID: "liquid-test-zigbee-id", ZigbeeID: "liquid-test-zigbee-id",
// Add other fields as needed for your LiquidDerAsset struct
} }
keeper.StoreLiquidDerAsset(ctx, asset) keeper.StoreLiquidDerAsset(ctx, asset)
result, found := keeper.LookupLiquidDerAsset(ctx, "liquid-test-zigbee-id") result, found := keeper.LookupLiquidDerAsset(ctx, "liquid-test-zigbee-id")
require.True(t, found) require.True(t, found)
require.Equal(t, asset.ZigbeeID, result.ZigbeeID) require.Equal(t, asset.ZigbeeID, result.ZigbeeID)
// Add more assertions for other fields as needed
} }
func TestLookupLiquidDerAsset_NotFound(t *testing.T) { func TestLookupLiquidDerAsset_NotFound(t *testing.T) {
keeper, ctx := createTestKeeperNft(t) keeper, ctx := CreateTestKeeper(t)
_, found := keeper.LookupLiquidDerAsset(ctx, "nonexistent-id") _, found := keeper.LookupLiquidDerAsset(ctx, "nonexistent-id")
require.False(t, found) require.False(t, found)
} }

View File

@ -0,0 +1,34 @@
package keeper
import (
"testing"
dbm "github.com/cometbft/cometbft-db"
"github.com/cometbft/cometbft/libs/log"
tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
"github.com/cosmos/cosmos-sdk/codec"
cdctypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/store"
storetypes "github.com/cosmos/cosmos-sdk/store/types"
sdk "github.com/cosmos/cosmos-sdk/types"
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
"github.com/stretchr/testify/require"
)
func CreateTestKeeper(t *testing.T) (Keeper, sdk.Context) {
db := dbm.NewMemDB()
cms := store.NewCommitMultiStore(db)
storeKey := sdk.NewKVStoreKey("der")
memKey := storetypes.NewMemoryStoreKey("mem_der")
cms.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db)
cms.MountStoreWithDB(memKey, storetypes.StoreTypeMemory, nil)
err := cms.LoadLatestVersion()
require.NoError(t, err)
interfaceRegistry := cdctypes.NewInterfaceRegistry()
cdc := codec.NewProtoCodec(interfaceRegistry)
ps := paramtypes.NewSubspace(cdc, codec.NewLegacyAmino(), storeKey, memKey, "DerParams")
keeper := NewKeeper(cdc, storeKey, memKey, ps, nil, "")
ctx := sdk.NewContext(cms, tmproto.Header{}, false, log.NewNopLogger())
return *keeper, ctx
}