From 16c4f1e077536521cdf984968910f232317f0055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Eckel?= Date: Thu, 22 May 2025 10:26:33 +0200 Subject: [PATCH] added test cases adjusted to the linter requirements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jürgen Eckel --- tests/e2e/der/cli_test.go | 17 ++++++ tests/e2e/der/suite.go | 83 +++++++++++++++++++++++++++ x/der/keeper/der_asset_test.go | 38 +----------- x/der/keeper/liquid_der_asset_test.go | 36 +----------- x/der/keeper/test_helpers.go | 34 +++++++++++ 5 files changed, 139 insertions(+), 69 deletions(-) create mode 100644 tests/e2e/der/cli_test.go create mode 100644 tests/e2e/der/suite.go create mode 100644 x/der/keeper/test_helpers.go diff --git a/tests/e2e/der/cli_test.go b/tests/e2e/der/cli_test.go new file mode 100644 index 0000000..ae470e2 --- /dev/null +++ b/tests/e2e/der/cli_test.go @@ -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)) +} diff --git a/tests/e2e/der/suite.go b/tests/e2e/der/suite.go new file mode 100644 index 0000000..a3d58f7 --- /dev/null +++ b/tests/e2e/der/suite.go @@ -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") +} diff --git a/x/der/keeper/der_asset_test.go b/x/der/keeper/der_asset_test.go index 5a0a886..e04b1bc 100644 --- a/x/der/keeper/der_asset_test.go +++ b/x/der/keeper/der_asset_test.go @@ -1,57 +1,25 @@ package keeper 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" "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" + "testing" ) -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) { - keeper, ctx := createTestKeeper(t) + keeper, ctx := CreateTestKeeper(t) asset := dertypes.DER{ ZigbeeID: "test-zigbee-id", - // Add other fields as needed for your DER struct } keeper.StoreDerAsset(ctx, asset) result, found := keeper.LookupDerAsset(ctx, "test-zigbee-id") require.True(t, found) require.Equal(t, asset.ZigbeeID, result.ZigbeeID) - // Add more assertions for other fields as needed } func TestLookupDerAsset_NotFound(t *testing.T) { - keeper, ctx := createTestKeeper(t) + keeper, ctx := CreateTestKeeper(t) _, found := keeper.LookupDerAsset(ctx, "nonexistent-id") require.False(t, found) } diff --git a/x/der/keeper/liquid_der_asset_test.go b/x/der/keeper/liquid_der_asset_test.go index a1e4cc2..abb128a 100644 --- a/x/der/keeper/liquid_der_asset_test.go +++ b/x/der/keeper/liquid_der_asset_test.go @@ -3,55 +3,23 @@ package keeper 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" "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) { - keeper, ctx := createTestKeeperNft(t) + keeper, ctx := CreateTestKeeper(t) asset := dertypes.LiquidDerAsset{ ZigbeeID: "liquid-test-zigbee-id", - // Add other fields as needed for your LiquidDerAsset struct } - keeper.StoreLiquidDerAsset(ctx, asset) result, found := keeper.LookupLiquidDerAsset(ctx, "liquid-test-zigbee-id") require.True(t, found) require.Equal(t, asset.ZigbeeID, result.ZigbeeID) - // Add more assertions for other fields as needed } func TestLookupLiquidDerAsset_NotFound(t *testing.T) { - keeper, ctx := createTestKeeperNft(t) + keeper, ctx := CreateTestKeeper(t) _, found := keeper.LookupLiquidDerAsset(ctx, "nonexistent-id") require.False(t, found) } diff --git a/x/der/keeper/test_helpers.go b/x/der/keeper/test_helpers.go new file mode 100644 index 0000000..2b15a0f --- /dev/null +++ b/x/der/keeper/test_helpers.go @@ -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 +}