* addressing audit changes * address simulation genesis changes * address simulation operations changes * fix tests * typo * add more authorizations to operations * fix tests * fix failing simulations * WIP * WIP * testing simulations * test simulations * try fixing tests * WIP * fix error * test * Add exec authorization * WIP * WIP * fix tests * WIP * WIP * WIP * WIP * WIP * fix errors * fix test * WIP * try fix test * update tests * fix errors * add exec authorization * fix docs * fix test * fix error * try fixing simulation * fix errors * fixing simulations * fix errors * rename GenTx -> GenerateTx * Update x/authz/simulation/genesis.go Co-authored-by: Robert Zaremba <robert@zaremba.ch> * Update x/authz/simulation/genesis.go Co-authored-by: Robert Zaremba <robert@zaremba.ch> * Update x/authz/simulation/operations.go Co-authored-by: Robert Zaremba <robert@zaremba.ch> * review changes * fix tests * rename GenerateTx => GenTx * remove Authorization suffix Co-authored-by: Robert Zaremba <robert@zaremba.ch> Co-authored-by: atheeshp <59333759+atheeshp@users.noreply.github.com>
60 lines
1.9 KiB
Go
60 lines
1.9 KiB
Go
package simulation
|
|
|
|
import (
|
|
"math/rand"
|
|
|
|
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/types/module"
|
|
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
|
|
"github.com/cosmos/cosmos-sdk/x/authz"
|
|
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
|
|
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
|
|
)
|
|
|
|
// genGrant returns a slice of authorization grants.
|
|
func genGrant(r *rand.Rand, accounts []simtypes.Account) []authz.GrantAuthorization {
|
|
authorizations := make([]authz.GrantAuthorization, len(accounts)-1)
|
|
for i := 0; i < len(accounts)-1; i++ {
|
|
granter := accounts[i]
|
|
grantee := accounts[i+1]
|
|
authorizations[i] = authz.GrantAuthorization{
|
|
Granter: granter.Address.String(),
|
|
Grantee: grantee.Address.String(),
|
|
Authorization: generateRandomGrant(r),
|
|
}
|
|
}
|
|
|
|
return authorizations
|
|
}
|
|
|
|
func generateRandomGrant(r *rand.Rand) *codectypes.Any {
|
|
authorizations := make([]*codectypes.Any, 2)
|
|
authorizations[0] = newAnyAuthorization(banktypes.NewSendAuthorization(sdk.NewCoins(sdk.NewCoin("stake", sdk.NewInt(1000)))))
|
|
authorizations[1] = newAnyAuthorization(authz.NewGenericAuthorization(sdk.MsgTypeURL(&govtypes.MsgSubmitProposal{})))
|
|
|
|
return authorizations[r.Intn(len(authorizations))]
|
|
}
|
|
|
|
func newAnyAuthorization(a authz.Authorization) *codectypes.Any {
|
|
any, err := codectypes.NewAnyWithValue(a)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return any
|
|
}
|
|
|
|
// RandomizedGenState generates a random GenesisState for authz.
|
|
func RandomizedGenState(simState *module.SimulationState) {
|
|
var grants []authz.GrantAuthorization
|
|
simState.AppParams.GetOrGenerate(
|
|
simState.Cdc, "authz", &grants, simState.Rand,
|
|
func(r *rand.Rand) { grants = genGrant(r, simState.Accounts) },
|
|
)
|
|
|
|
authzGrantsGenesis := authz.NewGenesisState(grants)
|
|
|
|
simState.GenState[authz.ModuleName] = simState.Cdc.MustMarshalJSON(authzGrantsGenesis)
|
|
}
|