From 639338d94df21d2499c9f9bfb698228125361b8f Mon Sep 17 00:00:00 2001 From: sheldonleedev Date: Wed, 24 Jul 2024 15:33:16 +0800 Subject: [PATCH 1/2] fix: fix set admin for agent module --- x/agent/keeper/agent.go | 10 +++++++- x/agent/keeper/agent_test.go | 50 ++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 x/agent/keeper/agent_test.go diff --git a/x/agent/keeper/agent.go b/x/agent/keeper/agent.go index 6910d26a..334ac0d5 100644 --- a/x/agent/keeper/agent.go +++ b/x/agent/keeper/agent.go @@ -44,9 +44,17 @@ func (k Keeper) GetNextNumber(ctx sdk.Context) uint64 { return sdk.BigEndianToUint64(bz) } +// SetAdmin sets the admin address in the Keeper's store. +// +// Parameters: +// - ctx: the SDK context. +// - admin: the admin address to be set. +// +// Returns: +// - error: an error if the admin address is already set. func (k Keeper) SetAdmin(ctx sdk.Context, admin sdk.AccAddress) error { // check if the sender is the current admin - if !k.GetAdmin(ctx).Equals(admin) { + if k.GetAdmin(ctx).Equals(admin) { return types.ErrAdminExists } k.setAdmin(ctx, admin) diff --git a/x/agent/keeper/agent_test.go b/x/agent/keeper/agent_test.go new file mode 100644 index 00000000..0ccaaa7c --- /dev/null +++ b/x/agent/keeper/agent_test.go @@ -0,0 +1,50 @@ +package keeper_test + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func (suite *KeeperTestSuite) TestSetAdmin() { + testCases := []struct { + name string + args sdk.AccAddress + expectErr bool + validation func(sdk.AccAddress) + }{ + { + name: "fail - invalid address, invalid bech32", + args: sdk.AccAddress("foobar"), + expectErr: true, + }, + { + name: "fail - admin already set", + args: testAdmin, + expectErr: true, + }, + { + name: "success - set admin", + args: sdk.AccAddress("lrz1xa40j022h2rcmnte47gyjg8688grln94pp84lc"), + expectErr: false, + validation: func(args sdk.AccAddress) { + admin := suite.keeper.GetAdmin(suite.ctx) + suite.Require().Equal(args, admin) + }, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("KeeperSetAdmin - %s", tc.name), func() { + suite.SetupTest() + err := suite.keeper.SetAdmin(suite.ctx, tc.args) + if tc.expectErr { + suite.Require().Error(err) + } else { + suite.Require().NoError(err) + } + if tc.validation != nil { + tc.validation(tc.args) + } + }) + } +} From cb82cdbd0dfa21557e6a6ef0cdb053aac389154f Mon Sep 17 00:00:00 2001 From: sheldonleedev Date: Wed, 24 Jul 2024 15:44:49 +0800 Subject: [PATCH 2/2] fix test case --- x/agent/keeper/agent_test.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/x/agent/keeper/agent_test.go b/x/agent/keeper/agent_test.go index 0ccaaa7c..82d8ba3a 100644 --- a/x/agent/keeper/agent_test.go +++ b/x/agent/keeper/agent_test.go @@ -13,11 +13,6 @@ func (suite *KeeperTestSuite) TestSetAdmin() { expectErr bool validation func(sdk.AccAddress) }{ - { - name: "fail - invalid address, invalid bech32", - args: sdk.AccAddress("foobar"), - expectErr: true, - }, { name: "fail - admin already set", args: testAdmin,