Jürgen Eckel 04e45a7fb2
275 refactor feedenom on e2e test suite (#312)
* extended AttestMachine FundAccount to support a given fee denominator
* renamed testutil/network/network.go to testutil/network/loader.go
* renamed new to Load
* integrated cosmos/testutil/network to planetmint-go/testutil/network
* changed to plmnt token tests only!
* removed obsolete variables
* fixed newest linter issues

---------

Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
2024-02-14 12:15:40 +01:00

109 lines
2.6 KiB
Go

package e2e
import (
"errors"
"strings"
"github.com/cosmos/cosmos-sdk/crypto/hd"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
sdk "github.com/cosmos/cosmos-sdk/types"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
"github.com/planetmint/planetmint-go/lib"
clitestutil "github.com/planetmint/planetmint-go/testutil/cli"
"github.com/planetmint/planetmint-go/testutil/network"
"github.com/planetmint/planetmint-go/testutil/sample"
machinetypes "github.com/planetmint/planetmint-go/x/machine/types"
)
func CreateAccount(network *network.Network, name string, mnemonic string) (account *keyring.Record, err error) {
val := network.Validators[0]
kb := val.ClientCtx.Keyring
account, err = kb.NewAccount(name, mnemonic, keyring.DefaultBIP39Passphrase, sample.DefaultDerivationPath, hd.Secp256k1)
if err != nil {
return nil, err
}
return account, nil
}
func FundAccount(network *network.Network, account *keyring.Record, tokenDenom string) (err error) {
val := network.Validators[0]
addr, err := account.GetAddress()
if err != nil {
return err
}
// sending funds to account to initialize account on chain
coin := sdk.NewCoins(sdk.NewInt64Coin(tokenDenom, 10000))
msg := banktypes.NewMsgSend(val.Address, addr, coin)
out, err := lib.BroadcastTxWithFileLock(val.Address, msg)
if err != nil {
return err
}
err = network.WaitForNextBlock()
if err != nil {
return err
}
rawLog, err := clitestutil.GetRawLogFromTxOut(val, out)
if err != nil {
return err
}
if !strings.Contains(rawLog, "cosmos.bank.v1beta1.MsgSend") {
err = errors.New("failed to fund account")
}
return
}
func AttestMachine(network *network.Network, name string, mnemonic string, num int, tokenDenom string) (err error) {
val := network.Validators[0]
account, err := CreateAccount(network, name, mnemonic)
if err != nil {
return err
}
err = FundAccount(network, account, tokenDenom)
if err != nil {
return err
}
// register Ta
prvKey, pubKey := sample.KeyPair(num)
ta := sample.TrustAnchor(pubKey)
registerMsg := machinetypes.NewMsgRegisterTrustAnchor(val.Address.String(), &ta)
_, err = lib.BroadcastTxWithFileLock(val.Address, registerMsg)
if err != nil {
return err
}
err = network.WaitForNextBlock()
if err != nil {
return err
}
addr, err := account.GetAddress()
if err != nil {
return err
}
machine := sample.Machine(name, pubKey, prvKey, addr.String())
attestMsg := machinetypes.NewMsgAttestMachine(addr.String(), &machine)
_, err = lib.BroadcastTxWithFileLock(addr, attestMsg)
if err != nil {
return err
}
err = network.WaitForNextBlock()
if err != nil {
return err
}
return
}