forked from cerc-io/ipld-eth-server
Add test for ethTransactionCidByTxHash query
This commit is contained in:
parent
0c44882cb2
commit
b3d9e01d67
@ -50,6 +50,10 @@ type EthTransactionCidResp struct {
|
|||||||
BlockByMhKey IPFSBlockResp `json:"blockByMhKey"`
|
BlockByMhKey IPFSBlockResp `json:"blockByMhKey"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type EthTransactionCidByTxHash struct {
|
||||||
|
Response EthTransactionCidResp `json:"ethTransactionCidByTxHash"`
|
||||||
|
}
|
||||||
|
|
||||||
type EthTransactionCidsByHeaderIdResp struct {
|
type EthTransactionCidsByHeaderIdResp struct {
|
||||||
Nodes []EthTransactionCidResp `json:"nodes"`
|
Nodes []EthTransactionCidResp `json:"nodes"`
|
||||||
}
|
}
|
||||||
@ -169,7 +173,7 @@ func (c *Client) AllEthHeaderCids(ctx context.Context, condition EthHeaderCidCon
|
|||||||
params += fmt.Sprintf(`blockNumber: "%s"`, condition.BlockNumber.String())
|
params += fmt.Sprintf(`blockNumber: "%s"`, condition.BlockNumber.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
getLogsQuery := fmt.Sprintf(`
|
getHeadersQuery := fmt.Sprintf(`
|
||||||
query{
|
query{
|
||||||
allEthHeaderCids(condition: { %s }) {
|
allEthHeaderCids(condition: { %s }) {
|
||||||
nodes {
|
nodes {
|
||||||
@ -202,7 +206,7 @@ func (c *Client) AllEthHeaderCids(ctx context.Context, condition EthHeaderCidCon
|
|||||||
}
|
}
|
||||||
`, params)
|
`, params)
|
||||||
|
|
||||||
req := gqlclient.NewRequest(getLogsQuery)
|
req := gqlclient.NewRequest(getHeadersQuery)
|
||||||
req.Header.Set("Cache-Control", "no-cache")
|
req.Header.Set("Cache-Control", "no-cache")
|
||||||
|
|
||||||
var respData map[string]interface{}
|
var respData map[string]interface{}
|
||||||
@ -223,3 +227,41 @@ func (c *Client) AllEthHeaderCids(ctx context.Context, condition EthHeaderCidCon
|
|||||||
}
|
}
|
||||||
return &allEthHeaderCids.Response, nil
|
return &allEthHeaderCids.Response, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Client) EthTransactionCidByTxHash(ctx context.Context, txHash string) (*EthTransactionCidResp, error) {
|
||||||
|
getTxQuery := fmt.Sprintf(`
|
||||||
|
query{
|
||||||
|
ethTransactionCidByTxHash(txHash: "%s") {
|
||||||
|
cid
|
||||||
|
txHash
|
||||||
|
index
|
||||||
|
src
|
||||||
|
dst
|
||||||
|
blockByMhKey {
|
||||||
|
data
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`, txHash)
|
||||||
|
|
||||||
|
req := gqlclient.NewRequest(getTxQuery)
|
||||||
|
req.Header.Set("Cache-Control", "no-cache")
|
||||||
|
|
||||||
|
var respData map[string]interface{}
|
||||||
|
err := c.client.Run(ctx, req, &respData)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonStr, err := json.Marshal(respData)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var ethTxCid EthTransactionCidByTxHash
|
||||||
|
err = json.Unmarshal(jsonStr, ðTxCid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return ðTxCid.Response, nil
|
||||||
|
}
|
||||||
|
@ -286,11 +286,11 @@ var _ = Describe("GraphQL", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Retrieves header_cids that matches the provided blockHash", func() {
|
It("Retrieves header_cids that matches the provided blockHash", func() {
|
||||||
blockHash := blocks[2].Hash().String()
|
blockHash := blocks[1].Hash().String()
|
||||||
allEthHeaderCidsResp, err := client.AllEthHeaderCids(ctx, graphql.EthHeaderCidCondition{BlockHash: &blockHash})
|
allEthHeaderCidsResp, err := client.AllEthHeaderCids(ctx, graphql.EthHeaderCidCondition{BlockHash: &blockHash})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
headerCID, txCIDs, err := backend.Retriever.RetrieveHeaderAndTxCIDsByBlockHash(blocks[2].Hash())
|
headerCID, txCIDs, err := backend.Retriever.RetrieveHeaderAndTxCIDsByBlockHash(blocks[1].Hash())
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
// Begin tx
|
// Begin tx
|
||||||
@ -316,6 +316,38 @@ var _ = Describe("GraphQL", func() {
|
|||||||
compareEthHeaderCid(ethHeaderCid, headerCID, txCIDs, headerIPLDs[0])
|
compareEthHeaderCid(ethHeaderCid, headerCID, txCIDs, headerIPLDs[0])
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Describe("ethTransactionCidByTxHash", func() {
|
||||||
|
It("Retrieves tx_cid that matches the provided txHash", func() {
|
||||||
|
txHash := blocks[2].Transactions()[0].Hash().String()
|
||||||
|
ethTransactionCidResp, err := client.EthTransactionCidByTxHash(ctx, txHash)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
txCID, err := backend.Retriever.RetrieveTxCIDByHash(txHash)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
compareEthTxCid(*ethTransactionCidResp, txCID)
|
||||||
|
|
||||||
|
// Begin tx
|
||||||
|
tx, err := backend.DB.Beginx()
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
defer func() {
|
||||||
|
if p := recover(); p != nil {
|
||||||
|
shared.Rollback(tx)
|
||||||
|
panic(p)
|
||||||
|
} else if err != nil {
|
||||||
|
shared.Rollback(tx)
|
||||||
|
} else {
|
||||||
|
err = tx.Commit()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
txIPLDs, err := backend.Fetcher.FetchTrxs(tx, []models.TxModel{txCID})
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Expect(len(txIPLDs)).To(Equal(1))
|
||||||
|
Expect(ethTransactionCidResp.BlockByMhKey.Data).To(Equal(graphql.Bytes(txIPLDs[0].Data).String()))
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
func compareEthHeaderCid(ethHeaderCid graphql.EthHeaderCidResp, headerCID models.HeaderModel, txCIDs []models.TxModel, headerIPLD models.IPLDModel) {
|
func compareEthHeaderCid(ethHeaderCid graphql.EthHeaderCidResp, headerCID models.HeaderModel, txCIDs []models.TxModel, headerIPLD models.IPLDModel) {
|
||||||
@ -339,14 +371,17 @@ func compareEthHeaderCid(ethHeaderCid graphql.EthHeaderCidResp, headerCID models
|
|||||||
|
|
||||||
for tIdx, txCID := range txCIDs {
|
for tIdx, txCID := range txCIDs {
|
||||||
ethTxCid := ethHeaderCid.EthTransactionCidsByHeaderId.Nodes[tIdx]
|
ethTxCid := ethHeaderCid.EthTransactionCidsByHeaderId.Nodes[tIdx]
|
||||||
|
compareEthTxCid(ethTxCid, txCID)
|
||||||
|
}
|
||||||
|
|
||||||
|
Expect(ethHeaderCid.BlockByMhKey.Data).To(Equal(graphql.Bytes(headerIPLD.Data).String()))
|
||||||
|
Expect(ethHeaderCid.BlockByMhKey.Key).To(Equal(headerIPLD.Key))
|
||||||
|
}
|
||||||
|
|
||||||
|
func compareEthTxCid(ethTxCid graphql.EthTransactionCidResp, txCID models.TxModel) {
|
||||||
Expect(ethTxCid.Cid).To(Equal(txCID.CID))
|
Expect(ethTxCid.Cid).To(Equal(txCID.CID))
|
||||||
Expect(ethTxCid.TxHash).To(Equal(txCID.TxHash))
|
Expect(ethTxCid.TxHash).To(Equal(txCID.TxHash))
|
||||||
Expect(ethTxCid.Index).To(Equal(int32(txCID.Index)))
|
Expect(ethTxCid.Index).To(Equal(int32(txCID.Index)))
|
||||||
Expect(ethTxCid.Src).To(Equal(txCID.Src))
|
Expect(ethTxCid.Src).To(Equal(txCID.Src))
|
||||||
Expect(ethTxCid.Dst).To(Equal(txCID.Dst))
|
Expect(ethTxCid.Dst).To(Equal(txCID.Dst))
|
||||||
}
|
}
|
||||||
|
|
||||||
Expect(ethHeaderCid.BlockByMhKey.Data).To(Equal(graphql.Bytes(headerIPLD.Data).String()))
|
|
||||||
Expect(ethHeaderCid.BlockByMhKey.Key).To(Equal(headerIPLD.Key))
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user