mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-03-30 15:08:28 +00:00
Merge pull request #46 from planetmint/jmastr/code-improvements
Code Improvements
This commit is contained in:
commit
75616169f4
@ -16,13 +16,13 @@ func (s *E2ETestSuite) TestNotarizeAssetREST() {
|
||||
val := s.network.Validators[0]
|
||||
|
||||
// Create Msg
|
||||
k, err := val.ClientCtx.Keyring.Key("machine")
|
||||
k, err := val.ClientCtx.Keyring.Key(sample.Name)
|
||||
s.Require().NoError(err)
|
||||
|
||||
addr, err := k.GetAddress()
|
||||
s.Require().NoError(err)
|
||||
|
||||
privKey, err := val.ClientCtx.Keyring.(unsafeExporter).ExportPrivateKeyObject("machine")
|
||||
privKey, err := val.ClientCtx.Keyring.(unsafeExporter).ExportPrivateKeyObject(sample.Name)
|
||||
s.Require().NoError(err)
|
||||
|
||||
sk := hex.EncodeToString(privKey.Bytes())
|
||||
@ -67,7 +67,7 @@ func (s *E2ETestSuite) TestNotarizeAssetREST() {
|
||||
|
||||
for _, tc := range testCases {
|
||||
// Prepare Tx
|
||||
txBytes, err := testutil.PrepareTx(val, &tc.msg, "machine")
|
||||
txBytes, err := testutil.PrepareTx(val, &tc.msg, sample.Name)
|
||||
s.Require().NoError(err)
|
||||
|
||||
// Broadcast Tx
|
||||
|
@ -6,14 +6,11 @@ import (
|
||||
"fmt"
|
||||
"planetmint-go/testutil/network"
|
||||
"planetmint-go/testutil/sample"
|
||||
"regexp"
|
||||
|
||||
clitestutil "planetmint-go/testutil/cli"
|
||||
assetcli "planetmint-go/x/asset/client/cli"
|
||||
machinecli "planetmint-go/x/machine/client/cli"
|
||||
|
||||
authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/hd"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/keyring"
|
||||
@ -22,7 +19,6 @@ import (
|
||||
bank "github.com/cosmos/cosmos-sdk/x/bank/client/cli"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/suite"
|
||||
"sigs.k8s.io/yaml"
|
||||
)
|
||||
|
||||
// E2ETestSuite struct definition of asset suite
|
||||
@ -48,9 +44,6 @@ func (s *E2ETestSuite) SetupSuite() {
|
||||
kb := val.ClientCtx.Keyring
|
||||
account, err := kb.NewAccount(sample.Name, sample.Mnemonic, keyring.DefaultBIP39Passphrase, sdk.FullFundraiserPath, hd.Secp256k1)
|
||||
s.Require().NoError(err)
|
||||
pk, err := account.GetPubKey()
|
||||
pkHex := hex.EncodeToString(pk.Bytes())
|
||||
s.Require().NoError(err)
|
||||
|
||||
addr, _ := account.GetAddress()
|
||||
|
||||
@ -62,25 +55,42 @@ func (s *E2ETestSuite) SetupSuite() {
|
||||
"--yes",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
}
|
||||
_, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.NewSendTxCmd(), args)
|
||||
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, bank.NewSendTxCmd(), args)
|
||||
s.Require().NoError(err)
|
||||
|
||||
txResponse, err := clitestutil.GetTxResponseFromOut(out)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
rawLog, err := clitestutil.GetRawLogFromTxResponse(val, txResponse)
|
||||
s.Require().NoError(err)
|
||||
|
||||
machine := sample.Machine("machine", pkHex)
|
||||
assert.Contains(s.T(), rawLog, "cosmos.bank.v1beta1.MsgSend")
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
|
||||
machine := sample.Machine(sample.Name, sample.PubKey)
|
||||
machineJSON, err := json.Marshal(&machine)
|
||||
s.Require().NoError(err)
|
||||
|
||||
args = []string{
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, "machine"),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, "2stake"),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, sample.Name),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
string(machineJSON),
|
||||
}
|
||||
|
||||
_, err = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdAttestMachine(), args)
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdAttestMachine(), args)
|
||||
s.Require().NoError(err)
|
||||
|
||||
txResponse, err = clitestutil.GetTxResponseFromOut(out)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
rawLog, err = clitestutil.GetRawLogFromTxResponse(val, txResponse)
|
||||
s.Require().NoError(err)
|
||||
|
||||
assert.Contains(s.T(), rawLog, "planetmintgo.machine.MsgAttestMachine")
|
||||
}
|
||||
|
||||
// TearDownSuite clean up after testing
|
||||
@ -97,7 +107,7 @@ type unsafeExporter interface {
|
||||
func (s *E2ETestSuite) TestNotarizeAsset() {
|
||||
val := s.network.Validators[0]
|
||||
|
||||
privKey, err := val.ClientCtx.Keyring.(unsafeExporter).ExportPrivateKeyObject("machine")
|
||||
privKey, err := val.ClientCtx.Keyring.(unsafeExporter).ExportPrivateKeyObject(sample.Name)
|
||||
s.Require().NoError(err)
|
||||
|
||||
sk := hex.EncodeToString(privKey.Bytes())
|
||||
@ -115,8 +125,8 @@ func (s *E2ETestSuite) TestNotarizeAsset() {
|
||||
cidHash,
|
||||
signature,
|
||||
"pubkey",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, "machine"),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, "2stake"),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, sample.Name),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
},
|
||||
"machine not found",
|
||||
@ -127,8 +137,8 @@ func (s *E2ETestSuite) TestNotarizeAsset() {
|
||||
"cid",
|
||||
"signature",
|
||||
hex.EncodeToString(privKey.PubKey().Bytes()),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, "machine"),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, "2stake"),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, sample.Name),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
},
|
||||
"invalid signature",
|
||||
@ -139,8 +149,8 @@ func (s *E2ETestSuite) TestNotarizeAsset() {
|
||||
cidHash,
|
||||
signature,
|
||||
hex.EncodeToString(privKey.PubKey().Bytes()),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, "machine"),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, "2stake"),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFrom, sample.Name),
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
"--yes",
|
||||
},
|
||||
"planetmintgo.asset.MsgNotarizeAsset",
|
||||
@ -150,29 +160,14 @@ func (s *E2ETestSuite) TestNotarizeAsset() {
|
||||
for _, tc := range testCases {
|
||||
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, assetcli.CmdNotarizeAsset(), tc.args)
|
||||
s.Require().NoError(err)
|
||||
// Hack: numbers come back as strings and cannot be unmarshalled into TxResponse struct
|
||||
m := regexp.MustCompile(`"([0-9]+?)"`)
|
||||
str := m.ReplaceAllString(out.String(), "${1}")
|
||||
|
||||
var txResponse sdk.TxResponse
|
||||
err = json.Unmarshal([]byte(str), &txResponse)
|
||||
txResponse, err := clitestutil.GetTxResponseFromOut(out)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
args := []string{
|
||||
txResponse.TxHash,
|
||||
}
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, authcmd.QueryTxCmd(), args)
|
||||
rawLog, err := clitestutil.GetRawLogFromTxResponse(val, txResponse)
|
||||
s.Require().NoError(err)
|
||||
|
||||
str = m.ReplaceAllString(out.String(), "${1}")
|
||||
// Need to convert to JSON first, because TxResponse struct lacks `yaml:"height,omitempty"`, etc.
|
||||
j, err := yaml.YAMLToJSON([]byte(str))
|
||||
s.Require().NoError(err)
|
||||
|
||||
err = json.Unmarshal(j, &txResponse)
|
||||
s.Require().NoError(err)
|
||||
|
||||
assert.Contains(s.T(), txResponse.RawLog, tc.rawLog)
|
||||
assert.Contains(s.T(), rawLog, tc.rawLog)
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,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"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/suite"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
@ -51,10 +52,17 @@ func (s *E2ETestSuite) SetupSuite() {
|
||||
"--yes",
|
||||
fmt.Sprintf("--%s=%s", flags.FlagFees, sample.Fees),
|
||||
}
|
||||
_, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.NewSendTxCmd(), args)
|
||||
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, bank.NewSendTxCmd(), args)
|
||||
s.Require().NoError(err)
|
||||
|
||||
txResponse, err := clitestutil.GetTxResponseFromOut(out)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
rawLog, err := clitestutil.GetRawLogFromTxResponse(val, txResponse)
|
||||
s.Require().NoError(err)
|
||||
|
||||
assert.Contains(s.T(), rawLog, "cosmos.bank.v1beta1.MsgSend")
|
||||
}
|
||||
|
||||
// TearDownSuite clean up after testing
|
||||
@ -78,10 +86,17 @@ func (s *E2ETestSuite) TestAttestMachine() {
|
||||
string(machineJSON),
|
||||
}
|
||||
|
||||
_, err = clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdAttestMachine(), args)
|
||||
out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, machinecli.CmdAttestMachine(), args)
|
||||
s.Require().NoError(err)
|
||||
|
||||
txResponse, err := clitestutil.GetTxResponseFromOut(out)
|
||||
s.Require().NoError(err)
|
||||
|
||||
s.Require().NoError(s.network.WaitForNextBlock())
|
||||
rawLog, err := clitestutil.GetRawLogFromTxResponse(val, txResponse)
|
||||
s.Require().NoError(err)
|
||||
|
||||
assert.Contains(s.T(), rawLog, "planetmintgo.machine.MsgAttestMachine")
|
||||
|
||||
args = []string{
|
||||
sample.PubKey,
|
||||
|
@ -2,10 +2,17 @@ package cli
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"planetmint-go/testutil"
|
||||
"regexp"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/testutil/network"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/spf13/cobra"
|
||||
"sigs.k8s.io/yaml"
|
||||
)
|
||||
|
||||
// ExecTestCLICmd builds the client context, mocks the output and executes the command.
|
||||
@ -24,3 +31,44 @@ func ExecTestCLICmd(clientCtx client.Context, cmd *cobra.Command, extraArgs []st
|
||||
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// GetTxResponseFromOut converts strings to numbers and unmarshalles out into TxResponse struct
|
||||
func GetTxResponseFromOut(out testutil.BufferWriter) (sdk.TxResponse, error) {
|
||||
var txResponse sdk.TxResponse
|
||||
|
||||
m := regexp.MustCompile(`"([0-9]+?)"`)
|
||||
str := m.ReplaceAllString(out.String(), "${1}")
|
||||
|
||||
// We might have YAML here, so we need to convert to JSON first, because TxResponse struct lacks `yaml:"height,omitempty"`, etc.
|
||||
// Since JSON is a subset of YAML, passing JSON through YAMLToJSON is a no-op and the result is the byte array of the JSON again.
|
||||
j, err := yaml.YAMLToJSON([]byte(str))
|
||||
if err != nil {
|
||||
return txResponse, err
|
||||
}
|
||||
|
||||
err = json.Unmarshal(j, &txResponse)
|
||||
if err != nil {
|
||||
return txResponse, err
|
||||
}
|
||||
|
||||
return txResponse, nil
|
||||
}
|
||||
|
||||
// GetRawLogFromTxResponse queries the TxHash of txResponse from the chain and returns the RawLog from the answer.
|
||||
func GetRawLogFromTxResponse(val *network.Validator, txResponse sdk.TxResponse) (string, error) {
|
||||
args := []string{
|
||||
txResponse.TxHash,
|
||||
}
|
||||
|
||||
out, err := ExecTestCLICmd(val.ClientCtx, authcmd.QueryTxCmd(), args)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
txRes, err := GetTxResponseFromOut(out)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return txRes.RawLog, nil
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ import (
|
||||
const Mnemonic = "helmet hedgehog lab actor weekend elbow pelican valid obtain hungry rocket decade tower gallery fit practice cart cherry giggle hair snack glance bulb farm"
|
||||
|
||||
// PubKey corresponding public key to sample mnemonic
|
||||
const PubKey = "AjKN6HiWucu1EBwzX0ACnkvomJiLRwq79oPxoLMY1zRw"
|
||||
const PubKey = "02328de87896b9cbb5101c335f40029e4be898988b470abbf683f1a0b318d73470"
|
||||
|
||||
// Name is the name of the sample machine to use in tests
|
||||
const Name = "machine"
|
||||
|
Loading…
x
Reference in New Issue
Block a user