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