diff --git a/app/app.go b/app/app.go index 166f86d4..f5926888 100644 --- a/app/app.go +++ b/app/app.go @@ -378,16 +378,16 @@ func (app *KiichainApp) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) { func (app *KiichainApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) { var genesisState GenesisState if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil { - panic(err) + return nil, fmt.Errorf("failed to unmarshal genesis state: %w", err) } if err := app.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()); err != nil { - panic(err) + return nil, fmt.Errorf("failed to set module version map: %w", err) } response, err := app.mm.InitGenesis(ctx, app.appCodec, genesisState) if err != nil { - panic(err) + return nil, fmt.Errorf("failed to initialize genesis: %w", err) } return response, nil diff --git a/app/app_test.go b/app/app_test.go index 9ab15748..f43b4ebb 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -5,6 +5,7 @@ import ( "github.com/stretchr/testify/require" + abci "github.com/cometbft/cometbft/abci/types" db "github.com/cosmos/cosmos-db" "cosmossdk.io/log" @@ -49,3 +50,22 @@ func TestKiichainApp_Export(t *testing.T) { _, err := app.ExportAppStateAndValidators(true, []string{}, []string{}) require.NoError(t, err, "ExportAppStateAndValidators should not have an error") } + +func TestKiichainApp_InitChainerReturnsErrorForInvalidGenesisJSON(t *testing.T) { + app := kiihelpers.Setup(t) + + req := &abci.RequestInitChain{ + AppStateBytes: []byte("{ invalid json }"), + } + + var ( + resp *abci.ResponseInitChain + err error + ) + require.NotPanics(t, func() { + resp, err = app.InitChainer(app.NewContext(false), req) + }) + require.Nil(t, resp) + require.Error(t, err) + require.ErrorContains(t, err, "failed to unmarshal genesis state") +}