From c8bfb861f128d65e658c86e7de5420b7d27672ee Mon Sep 17 00:00:00 2001 From: Lorenz Herzberger <64837895+LaurentMontBlanc@users.noreply.github.com> Date: Thu, 9 Nov 2023 15:47:41 +0100 Subject: [PATCH] add machine allowance e2e test (#166) * add machine allowance e2e test Signed-off-by: Lorenz Herzberger * fix linter errors Signed-off-by: Lorenz Herzberger --------- Signed-off-by: Lorenz Herzberger --- tests/e2e/machine/suite.go | 72 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/tests/e2e/machine/suite.go b/tests/e2e/machine/suite.go index c3ccb41..337997b 100644 --- a/tests/e2e/machine/suite.go +++ b/tests/e2e/machine/suite.go @@ -13,6 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/hd" "github.com/cosmos/cosmos-sdk/crypto/keyring" bank "github.com/cosmos/cosmos-sdk/x/bank/client/cli" + feegrant "github.com/cosmos/cosmos-sdk/x/feegrant/client/cli" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" ) @@ -183,3 +184,74 @@ func (s *E2ETestSuite) TestInvalidAttestMachine() { s.Require().NoError(err) s.Require().Equal(int(txResponse.Code), int(3)) } + +func (s *E2ETestSuite) TestMachineAllowanceAttestation() { + // create address for machine + val := s.network.Validators[0] + kb := val.ClientCtx.Keyring + + account, _, err := kb.NewMnemonic("AllowanceMachine", keyring.English, sample.DefaultDerivationPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1) + s.Require().NoError(err) + + addr, err := account.GetAddress() + s.Require().NoError(err) + + // register TA + prvKey, pubKey := sample.KeyPair(3) + + ta := sample.TrustAnchor(pubKey) + taJSON, err := json.Marshal(&ta) + s.Require().NoError(err) + args := []string{ + fmt.Sprintf("--%s=%s", flags.FlagChainID, s.network.Config.ChainID), + fmt.Sprintf("--%s=%s", flags.FlagFrom, val.Moniker), + fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees), + "--yes", + string(taJSON), + } + _, err = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdRegisterTrustAnchor(), args) + s.Require().NoError(err) + + s.Require().NoError(s.network.WaitForNextBlock()) + + // create allowance for machine + args = []string{ + val.Moniker, // granter + addr.String(), // grantee + fmt.Sprintf("--%s=%s", feegrant.FlagAllowedMsgs, "/planetmintgo.machine.MsgAttestMachine"), + fmt.Sprintf("--%s=%s", feegrant.FlagSpendLimit, "2stake"), + fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees), + "--yes", + } + + _, err = clitestutil.ExecTestCLICmd(val.ClientCtx, feegrant.NewCmdFeeGrant(), args) + s.Require().NoError(err) + + s.Require().NoError(s.network.WaitForNextBlock()) + + // attest machine with fee granter without funding the machine account first + machine := sample.Machine(sample.Name, pubKey, prvKey, addr.String()) + machineJSON, err := json.Marshal(&machine) + s.Require().NoError(err) + + args = []string{ + fmt.Sprintf("--%s=%s", flags.FlagChainID, s.network.Config.ChainID), + fmt.Sprintf("--%s=%s", flags.FlagFrom, addr.String()), + fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees), + fmt.Sprintf("--%s=%s", flags.FlagFeeGranter, val.Address.String()), + "--yes", + string(machineJSON), + } + + _, err = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdAttestMachine(), args) + s.Require().NoError(err) + + s.Require().NoError(s.network.WaitForNextBlock()) + + args = []string{ + pubKey, + } + + _, err = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdGetMachineByPublicKey(), args) + s.Require().NoError(err) +}