github.com/cosmos/cosmos-sdk@v0.50.10/x/auth/ante/ext_test.go (about) 1 package ante_test 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 codectypes "github.com/cosmos/cosmos-sdk/codec/types" 9 "github.com/cosmos/cosmos-sdk/testutil/testdata" 10 sdk "github.com/cosmos/cosmos-sdk/types" 11 "github.com/cosmos/cosmos-sdk/x/auth/ante" 12 "github.com/cosmos/cosmos-sdk/x/auth/tx" 13 ) 14 15 func TestRejectExtensionOptionsDecorator(t *testing.T) { 16 suite := SetupTestSuite(t, true) 17 18 testCases := []struct { 19 msg string 20 allow bool 21 }{ 22 {"allow extension", true}, 23 {"reject extension", false}, 24 } 25 for _, tc := range testCases { 26 t.Run(tc.msg, func(t *testing.T) { 27 txBuilder := suite.clientCtx.TxConfig.NewTxBuilder() 28 29 reod := ante.NewExtensionOptionsDecorator(func(_ *codectypes.Any) bool { 30 return tc.allow 31 }) 32 antehandler := sdk.ChainAnteDecorators(reod) 33 34 // no extension options should not trigger an error 35 theTx := txBuilder.GetTx() 36 _, err := antehandler(suite.ctx, theTx, false) 37 require.NoError(t, err) 38 39 extOptsTxBldr, ok := txBuilder.(tx.ExtensionOptionsTxBuilder) 40 if !ok { 41 // if we can't set extension options, this decorator doesn't apply and we're done 42 return 43 } 44 45 // set an extension option and check 46 any, err := codectypes.NewAnyWithValue(testdata.NewTestMsg()) 47 require.NoError(t, err) 48 extOptsTxBldr.SetExtensionOptions(any) 49 theTx = txBuilder.GetTx() 50 _, err = antehandler(suite.ctx, theTx, false) 51 if tc.allow { 52 require.NoError(t, err) 53 } else { 54 require.EqualError(t, err, "unknown extension options") 55 } 56 }) 57 } 58 }