Return ErrBlockNotFound from eth GetBlock methods
This commit is contained in:
parent
4de5673bb3
commit
09a9e623c1
@ -157,6 +157,9 @@ func (b *EthRPC) GetBlockHash(height uint32) (string, error) {
|
||||
defer cancel()
|
||||
h, err := b.client.HeaderByNumber(ctx, &n)
|
||||
if err != nil {
|
||||
if err == ethereum.NotFound {
|
||||
return "", bchain.ErrBlockNotFound
|
||||
}
|
||||
return "", err
|
||||
}
|
||||
return ethHashToHash(h.Hash()), nil
|
||||
@ -183,6 +186,9 @@ func (b *EthRPC) GetBlockHeader(hash string) (*bchain.BlockHeader, error) {
|
||||
defer cancel()
|
||||
h, err := b.client.HeaderByHash(ctx, ethcommon.HexToHash(hash))
|
||||
if err != nil {
|
||||
if err == ethereum.NotFound {
|
||||
return nil, bchain.ErrBlockNotFound
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return b.ethHeaderToBlockHeader(h)
|
||||
@ -294,7 +300,7 @@ func (b *EthRPC) GetBlock(hash string, height uint32) (*bchain.Block, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if len(raw) == 0 {
|
||||
return nil, ethereum.NotFound
|
||||
return nil, bchain.ErrBlockNotFound
|
||||
}
|
||||
// Decode header and transactions.
|
||||
var head *ethtypes.Header
|
||||
@ -302,6 +308,9 @@ func (b *EthRPC) GetBlock(hash string, height uint32) (*bchain.Block, error) {
|
||||
if err := json.Unmarshal(raw, &head); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if head == nil {
|
||||
return nil, bchain.ErrBlockNotFound
|
||||
}
|
||||
if err := json.Unmarshal(raw, &body); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -139,7 +139,7 @@ func TestEthRPC_GetBlockHash(t *testing.T) {
|
||||
fields fields
|
||||
args args
|
||||
want string
|
||||
wantErr bool
|
||||
wantErr error
|
||||
}{
|
||||
{
|
||||
name: "1000000",
|
||||
@ -161,11 +161,22 @@ func TestEthRPC_GetBlockHash(t *testing.T) {
|
||||
},
|
||||
want: "eccd6b0031015a19cb7d4e10f28590ba65a6a54ad1baa322b50fe5ad16903895",
|
||||
},
|
||||
{
|
||||
name: "ErrBlockNotFound",
|
||||
fields: fields{
|
||||
b: setupEthRPC(),
|
||||
},
|
||||
args: args{
|
||||
height: 1 << 31,
|
||||
},
|
||||
want: "",
|
||||
wantErr: bchain.ErrBlockNotFound,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := tt.fields.b.GetBlockHash(tt.args.height)
|
||||
if (err != nil) != tt.wantErr {
|
||||
if err != tt.wantErr {
|
||||
t.Errorf("EthRPC.GetBlockHash() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
@ -192,7 +203,7 @@ func TestEthRPC_GetBlockHeader(t *testing.T) {
|
||||
fields fields
|
||||
args args
|
||||
want *bchain.BlockHeader
|
||||
wantErr bool
|
||||
wantErr error
|
||||
}{
|
||||
{
|
||||
name: "2870000",
|
||||
@ -208,11 +219,21 @@ func TestEthRPC_GetBlockHeader(t *testing.T) {
|
||||
Confirmations: int(uint32(bh.Number.Uint64()) - 2870000),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "ErrBlockNotFound",
|
||||
fields: fields{
|
||||
b: setupEthRPC(),
|
||||
},
|
||||
args: args{
|
||||
hash: "eccd6b0031015a19cb7d4e10f28590ba65a6a54ad1baa322b50fe5ad16903896",
|
||||
},
|
||||
wantErr: bchain.ErrBlockNotFound,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := tt.fields.b.GetBlockHeader(tt.args.hash)
|
||||
if (err != nil) != tt.wantErr {
|
||||
if err != tt.wantErr {
|
||||
t.Errorf("EthRPC.GetBlockHeader() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
@ -241,7 +262,7 @@ func TestEthRPC_GetBlock(t *testing.T) {
|
||||
args args
|
||||
want *bchain.Block
|
||||
wantTxCount int
|
||||
wantErr bool
|
||||
wantErr error
|
||||
}{
|
||||
{
|
||||
name: "2870000 by hash",
|
||||
@ -277,14 +298,27 @@ func TestEthRPC_GetBlock(t *testing.T) {
|
||||
},
|
||||
wantTxCount: 12,
|
||||
},
|
||||
{
|
||||
name: "ErrBlockNotFound",
|
||||
fields: fields{
|
||||
b: setupEthRPC(),
|
||||
},
|
||||
args: args{
|
||||
hash: "eccd6b0031015a19cb7d4e10f28590ba65a6a54ad1baa322b50fe5ad16903896",
|
||||
},
|
||||
wantErr: bchain.ErrBlockNotFound,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := tt.fields.b.GetBlock(tt.args.hash, tt.args.height)
|
||||
if (err != nil) != tt.wantErr {
|
||||
if err != tt.wantErr {
|
||||
t.Errorf("EthRPC.GetBlock() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if got == nil && tt.want == nil {
|
||||
return
|
||||
}
|
||||
if got.Hash != tt.want.Hash {
|
||||
t.Errorf("EthRPC.GetBlock().Hash = %v, want %v", got.Hash, tt.want.Hash)
|
||||
return
|
||||
|
||||
Loading…
Reference in New Issue
Block a user