Node/Acct: Pending status query fix (#2320)
* Node/Acct: Pending status query fix * Node/Acct: Test should actually verify the results
This commit is contained in:
parent
15f485885b
commit
4116f8454d
|
@ -66,7 +66,7 @@ type (
|
||||||
// TransferStatus contains the status returned for a transfer.
|
// TransferStatus contains the status returned for a transfer.
|
||||||
TransferStatus struct {
|
TransferStatus struct {
|
||||||
Committed *TransferStatusCommitted `json:"committed"`
|
Committed *TransferStatusCommitted `json:"committed"`
|
||||||
Pending *TransferStatusPending `json:"pending"`
|
Pending *[]TransferStatusPending `json:"pending"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TransferStatusCommitted contains the data returned for a committed transfer.
|
// TransferStatusCommitted contains the data returned for a committed transfer.
|
||||||
|
@ -85,7 +85,11 @@ type (
|
||||||
|
|
||||||
// TransferStatusPending contains the data returned for a committed transfer.
|
// TransferStatusPending contains the data returned for a committed transfer.
|
||||||
TransferStatusPending struct {
|
TransferStatusPending struct {
|
||||||
// TODO: Fill this in once we get a sample.
|
Digest []byte `json:"digest"`
|
||||||
|
TxHash []byte `json:"tx_hash"`
|
||||||
|
Signatures string `json:"signatures"`
|
||||||
|
GuardianSetIndex uint32 `json:"guardian_set_index"`
|
||||||
|
EmitterChain uint16 `json:"emitter_chain"`
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -277,12 +281,12 @@ func (acct *Accountant) queryMissingObservations() ([]MissingObservation, error)
|
||||||
acct.logger.Debug("acctaudit: submitting missing_observations query", zap.String("query", query))
|
acct.logger.Debug("acctaudit: submitting missing_observations query", zap.String("query", query))
|
||||||
respBytes, err := acct.wormchainConn.SubmitQuery(acct.ctx, acct.contract, []byte(query))
|
respBytes, err := acct.wormchainConn.SubmitQuery(acct.ctx, acct.contract, []byte(query))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("missing_observations query failed: %w", err)
|
return nil, fmt.Errorf("missing_observations query failed: %w, %s", err, query)
|
||||||
}
|
}
|
||||||
|
|
||||||
var ret MissingObservationsResponse
|
var ret MissingObservationsResponse
|
||||||
if err := json.Unmarshal(respBytes, &ret); err != nil {
|
if err := json.Unmarshal(respBytes, &ret); err != nil {
|
||||||
return nil, fmt.Errorf("failed to parse missing_observations response: %w", err)
|
return nil, fmt.Errorf("failed to parse missing_observations response: %w, resp: %s", err, string(respBytes))
|
||||||
}
|
}
|
||||||
|
|
||||||
acct.logger.Debug("acctaudit: missing_observations query response", zap.Int("numEntries", len(ret.Missing)), zap.String("result", string(respBytes)))
|
acct.logger.Debug("acctaudit: missing_observations query response", zap.Int("numEntries", len(ret.Missing)), zap.String("result", string(respBytes)))
|
||||||
|
@ -300,12 +304,12 @@ func (acct *Accountant) queryBatchTransferStatus(keys []TransferKey) (map[string
|
||||||
acct.logger.Debug("acctaudit: submitting batch_transfer_status query", zap.String("query", query))
|
acct.logger.Debug("acctaudit: submitting batch_transfer_status query", zap.String("query", query))
|
||||||
respBytes, err := acct.wormchainConn.SubmitQuery(acct.ctx, acct.contract, []byte(query))
|
respBytes, err := acct.wormchainConn.SubmitQuery(acct.ctx, acct.contract, []byte(query))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("batch_transfer_status query failed: %w", err)
|
return nil, fmt.Errorf("batch_transfer_status query failed: %w, %s", err, query)
|
||||||
}
|
}
|
||||||
|
|
||||||
var response BatchTransferStatusResponse
|
var response BatchTransferStatusResponse
|
||||||
if err := json.Unmarshal(respBytes, &response); err != nil {
|
if err := json.Unmarshal(respBytes, &response); err != nil {
|
||||||
return nil, fmt.Errorf("failed to unmarshal response: %w", err)
|
return nil, fmt.Errorf("failed to unmarshal response: %w, resp: %s", err, string(respBytes))
|
||||||
}
|
}
|
||||||
|
|
||||||
ret := make(map[string]*TransferStatus)
|
ret := make(map[string]*TransferStatus)
|
||||||
|
|
|
@ -108,5 +108,40 @@ func TestParseBatchTransferStatusNotFoundResponse(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestParseBatchTransferStatusPendingResponse(t *testing.T) {
|
func TestParseBatchTransferStatusPendingResponse(t *testing.T) {
|
||||||
//TODO: Write this test once we get a sample response.
|
responsesJson := []byte("{\"details\":[{\"key\":{\"emitter_chain\":2,\"emitter_address\":\"0000000000000000000000000290fb167208af455bb137780163b7b7a9a10c16\",\"sequence\":3},\"status\":{\"pending\":[{\"digest\":\"65hmAN4IbW9MBnSDzYmgoD/3ze+F8ik9NGeKR/vQ4J4=\",\"tx_hash\":\"CjHx8zExnr4JU8ewAu5/tXM6a5QyslKufGHZNSr0aE8=\",\"signatures\":\"1\",\"guardian_set_index\":0,\"emitter_chain\":2}]}}]}")
|
||||||
|
var response BatchTransferStatusResponse
|
||||||
|
err := json.Unmarshal(responsesJson, &response)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 1, len(response.Details))
|
||||||
|
|
||||||
|
expectedEmitterAddress, err := vaa.StringToAddress("0000000000000000000000000290fb167208af455bb137780163b7b7a9a10c16")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
expectedDigest, err := hex.DecodeString("eb986600de086d6f4c067483cd89a0a03ff7cdef85f2293d34678a47fbd0e09e")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
expectedTxHash, err := hex.DecodeString("0a31f1f331319ebe0953c7b002ee7fb5733a6b9432b252ae7c61d9352af4684f")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
expectedResult := TransferDetails{
|
||||||
|
Key: TransferKey{
|
||||||
|
EmitterChain: uint16(vaa.ChainIDEthereum),
|
||||||
|
EmitterAddress: expectedEmitterAddress,
|
||||||
|
Sequence: 3,
|
||||||
|
},
|
||||||
|
Status: &TransferStatus{
|
||||||
|
Pending: &[]TransferStatusPending{
|
||||||
|
TransferStatusPending{
|
||||||
|
Digest: expectedDigest,
|
||||||
|
TxHash: expectedTxHash,
|
||||||
|
Signatures: "1",
|
||||||
|
GuardianSetIndex: 0,
|
||||||
|
EmitterChain: uint16(vaa.ChainIDEthereum),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use DeepEqual() because the response contains pointers.
|
||||||
|
assert.True(t, reflect.DeepEqual(expectedResult, response.Details[0]))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue