mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-06-08 07:06:39 +00:00
start implement rest e2e test
Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com>
This commit is contained in:
parent
eda98bd463
commit
e904b04afa
99
tests/e2e/machine/rest.go
Normal file
99
tests/e2e/machine/rest.go
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
package machine
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"planetmint-go/testutil"
|
||||||
|
machinetypes "planetmint-go/x/machine/types"
|
||||||
|
|
||||||
|
"github.com/cosmos/cosmos-sdk/codec/types"
|
||||||
|
txtypes "github.com/cosmos/cosmos-sdk/types/tx"
|
||||||
|
"github.com/cosmos/cosmos-sdk/types/tx/signing"
|
||||||
|
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (s *E2ETestSuite) TestAttestMachineREST() {
|
||||||
|
val := s.network.Validators[0]
|
||||||
|
baseURL := val.APIAddress
|
||||||
|
|
||||||
|
// Query Sequence Number
|
||||||
|
k, err := val.ClientCtx.Keyring.Key("machine")
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
addr, err := k.GetAddress()
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
reqAccountInfo := fmt.Sprintf("%s/cosmos/auth/v1beta1/account_info/%s", baseURL, addr.String())
|
||||||
|
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",
|
||||||
|
Ticker: "machine_ticker",
|
||||||
|
Issued: 1,
|
||||||
|
Amount: 1000,
|
||||||
|
Precision: 8,
|
||||||
|
IssuerPlanetmint: pubKey,
|
||||||
|
IssuerLiquid: pubKey,
|
||||||
|
MachineId: pubKey,
|
||||||
|
Metadata: &machinetypes.Metadata{
|
||||||
|
AdditionalDataCID: "CID",
|
||||||
|
Gps: "{\"Latitude\":\"-48.876667\",\"Longitude\":\"-123.393333\"}",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
// machineJSON, err := json.Marshal(&machine)
|
||||||
|
// s.Require().NoError(err)
|
||||||
|
|
||||||
|
msg := machinetypes.MsgAttestMachine{
|
||||||
|
Creator: string(addr),
|
||||||
|
Machine: &machine,
|
||||||
|
}
|
||||||
|
|
||||||
|
msg.Type()
|
||||||
|
|
||||||
|
// Encode TX
|
||||||
|
reqEncodeTx := fmt.Sprintf("%s/cosmos/tx/encode", baseURL)
|
||||||
|
|
||||||
|
signerInfos := make([]txtypes.SignerInfo, 1)
|
||||||
|
signerInfos[1].PublicKey = &types.Any{
|
||||||
|
TypeUrl: "/cosmos.crypto.secp256k1.PubKey",
|
||||||
|
Value: k.PubKey.Value,
|
||||||
|
}
|
||||||
|
signerInfos[1].ModeInfo = &txtypes.ModeInfo{
|
||||||
|
Sum: &txtypes.ModeInfo_Single_{
|
||||||
|
Single: &txtypes.ModeInfo_Single{
|
||||||
|
Mode: signing.SignMode_SIGN_MODE_DIRECT,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
signerInfos[1].Sequence = resAccountInfo.Info.Sequence
|
||||||
|
|
||||||
|
reqEncodeTxBody := txtypes.TxEncodeRequest{
|
||||||
|
Tx: &txtypes.Tx{
|
||||||
|
Body: &txtypes.TxBody{
|
||||||
|
// Messages: make([]*types.Any, 0),
|
||||||
|
},
|
||||||
|
AuthInfo: &txtypes.AuthInfo{
|
||||||
|
SignerInfos: signerInfos,
|
||||||
|
Tip: nil,
|
||||||
|
},
|
||||||
|
Signatures: [][]byte{},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
s.Require().NoError(err)
|
||||||
|
// var resEncodeTX TXEncodeRequest
|
||||||
|
respEncodeTx, err := testutil.PostRequest(reqEncodeTx, "application/json", []byte(reqEncodeTxBody))
|
||||||
|
s.Require().NoError(err)
|
||||||
|
|
||||||
|
s.T().Log(respEncodeTx)
|
||||||
|
// Send encoded TX to /cosmos/tx/v1beta1/txs
|
||||||
|
|
||||||
|
// Query Machine by Pubkey
|
||||||
|
}
|
46
testutil/rest.go
Normal file
46
testutil/rest.go
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
package testutil
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetRequest defines a wrapper around an HTTP GET request with a provided URL.
|
||||||
|
// An error is returned if the request or reading the body fails.
|
||||||
|
func GetRequest(url string) ([]byte, error) {
|
||||||
|
res, err := http.Get(url) //nolint:gosec // only used for testing
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
_ = res.Body.Close()
|
||||||
|
}()
|
||||||
|
|
||||||
|
body, err := io.ReadAll(res.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return body, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// PostRequest defines a wrapper around an HTTP POST request with a provided URL and data.
|
||||||
|
// An error is returned if the request or reading the body fails.
|
||||||
|
func PostRequest(url, contentType string, data []byte) ([]byte, error) {
|
||||||
|
res, err := http.Post(url, contentType, bytes.NewBuffer(data)) //nolint:gosec // only used for testing
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error while sending post request: %w", err)
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
_ = res.Body.Close()
|
||||||
|
}()
|
||||||
|
|
||||||
|
bz, err := io.ReadAll(res.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error reading response body: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return bz, nil
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user