chore: Add test for broadcasting fetched_bytecode message (#10244)

* Test for broadcasting fetched_bytecode message

* Process review comment
pull/10479/head
Victor Baranov 3 months ago committed by GitHub
parent f2b10cc6b4
commit 0156ed4cf6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 52
      apps/block_scout_web/test/block_scout_web/controllers/api/v2/address_controller_test.exs
  2. 2
      apps/block_scout_web/test/block_scout_web/controllers/api/v2/token_controller_test.exs

@ -7,6 +7,7 @@ defmodule BlockScoutWeb.API.V2.AddressControllerTest do
alias BlockScoutWeb.Models.UserFromAuth
alias Explorer.{Chain, Repo, TestHelper}
alias Explorer.Chain.Address.Counters
alias Explorer.Chain.Events.Subscriber
alias Explorer.Chain.{
Address,
@ -24,6 +25,7 @@ defmodule BlockScoutWeb.API.V2.AddressControllerTest do
alias Explorer.Account.WatchlistAddress
alias Explorer.Chain.Address.CurrentTokenBalance
alias Indexer.Fetcher.OnDemand.ContractCode, as: ContractCodeOnDemand
alias Plug.Conn
import Explorer.Chain, only: [hash_to_lower_case_string: 1]
@ -36,6 +38,18 @@ defmodule BlockScoutWeb.API.V2.AddressControllerTest do
setup :verify_on_exit!
setup %{json_rpc_named_arguments: json_rpc_named_arguments} do
mocked_json_rpc_named_arguments = Keyword.put(json_rpc_named_arguments, :transport, EthereumJSONRPC.Mox)
start_supervised!({Task.Supervisor, name: Indexer.TaskSupervisor})
start_supervised!({ContractCodeOnDemand, [mocked_json_rpc_named_arguments, [name: ContractCodeOnDemand]]})
%{json_rpc_named_arguments: mocked_json_rpc_named_arguments}
:ok
end
defp topic(topic_hex_string) do
{:ok, topic} = Explorer.Chain.Hash.Full.cast(topic_hex_string)
topic
@ -284,6 +298,44 @@ defmodule BlockScoutWeb.API.V2.AddressControllerTest do
assert response["watchlist_address_id"] == watchlist_address.id
end
test "broadcasts fetched_bytecode event", %{conn: conn} do
address = insert(:address)
address_hash = address.hash
string_address_hash = to_string(address.hash)
contract_code = "0x6080"
EthereumJSONRPC.Mox
|> expect(:json_rpc, fn [
%{
id: id,
jsonrpc: "2.0",
method: "eth_getCode",
params: [^string_address_hash, "latest"]
}
],
_ ->
{:ok, [%{id: id, result: contract_code}]}
end)
topic = "addresses:#{address_hash}"
{:ok, _reply, _socket} =
BlockScoutWeb.UserSocketV2
|> socket("no_id", %{})
|> subscribe_and_join(topic)
request = get(conn, "/api/v2/addresses/#{address.hash}")
assert _response = json_response(request, 200)
assert_receive %Phoenix.Socket.Message{
payload: %{fetched_bytecode: ^contract_code},
event: "fetched_bytecode",
topic: ^topic
},
:timer.seconds(1)
end
end
describe "/addresses/{address_hash}/counters" do

@ -5,8 +5,6 @@ defmodule BlockScoutWeb.API.V2.TokenControllerTest do
import Mox
alias BlockScoutWeb.Notifier
alias Explorer.{Repo, TestHelper}
alias Explorer.Chain.{Address, Token, Token.Instance, TokenTransfer}

Loading…
Cancel
Save