|
7 | 7 | from ape_ethereum.ecosystem import NETWORKS |
8 | 8 |
|
9 | 9 | from ape_foundry import FoundryNetworkConfig |
| 10 | +from ape_foundry.provider import FoundryForkProvider |
10 | 11 |
|
11 | 12 | TESTS_DIRECTORY = Path(__file__).parent |
12 | 13 | TEST_ADDRESS = "0xd8da6bf26964af9d7eed9e03e53415d37aa96045" |
@@ -183,6 +184,29 @@ def test_connect_to_polygon(networks, owner, contract_container): |
183 | 184 | assert isinstance(contract, ContractInstance) # Didn't fail |
184 | 185 |
|
185 | 186 |
|
| 187 | +@pytest.mark.fork |
| 188 | +def test_connect_light_client(mocker, networks, owner, contract_container): |
| 189 | + """ |
| 190 | + Ensures if we can't detect mismatch, it is OK. |
| 191 | + """ |
| 192 | + mock_network = mocker.MagicMock() |
| 193 | + provider = FoundryForkProvider(name="foundry", network=networks.ethereum.local) |
| 194 | + provider.network = mock_network |
| 195 | + mock_web3 = mocker.MagicMock() |
| 196 | + provider._web3 = mock_web3 |
| 197 | + |
| 198 | + # Set up a mock connection context for the upstream provider. |
| 199 | + mock_ctx = mocker.MagicMock() |
| 200 | + mock_upstream_provider = mocker.MagicMock() |
| 201 | + mock_ctx.__enter__.return_value = mock_upstream_provider |
| 202 | + mock_network.use_upstream_provider.return_value = mock_ctx |
| 203 | + |
| 204 | + # Make it fail like a light client might. |
| 205 | + mock_upstream_provider.get_block.side_effect = Exception |
| 206 | + |
| 207 | + provider.connect() # No error. |
| 208 | + |
| 209 | + |
186 | 210 | @pytest.mark.fork |
187 | 211 | @pytest.mark.parametrize("network,port", [("amoy", 9878), ("mainnet", 9879)]) |
188 | 212 | def test_provider_settings(networks, network, port): |
|
0 commit comments