@@ -39,6 +39,38 @@ def test_fork_upstream_provider(networks, mock_geth_sepolia, geth_provider, mock
3939 del geth_provider .provider_settings ["uri" ]
4040
4141
42+ @geth_process_test
43+ def test_fork_upstream_provider_request_headers (
44+ project , networks , mock_geth_sepolia , mock_fork_provider
45+ ):
46+ config = {
47+ "request_headers" : {"X-Top-Level" : "base" },
48+ "ethereum" : {
49+ "request_headers" : {"X-Ecosystem" : "ethereum" },
50+ "sepolia" : {
51+ "request_headers" : {
52+ "Authorization" : "Bearer test-token" ,
53+ "X-Network" : "sepolia" ,
54+ }
55+ },
56+ },
57+ "node" : {"request_headers" : {"X-Provider" : "node" }},
58+ }
59+ with project .temp_config (** config ):
60+ with networks .fork ():
61+ call = mock_fork_provider .partial_call
62+
63+ settings = call [1 ]["provider_settings" ]["fork" ]["ethereum" ]["sepolia" ]
64+ headers = settings ["upstream_provider_request_headers" ]
65+ assert headers ["Authorization" ] == "Bearer test-token"
66+ assert headers ["X-Top-Level" ] == "base"
67+ assert headers ["X-Ecosystem" ] == "ethereum"
68+ assert headers ["X-Network" ] == "sepolia"
69+ assert headers ["X-Provider" ] == "node"
70+ assert headers ["Content-Type" ] == "application/json"
71+ assert headers ["User-Agent" ].startswith ("Ape/" )
72+
73+
4274# NOTE: Test is flakey because random URLs may be offline when test runs; avoid CI failure.
4375@pytest .mark .flaky (reruns = 5 )
4476@geth_process_test
0 commit comments