issue tx over e2e rest test

Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com>
This commit is contained in:
Lorenz Herzberger 2023-07-12 10:57:18 +02:00
parent e904b04afa
commit ee4f2bfda0
No known key found for this signature in database
GPG Key ID: FA5EE906EB55316A
2 changed files with 88 additions and 16 deletions

View File

@ -5,9 +5,16 @@ import (
"planetmint-go/testutil"
machinetypes "planetmint-go/x/machine/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/client/tx"
cdctypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/codec/types"
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
txtypes "github.com/cosmos/cosmos-sdk/types/tx"
"github.com/cosmos/cosmos-sdk/types/tx/signing"
xauthsigning "github.com/cosmos/cosmos-sdk/x/auth/signing"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
)
@ -26,13 +33,10 @@ func (s *E2ETestSuite) TestAttestMachineREST() {
respAccountInfo, err := testutil.GetRequest(reqAccountInfo)
s.Require().NoError(err)
s.T().Log(string(respAccountInfo))
var resAccountInfo authtypes.QueryAccountInfoResponse
err = val.ClientCtx.Codec.UnmarshalJSON(respAccountInfo, &resAccountInfo)
s.Require().NoError(err)
s.T().Log(resAccountInfo.Info.AccountNumber)
// Create Attest Machine TX
machine := machinetypes.Machine{
Name: "machine",
@ -48,37 +52,103 @@ func (s *E2ETestSuite) TestAttestMachineREST() {
Gps: "{\"Latitude\":\"-48.876667\",\"Longitude\":\"-123.393333\"}",
},
}
// machineJSON, err := json.Marshal(&machine)
// s.Require().NoError(err)
txBuilder := val.ClientCtx.TxConfig.NewTxBuilder()
msg := machinetypes.MsgAttestMachine{
Creator: string(addr),
Creator: addr.String(),
Machine: &machine,
}
err = txBuilder.SetMsgs(&msg)
s.Require().NoError(err)
msg.Type()
txBuilder.SetGasLimit(200000)
txBuilder.SetFeeAmount(sdk.Coins{sdk.NewInt64Coin("stake", 2)})
txBuilder.SetTimeoutHeight(0)
pk, err := k.GetPubKey()
s.Require().NoError(err)
sk := k.GetLocal().PrivKey
var priv cryptotypes.PrivKey
err = val.ClientCtx.Codec.UnpackAny(sk, &priv)
s.Require().NoError(err)
sigV2 := signing.SignatureV2{
PubKey: pk,
Data: &signing.SingleSignatureData{
SignMode: val.ClientCtx.TxConfig.SignModeHandler().DefaultMode(),
Signature: nil,
},
Sequence: resAccountInfo.Info.Sequence,
}
err = txBuilder.SetSignatures(sigV2)
s.Require().NoError(err)
signerData := xauthsigning.SignerData{
ChainID: val.ClientCtx.ChainID,
AccountNumber: resAccountInfo.Info.AccountNumber,
Sequence: resAccountInfo.Info.Sequence,
}
sigV2, err = tx.SignWithPrivKey(
val.ClientCtx.TxConfig.SignModeHandler().DefaultMode(), signerData,
txBuilder, priv, val.ClientCtx.TxConfig, resAccountInfo.Info.Sequence,
)
s.Require().NoError(err)
err = txBuilder.SetSignatures(sigV2)
s.Require().NoError(err)
txBytes, err := val.ClientCtx.TxConfig.TxEncoder()(txBuilder.GetTx())
s.Require().NoError(err)
broadcastTxUrl := fmt.Sprintf("%s/cosmos/tx/v1beta1/txs", baseURL)
req := txtypes.BroadcastTxRequest{
TxBytes: txBytes,
Mode: txtypes.BroadcastMode_BROADCAST_MODE_SYNC,
}
marshalledReq, err := val.ClientCtx.Codec.MarshalJSON(&req)
s.Require().NoError(err)
s.Require().NoError(err)
r, err := testutil.PostRequest(broadcastTxUrl, "application/json", marshalledReq)
s.Require().NoError(err)
s.T().Log("RESULT:")
s.T().Log(string(r))
// Encode TX
reqEncodeTx := fmt.Sprintf("%s/cosmos/tx/encode", baseURL)
reqEncodeTx := fmt.Sprintf("%s/cosmos/tx/v1beta1/encode", baseURL)
signerInfos := make([]txtypes.SignerInfo, 1)
signerInfos[1].PublicKey = &types.Any{
msgs := make([]*types.Any, 1)
msgs[0], err = cdctypes.NewAnyWithValue(&msg)
s.Require().NoError(err)
signerInfos := make([]*txtypes.SignerInfo, 1)
signerInfos[0] = &txtypes.SignerInfo{}
signerInfos[0].PublicKey = &types.Any{
TypeUrl: "/cosmos.crypto.secp256k1.PubKey",
Value: k.PubKey.Value,
}
signerInfos[1].ModeInfo = &txtypes.ModeInfo{
signerInfos[0].ModeInfo = &txtypes.ModeInfo{
Sum: &txtypes.ModeInfo_Single_{
Single: &txtypes.ModeInfo_Single{
Mode: signing.SignMode_SIGN_MODE_DIRECT,
},
},
}
signerInfos[1].Sequence = resAccountInfo.Info.Sequence
signerInfos[0].Sequence = resAccountInfo.Info.Sequence
reqEncodeTxBody := txtypes.TxEncodeRequest{
Tx: &txtypes.Tx{
Body: &txtypes.TxBody{
// Messages: make([]*types.Any, 0),
Messages: msgs,
Memo: "",
TimeoutHeight: 0,
ExtensionOptions: []*types.Any{},
NonCriticalExtensionOptions: []*types.Any{},
},
AuthInfo: &txtypes.AuthInfo{
SignerInfos: signerInfos,
@ -87,12 +157,13 @@ func (s *E2ETestSuite) TestAttestMachineREST() {
Signatures: [][]byte{},
},
}
reqEncodeTxBodyBytes, err := reqEncodeTxBody.Marshal()
s.Require().NoError(err)
// var resEncodeTX TXEncodeRequest
respEncodeTx, err := testutil.PostRequest(reqEncodeTx, "application/json", []byte(reqEncodeTxBody))
respEncodeTx, err := testutil.PostRequest(reqEncodeTx, "application/json", reqEncodeTxBodyBytes)
s.Require().NoError(err)
s.T().Log(respEncodeTx)
s.T().Log(string(respEncodeTx))
// Send encoded TX to /cosmos/tx/v1beta1/txs
// Query Machine by Pubkey

View File

@ -20,6 +20,7 @@ import (
// Queryable pubkey for TestAttestMachine
const pubKey = "A/ZrbETECRq5DNGJZ0aH0DjlV4Y1opMlRfGoEJH454eB"
const mnemonic = "science humor project sword foil amazing exhibit afford kangaroo child pulse adapt camera trigger isolate pull approve october dragon critic vendor panic business valve"
// Struct definition of machine E2ETestSuite
type E2ETestSuite struct {
@ -42,7 +43,7 @@ func (s *E2ETestSuite) SetupSuite() {
val := s.network.Validators[0]
kb := val.ClientCtx.Keyring
account, _, err := kb.NewMnemonic("machine", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1)
account, err := kb.NewAccount("machine", mnemonic, keyring.DefaultBIP39Passphrase, sdk.FullFundraiserPath, hd.Secp256k1)
s.Require().NoError(err)
addr, _ := account.GetAddress()