82fd73ba3f
- Delete header on conflict to prompt data refresh (cascade deletes all data associated with that block) - Derive header hash from rpc payload rather than computing it from data (prevents hash mismatch between blockchain and cache)
51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
package common_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/vulcanize/vulcanizedb/pkg/fakes"
|
|
"math/big"
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
"github.com/ethereum/go-ethereum/core/types"
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
|
|
common2 "github.com/vulcanize/vulcanizedb/pkg/geth/converters/common"
|
|
)
|
|
|
|
var _ = Describe("Block header converter", func() {
|
|
It("converts geth header to core header", func() {
|
|
gethHeader := &types.Header{
|
|
Difficulty: big.NewInt(1),
|
|
Number: big.NewInt(2),
|
|
ParentHash: common.HexToHash("0xParent"),
|
|
ReceiptHash: common.HexToHash("0xReceipt"),
|
|
Root: common.HexToHash("0xRoot"),
|
|
Time: big.NewInt(123456789),
|
|
TxHash: common.HexToHash("0xTransaction"),
|
|
UncleHash: common.HexToHash("0xUncle"),
|
|
}
|
|
converter := common2.HeaderConverter{}
|
|
hash := fakes.FakeHash.String()
|
|
|
|
coreHeader, err := converter.Convert(gethHeader, hash)
|
|
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(coreHeader.BlockNumber).To(Equal(gethHeader.Number.Int64()))
|
|
Expect(coreHeader.Hash).To(Equal(hash))
|
|
Expect(coreHeader.Timestamp).To(Equal(gethHeader.Time.String()))
|
|
})
|
|
|
|
It("includes raw bytes for header as JSON", func() {
|
|
gethHeader := types.Header{Number: big.NewInt(123)}
|
|
converter := common2.HeaderConverter{}
|
|
|
|
coreHeader, err := converter.Convert(&gethHeader, fakes.FakeHash.String())
|
|
|
|
Expect(err).NotTo(HaveOccurred())
|
|
expectedJSON, err := json.Marshal(gethHeader)
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(coreHeader.Raw).To(Equal(expectedJSON))
|
|
})
|
|
})
|