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  }