• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

safe-global / safe-eth-py / 13372705920

17 Feb 2025 02:37PM UTC coverage: 93.93% (+0.06%) from 93.871%
13372705920

push

github

web-flow
Add addresses 1.3.0 for chain EVM_ON_FLOW_TESTNET (#1567)

* Add new explorer client URL: https://evm-testnet.flowscan.io/api/v2

* Add new master copy address 0x69f4D1788e39c87893C980c06EdF4b7f686e2938

* Add new master copy address 0xfb1bffC9d739B8D520DaF37dF666da4C687191EA

* Add new proxy address 0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC

* Apply linter fixes

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

9486 of 10099 relevant lines covered (93.93%)

0.94 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

91.18
/safe_eth/eth/tests/clients/test_etherscan_client.py
1
import os
1✔
2

3
from django.test import TestCase
1✔
4

5
import pytest
1✔
6

7
from ... import EthereumNetwork
1✔
8
from ...clients import EtherscanClient, EtherscanRateLimitError
1✔
9
from .mocks import etherscan_multisend_abi, sourcify_safe_metadata
1✔
10

11

12
class TestEtherscanClient(TestCase):
1✔
13
    @classmethod
1✔
14
    def get_etherscan_api(cls, network: EthereumNetwork):
1✔
15
        etherscan_api_key_variable_name = "ETHERSCAN_API_KEY"
1✔
16
        etherscan_api_key = os.environ.get(etherscan_api_key_variable_name)
1✔
17
        if not etherscan_api_key:
1✔
18
            pytest.skip(f"{etherscan_api_key_variable_name} needs to be defined")
×
19

20
        return EtherscanClient(network, api_key=etherscan_api_key)
1✔
21

22
    @pytest.mark.xfail(reason="Test might fail due to API key limits, we don't retry")
1✔
23
    def test_etherscan_get_abi(self):
1✔
24
        try:
1✔
25
            etherscan_api = self.get_etherscan_api(EthereumNetwork.MAINNET)
1✔
26
            safe_master_copy_abi = sourcify_safe_metadata["output"]["abi"]
1✔
27
            safe_master_copy_address = "0x6851D6fDFAfD08c0295C392436245E5bc78B0185"
1✔
28
            self.assertEqual(
1✔
29
                etherscan_api.get_contract_abi(safe_master_copy_address),
30
                safe_master_copy_abi,
31
            )
32

33
            contract_metadata = etherscan_api.get_contract_metadata(
1✔
34
                safe_master_copy_address
35
            )
36
            self.assertEqual(contract_metadata.name, "GnosisSafe")
1✔
37
            self.assertEqual(contract_metadata.abi, safe_master_copy_abi)
1✔
38

39
            random_address = "0xaE32496491b53841efb51829d6f886387708F99a"
1✔
40
            self.assertIsNone(etherscan_api.get_contract_abi(random_address))
1✔
41
            self.assertIsNone(etherscan_api.get_contract_metadata(random_address))
1✔
42
        except EtherscanRateLimitError:
×
43
            self.skipTest("Etherscan rate limit reached")
×
44

45
    @pytest.mark.xfail(reason="Test might fail due to third-party service issues")
1✔
46
    def test_etherscan_get_abi_zksync(self):
1✔
47
        multisend_address = "0x0dFcccB95225ffB03c6FBB2559B530C2B7C8A912"
1✔
48
        etherscan_api = self.get_etherscan_api(EthereumNetwork(324))
1✔
49
        self.assertEqual(
1✔
50
            etherscan_api.get_contract_abi(multisend_address),
51
            etherscan_multisend_abi,
52
        )
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc