예제 #1
0
def test_remove_deployment(network):
    network.connect("mainnet")
    address = "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e"
    Contract.from_explorer(address)
    Contract.remove_deployment(address)

    assert _get_deployment(address) == (None, None)
예제 #2
0
def test_existing_different_chains(network):
    network.connect("mainnet")
    Contract.from_explorer("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2")

    network.disconnect()
    network.connect("ropsten")
    with pytest.raises(ValueError):
        Contract("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2")
예제 #3
0
def test_remove_deployment_returns(network):
    network.connect("mainnet")
    address = "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e"
    Contract.from_explorer(address)
    build_json, sources = _get_deployment(address)

    assert (build_json, sources) != (None, None)
    assert (build_json, sources) == (Contract.remove_deployment(address))
예제 #4
0
def test_from_explorer_deployment_enabled_by_default(network):
    network.connect("mainnet")
    address = "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e"
    Contract.from_explorer(address)

    assert _get_deployment(address) != (None, None)
    # cleanup
    Contract.remove_deployment(address)
예제 #5
0
def test_as_proxy_for(network, original, impl):
    network.connect("mainnet")
    original = Contract.from_explorer(original)
    proxy = Contract.from_explorer(original, as_proxy_for=impl)
    implementation = Contract(impl)

    assert original.abi == proxy.abi
    assert original.address == proxy.address

    assert proxy.abi == implementation.abi
    assert proxy.address != implementation.address
예제 #6
0
def test_duplicate_alias(network):
    network.connect("mainnet")
    foo = Contract.from_explorer("0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3")
    bar = Contract.from_explorer("0x2157a7894439191e520825fe9399ab8655e0f708")

    foo.set_alias("foo")
    with pytest.raises(ValueError):
        bar.set_alias("foo")

    bar.set_alias("bar")
    foo.set_alias(None)
    bar.set_alias("foo")
예제 #7
0
def test_as_proxy_for(network):
    network.connect("mainnet")
    original = Contract.from_explorer("0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b")
    proxy = Contract.from_explorer(
        "0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b",
        as_proxy_for="0x97BD4Cc841FC999194174cd1803C543247a014fe",
    )
    implementation = Contract("0x97BD4Cc841FC999194174cd1803C543247a014fe")
    assert original.abi != proxy.abi
    assert original.address == proxy.address

    assert proxy.abi == implementation.abi
    assert proxy.address != implementation.address
예제 #8
0
def test_as_proxy_for(network):
    proxy = "0xAfE212AEDf1c8dCd0E470d73B3B4035D32A75Efd"
    impl = "0x098DCb095318A8B5321c5f2DB3fA04a55A780A20"
    network.connect("ropsten")

    original = Contract.from_explorer(proxy)
    proxy = Contract.from_explorer(proxy, as_proxy_for=impl)
    implementation = Contract(impl)

    assert original.abi == proxy.abi
    assert original.address == proxy.address

    assert proxy.abi == implementation.abi
    assert proxy.address != implementation.address
예제 #9
0
def test_as_proxy_for(network):
    network.connect("mainnet")
    original = Contract.from_explorer("0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b")
    proxy = Contract.from_explorer(
        "0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b",
        as_proxy_for="0x7b5e3521a049C8fF88e6349f33044c6Cc33c113c",
    )
    implementation = Contract("0x7b5e3521a049C8fF88e6349f33044c6Cc33c113c")

    assert original.abi == proxy.abi
    assert original.address == proxy.address

    assert proxy.abi == implementation.abi
    assert proxy.address != implementation.address
예제 #10
0
def test_as_proxy_for(network):
    network.connect("mainnet")
    original = Contract.from_explorer(
        "0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b")
    proxy = Contract.from_explorer(
        "0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b",
        as_proxy_for="0xAf601CbFF871d0BE62D18F79C31e387c76fa0374",
    )
    implementation = Contract("0xAf601CbFF871d0BE62D18F79C31e387c76fa0374")

    assert original.abi == proxy.abi
    assert original.address == proxy.address

    assert proxy.abi == implementation.abi
    assert proxy.address != implementation.address
예제 #11
0
def test_as_proxy_for(network):
    network.connect("mainnet")
    original = Contract.from_explorer(
        "0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b")
    proxy = Contract.from_explorer(
        "0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b",
        as_proxy_for="0x9d0a0443ff4bb04391655b8cd205683d9fa75550",
    )
    implementation = Contract("0x9d0a0443ff4bb04391655b8cd205683d9fa75550")

    assert original.abi == proxy.abi
    assert original.address == proxy.address

    assert proxy.abi == implementation.abi
    assert proxy.address != implementation.address
예제 #12
0
def test_from_explorer(network):
    network.connect("mainnet")
    contract = Contract.from_explorer("0x973e52691176d36453868d9d86572788d27041a9")

    assert contract._name == "DxToken"
    assert "pcMap" in contract._build
    assert len(contract._sources) == 1
예제 #13
0
def test_from_explorer_pre_422(network):
    network.connect("mainnet")
    contract = Contract.from_explorer(
        "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2")

    assert contract._name == "DSToken"
    assert "pcMap" not in contract._build
예제 #14
0
def test_from_explorer_vyper(network):
    network.connect("mainnet")
    contract = Contract.from_explorer(
        "0x2157a7894439191e520825fe9399ab8655e0f708")

    assert contract._name == "Vyper_contract"
    assert "pcMap" not in contract._build
예제 #15
0
def test_from_explorer_etc(network):
    network.connect("etc")
    with pytest.warns(BrownieCompilerWarning):
        contract = Contract.from_explorer(
            "0x085b0fdf115aa9e16ae1bddd396ce1f993c52220")

    assert contract._name == "ONEX"
예제 #16
0
def test_from_explorer(network):
    network.connect("mainnet")
    contract = Contract.from_explorer("0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3")

    assert contract._name == "LEO"
    assert "pcMap" in contract._build
    assert len(contract._sources) == 1
예제 #17
0
def test_retrieve_existing(network):
    network.connect("mainnet")
    with pytest.warns(BrownieCompilerWarning):
        new = Contract.from_explorer("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2")

    existing = Contract("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2")
    assert new == existing
예제 #18
0
def test_from_explorer_vyper_supported_010(network):
    network.connect("mainnet")

    # curve cDAI/cUSDC - `0.1.0-beta.16`
    contract = Contract.from_explorer("0x845838DF265Dcd2c412A1Dc9e959c7d08537f8a2")

    assert contract._name == "Vyper_contract"
    assert "pcMap" in contract._build
예제 #19
0
def test_from_explorer_only_abi(network):
    network.connect("mainnet")
    # uniswap DAI market - ABI is available but source is not
    with pytest.warns(BrownieCompilerWarning):
        contract = Contract.from_explorer("0x2a1530C4C41db0B0b2bB646CB5Eb1A67b7158667")

    assert contract._name == "UnknownContractName"
    assert "pcMap" not in contract._build
예제 #20
0
def test_from_explorer_vyper(network):
    network.connect("mainnet")
    with pytest.warns(BrownieCompilerWarning):
        contract = Contract.from_explorer(
            "0x2157a7894439191e520825fe9399ab8655e0f708")

    assert contract._name == "Vyper_contract"
    assert "pcMap" not in contract._build
예제 #21
0
def test_from_explorer_pre_422(network):
    network.connect("mainnet")

    # MKR, compiler version 0.4.18
    with pytest.warns(BrownieCompilerWarning):
        contract = Contract.from_explorer("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2")
    assert contract._name == "DSToken"
    assert "pcMap" not in contract._build
예제 #22
0
def test_from_explorer_vyper_supported_020(network):
    network.connect("mainnet")

    # curve yCRV gauge - `0.2.4`
    contract = Contract.from_explorer("0xFA712EE4788C042e2B7BB55E6cb8ec569C4530c1")

    assert contract._name == "Vyper_contract"
    assert "pcMap" in contract._build
예제 #23
0
def test_from_explorer_osx_pre_050(network, monkeypatch):
    network.connect("mainnet")
    monkeypatch.setattr("sys.platform", "darwin")
    installed = ["v0.5.8", "v0.5.7"]
    monkeypatch.setattr("solcx.get_installed_solc_versions", lambda: installed)

    # chainlink, compiler version 0.4.24
    contract = Contract.from_explorer("0xf79d6afbb6da890132f9d7c355e3015f15f3406f")
    assert "pcMap" not in contract._build
예제 #24
0
def test_alias(network):
    network.connect("mainnet")
    contract = Contract.from_explorer("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2")

    contract.set_alias("testalias")

    assert contract.alias == "testalias"
    assert Contract("testalias") == contract

    contract.set_alias(None)

    assert contract.alias is None
    with pytest.raises(ValueError):
        Contract("testalias")
예제 #25
0
def test_retrieve_existing(network):
    network.connect("mainnet")
    new = Contract.from_explorer("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2")

    existing = Contract("0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2")
    assert new == existing
예제 #26
0
def test_from_explorer_etc(network):
    network.connect("etc")
    contract = Contract.from_explorer("0x085b0fdf115aa9e16ae1bddd396ce1f993c52220")

    assert contract._name == "ONEX"
예제 #27
0
def test_from_explorer_unverified(network):
    network.connect("mainnet")
    with pytest.raises(ValueError):
        Contract.from_explorer("0x0000000000000000000000000000000000000000")
예제 #28
0
def test_from_explorer_deployment_disabled(network):
    network.connect("mainnet")
    address = "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e"
    Contract.from_explorer(address, persist=False)

    assert _get_deployment(address) == (None, None)