commit
610a3f5d0e
@ -0,0 +1,151 @@ |
||||
defmodule Indexer.Block.Fetcher.ReceiptsTest do |
||||
use EthereumJSONRPC.Case, async: false |
||||
|
||||
import Mox |
||||
|
||||
alias Indexer.Block.Fetcher |
||||
alias Indexer.Block.Fetcher.Receipts |
||||
|
||||
@moduletag capture_log: true |
||||
|
||||
setup :set_mox_global |
||||
|
||||
setup :verify_on_exit! |
||||
|
||||
describe "fetch/2" do |
||||
setup %{json_rpc_named_arguments: json_rpc_named_arguments} do |
||||
%{ |
||||
block_fetcher: %Fetcher{ |
||||
json_rpc_named_arguments: json_rpc_named_arguments, |
||||
receipts_concurrency: 10 |
||||
} |
||||
} |
||||
end |
||||
|
||||
@tag :no_parity |
||||
@tag :no_geth |
||||
test "fetches logs setting their blocks if they're null", %{ |
||||
block_fetcher: %Fetcher{json_rpc_named_arguments: json_rpc_named_arguments} = block_fetcher |
||||
} do |
||||
if json_rpc_named_arguments[:transport] == EthereumJSONRPC.Mox do |
||||
EthereumJSONRPC.Mox |
||||
|> expect(:json_rpc, fn _json, _options -> |
||||
{:ok, |
||||
[ |
||||
%{ |
||||
id: 0, |
||||
jsonrpc: "2.0", |
||||
result: %{ |
||||
"blockHash" => nil, |
||||
"blockNumber" => nil, |
||||
"contractAddress" => nil, |
||||
"cumulativeGasUsed" => "0x5208", |
||||
"gasUsed" => "0x5208", |
||||
"logs" => [ |
||||
%{ |
||||
"address" => "0x8bf38d4764929064f2d4d3a56520a76ab3df415b", |
||||
"blockHash" => nil, |
||||
"blockNumber" => nil, |
||||
"data" => "0x000000000000000000000000862d67cb0773ee3f8ce7ea89b328ffea861ab3ef", |
||||
"logIndex" => "0x0", |
||||
"topics" => ["0x600bcf04a13e752d1e3670a5a9f1c21177ca2a93c6f5391d4f1298d098097c22"], |
||||
"transactionHash" => "0x43bd884872de3e488692881baeec262e7b95234d3965248c39fe992fffd433e5", |
||||
"transactionIndex" => "0x0", |
||||
"transactionLogIndex" => "0x0", |
||||
"type" => "mined" |
||||
} |
||||
], |
||||
"logsBloom" => |
||||
"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", |
||||
"root" => nil, |
||||
"status" => "0x1", |
||||
"transactionHash" => "0x43bd884872de3e488692881baeec262e7b95234d3965248c39fe992fffd433e5", |
||||
"transactionIndex" => "0x0" |
||||
} |
||||
}, |
||||
%{ |
||||
id: 1, |
||||
jsonrpc: "2.0", |
||||
result: %{ |
||||
"blockHash" => "0xf6b4b8c88df3ebd252ec476328334dc026cf66606a84fb769b3d3cbccc8471bd", |
||||
"blockNumber" => "0x25", |
||||
"contractAddress" => nil, |
||||
"cumulativeGasUsed" => "0xc512", |
||||
"gasUsed" => "0xc512", |
||||
"logs" => [ |
||||
%{ |
||||
"address" => "0x8bf38d4764929064f2d4d3a56520a76ab3df415b", |
||||
"blockHash" => "0xf6b4b8c88df3ebd252ec476328334dc026cf66606a84fb769b3d3cbccc8471bd", |
||||
"blockNumber" => "0x25", |
||||
"data" => "0x000000000000000000000000862d67cb0773ee3f8ce7ea89b328ffea861ab3ef", |
||||
"logIndex" => "0x0", |
||||
"topics" => ["0x600bcf04a13e752d1e3670a5a9f1c21177ca2a93c6f5391d4f1298d098097c22"], |
||||
"transactionHash" => "0x53bd884872de3e488692881baeec262e7b95234d3965248c39fe992fffd433e5", |
||||
"transactionIndex" => "0x0", |
||||
"transactionLogIndex" => "0x0", |
||||
"type" => "mined" |
||||
} |
||||
], |
||||
"logsBloom" => |
||||
"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000200000000000000000000020000000000000000200000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", |
||||
"root" => nil, |
||||
"status" => "0x1", |
||||
"transactionHash" => "0x53bd884872de3e488692881baeec262e7b95234d3965248c39fe992fffd433e5", |
||||
"transactionIndex" => "0x0" |
||||
} |
||||
} |
||||
]} |
||||
end) |
||||
end |
||||
|
||||
transaction_params = [ |
||||
%{ |
||||
block_hash: "0xf6b4b8c88df3ebd252ec476328334dc026cf66606a84fb769b3d3cbccc8471bd", |
||||
block_number: 46147, |
||||
from_address_hash: "0xa1e4380a3b1f749673e270229993ee55f35663b4", |
||||
gas: 21000, |
||||
gas_price: 50_000_000_000_000, |
||||
hash: "0x43bd884872de3e488692881baeec262e7b95234d3965248c39fe992fffd433e5", |
||||
index: 0, |
||||
input: "0x", |
||||
nonce: 0, |
||||
r: 61_965_845_294_689_009_770_156_372_156_374_760_022_787_886_965_323_743_865_986_648_153_755_601_564_112, |
||||
s: 31_606_574_786_494_953_692_291_101_914_709_926_755_545_765_281_581_808_821_704_454_381_804_773_090_106, |
||||
to_address_hash: "0x5df9b87991262f6ba471f09758cde1c0fc1de734", |
||||
v: 28, |
||||
value: 31337, |
||||
transaction_index: 0 |
||||
}, |
||||
%{ |
||||
block_hash: "0xf7b4b8c88df3ebd252ec476328334dc026cf66606a84fb769b3d3cbccc8471bd", |
||||
block_number: 46148, |
||||
from_address_hash: "0xa1e4380a3b1f749673e270229993ee55f35663b4", |
||||
gas: 21000, |
||||
gas_price: 50_000_000_000_000, |
||||
hash: "0x53bd884872de3e488692881baeec262e7b95234d3965248c39fe992fffd433e5", |
||||
index: 0, |
||||
input: "0x", |
||||
nonce: 0, |
||||
r: 61_965_845_294_689_009_770_156_372_156_374_760_022_787_886_965_323_743_865_986_648_153_755_601_564_112, |
||||
s: 31_606_574_786_494_953_692_291_101_914_709_926_755_545_765_281_581_808_821_704_454_381_804_773_090_106, |
||||
to_address_hash: "0x5df9b87991262f6ba471f09758cde1c0fc1de734", |
||||
v: 28, |
||||
value: 31337, |
||||
transaction_index: 0 |
||||
} |
||||
] |
||||
|
||||
{:ok, %{logs: logs}} = Receipts.fetch(block_fetcher, transaction_params) |
||||
|
||||
assert Enum.find(logs, fn log -> |
||||
log[:transaction_hash] == "0x53bd884872de3e488692881baeec262e7b95234d3965248c39fe992fffd433e5" && |
||||
log[:block_number] == 37 |
||||
end) |
||||
|
||||
assert Enum.find(logs, fn log -> |
||||
log[:transaction_hash] == "0x43bd884872de3e488692881baeec262e7b95234d3965248c39fe992fffd433e5" && |
||||
log[:block_number] == 46147 |
||||
end) |
||||
end |
||||
end |
||||
end |
Loading…
Reference in new issue