Commit 833bb5ce authored by Adrian Sutton's avatar Adrian Sutton

op-service: Ensure block body validation tests fail for the expected reason.

Adds coverage for nil transactions and withdrawals and blocks with correct block hash but a transaction or withdrawal root that doesn't match the body.
Removes the generation of body tests from the script as the generated scripts were a useful start, but ultimately ineffective at testing the code.
parent 57413031
{"name":"post-shanghai-bad-receipts-hash","fail":true, "reason":"failed to verify block hash"}
{"name":"post-shanghai-bad-transactions-hash","fail":true, "reason":"failed to verify block hash"}
{"name":"post-shanghai-bad-transactions-nil","fail":true, "reason": "block tx 0 is null"}
{"name":"post-shanghai-bad-transactions","fail":true} {"name":"post-shanghai-bad-transactions","fail":true, "reason": "failed to verify transactions list"}
{"name":"post-shanghai-bad-withdrawals-hash","fail":true, "reason":"failed to verify block hash"}
{"name":"post-shanghai-bad-withdrawals-nil","fail":true, "reason": "block withdrawal 0 is null"}
{"name":"post-shanghai-bad-withdrawals","fail":true} {"name":"post-shanghai-bad-withdrawals","fail":true,"reason": "failed to verify withdrawals list"}
{"name":"pre-shanghai-bad-receipts-hash","fail":true, "reason":"failed to verify block hash"}
This source diff could not be displayed because it is too large. You can view the blob instead.
{"name":"pre-shanghai-bad-transactions-hash","fail":true, "reason":"failed to verify block hash"}
{"name":"pre-shanghai-bad-transactions","fail":true} {"name":"pre-shanghai-bad-transactions","fail":true,"reason": "failed to verify transactions list"}
...@@ -62,18 +62,8 @@ generate_test_vector() { ...@@ -62,18 +62,8 @@ generate_test_vector() {
$mutation_func "$data_file" $metadata_file $mutation_func "$data_file" $metadata_file
} }
mkdir -p data/blocks
mkdir -p data/headers mkdir -p data/headers
# Blocks
generate_test_vector "pre-shanghai-success" "0x9ef7cd2241202b919a0e51240818a8666c73f7ce4b908931e3ae6d26d30f7663" true success_case
generate_test_vector "pre-shanghai-bad-transactions" "0x9ef7cd2241202b919a0e51240818a8666c73f7ce4b908931e3ae6d26d30f7663" true bad_transactions_root
generate_test_vector "pre-shanghai-bad-receipts" "0x9ef7cd2241202b919a0e51240818a8666c73f7ce4b908931e3ae6d26d30f7663" true bad_receipts_root
generate_test_vector "post-shanghai-success" "0xa16c6bcda4fdca88b5761965c4d724f7afc6a6900d9051a204e544870adb3452" true success_case
generate_test_vector "post-shanghai-bad-withdrawals" "0xa16c6bcda4fdca88b5761965c4d724f7afc6a6900d9051a204e544870adb3452" true bad_withdrawals_root
generate_test_vector "post-shanghai-bad-transactions" "0xa16c6bcda4fdca88b5761965c4d724f7afc6a6900d9051a204e544870adb3452" true bad_transactions_root
generate_test_vector "post-shanghai-bad-receipts" "0xa16c6bcda4fdca88b5761965c4d724f7afc6a6900d9051a204e544870adb3452" true bad_receipts_root
# Headers # Headers
generate_test_vector "pre-shanghai-success" "0x9ef7cd2241202b919a0e51240818a8666c73f7ce4b908931e3ae6d26d30f7663" false success_case generate_test_vector "pre-shanghai-success" "0x9ef7cd2241202b919a0e51240818a8666c73f7ce4b908931e3ae6d26d30f7663" false success_case
generate_test_vector "pre-shanghai-bad-transactions" "0x9ef7cd2241202b919a0e51240818a8666c73f7ce4b908931e3ae6d26d30f7663" false bad_transactions_root generate_test_vector "pre-shanghai-bad-transactions" "0x9ef7cd2241202b919a0e51240818a8666c73f7ce4b908931e3ae6d26d30f7663" false bad_transactions_root
......
...@@ -13,8 +13,9 @@ import ( ...@@ -13,8 +13,9 @@ import (
var blocksTestdata embed.FS var blocksTestdata embed.FS
type testMetadata struct { type testMetadata struct {
Name string `json:"name"` Name string `json:"name"`
Fail bool `json:"fail,omitempty"` Fail bool `json:"fail,omitempty"`
Reason string `json:"reason,omitempty"`
} }
func readJsonTestdata(t *testing.T, name string, dest any) { func readJsonTestdata(t *testing.T, name string, dest any) {
...@@ -67,6 +68,7 @@ func TestBlockJSON(t *testing.T) { ...@@ -67,6 +68,7 @@ func TestBlockJSON(t *testing.T) {
err := block.verify() err := block.verify()
if metadata.Fail { if metadata.Fail {
require.NotNil(t, err, "expecting verification error") require.NotNil(t, err, "expecting verification error")
require.ErrorContains(t, err, metadata.Reason, "validation failed for incorrect reason")
} else { } else {
require.NoError(t, err, "verification should pass") require.NoError(t, err, "verification should pass")
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment