return not found for not verified read contract address

pull/2800/head
Ayrat Badykov 5 years ago
parent b05408e202
commit 29bbc51fb5
No known key found for this signature in database
GPG Key ID: B44668E265E9396F
  1. 24
      apps/block_scout_web/lib/block_scout_web/controllers/address_read_contract_controller.ex
  2. 17
      apps/block_scout_web/test/block_scout_web/controllers/address_read_contract_controller_test.exs

@ -27,17 +27,21 @@ defmodule BlockScoutWeb.AddressReadContractController do
with {:ok, address_hash} <- Chain.string_to_address_hash(address_hash_string), with {:ok, address_hash} <- Chain.string_to_address_hash(address_hash_string),
{:ok, address} <- Chain.find_contract_address(address_hash, address_options, true) do {:ok, address} <- Chain.find_contract_address(address_hash, address_options, true) do
{transaction_count, validation_count} = transaction_and_validation_count(address_hash) if address.smart_contract do
{transaction_count, validation_count} = transaction_and_validation_count(address_hash)
render( render(
conn, conn,
"index.html", "index.html",
address: address, address: address,
coin_balance_status: CoinBalanceOnDemand.trigger_fetch(address), coin_balance_status: CoinBalanceOnDemand.trigger_fetch(address),
exchange_rate: Market.get_exchange_rate(Explorer.coin()) || Token.null(), exchange_rate: Market.get_exchange_rate(Explorer.coin()) || Token.null(),
transaction_count: transaction_count, transaction_count: transaction_count,
validation_count: validation_count validation_count: validation_count
) )
else
not_found(conn)
end
else else
:error -> :error ->
not_found(conn) not_found(conn)

@ -39,5 +39,22 @@ defmodule BlockScoutWeb.AddressReadContractControllerTest do
assert %Token{} = conn.assigns.exchange_rate assert %Token{} = conn.assigns.exchange_rate
assert conn.assigns.transaction_count assert conn.assigns.transaction_count
end end
test "returns not found for an unverified contract", %{conn: conn} do
contract_address = insert(:contract_address)
transaction = insert(:transaction, from_address: contract_address)
insert(
:internal_transaction_create,
index: 0,
transaction: transaction,
created_contract_address: contract_address
)
conn = get(conn, address_read_contract_path(BlockScoutWeb.Endpoint, :index, contract_address.hash))
assert html_response(conn, 404)
end
end end
end end

Loading…
Cancel
Save