package commands import ( "context" "encoding/json" "testing" "github.com/ledgerwatch/erigon/cmd/rpcdaemon/cli" "github.com/ledgerwatch/erigon/common" "github.com/ledgerwatch/erigon/rpc" ) func TestEmptyQuery(t *testing.T) { db, err := createTestKV() if err != nil { t.Fatalf("create test db: %v", err) } defer db.Close() api := NewTraceAPI(NewBaseApi(nil), db, &cli.Flags{}) // Call GetTransactionReceipt for transaction which is not in the database var latest = rpc.LatestBlockNumber results, err := api.CallMany(context.Background(), json.RawMessage("[]"), &rpc.BlockNumberOrHash{BlockNumber: &latest}) if err != nil { t.Errorf("calling CallMany: %v", err) } if results == nil { t.Errorf("expected empty array, got nil") } if len(results) > 0 { t.Errorf("expected empty array, got %d elements", len(results)) } } func TestCoinbaseBalance(t *testing.T) { db, err := createTestKV() if err != nil { t.Fatalf("create test db: %v", err) } defer db.Close() api := NewTraceAPI(NewBaseApi(nil), db, &cli.Flags{}) // Call GetTransactionReceipt for transaction which is not in the database var latest = rpc.LatestBlockNumber results, err := api.CallMany(context.Background(), json.RawMessage(` [ [{"from":"0x71562b71999873db5b286df957af199ec94617f7","to":"0x0d3ab14bbad3d99f4203bd7a11acb94882050e7e","gas":"0x15f90","gasPrice":"0x4a817c800","value":"0x1"},["trace", "stateDiff"]], [{"from":"0x71562b71999873db5b286df957af199ec94617f7","to":"0x0d3ab14bbad3d99f4203bd7a11acb94882050e7e","gas":"0x15f90","gasPrice":"0x4a817c800","value":"0x1"},["trace", "stateDiff"]] ] `), &rpc.BlockNumberOrHash{BlockNumber: &latest}) if err != nil { t.Errorf("calling CallMany: %v", err) } if results == nil { t.Errorf("expected empty array, got nil") } if len(results) != 2 { t.Errorf("expected array with 2 elements, got %d elements", len(results)) } // Expect balance increase of the coinbase (zero address) if _, ok := results[1].StateDiff[common.Address{}]; !ok { t.Errorf("expected balance increase for coinbase (zero address)") } }