v1.1.0-beta.1: add proxy integration tests (62 tests, all green)
Nine end-to-end tests for the proxy feature: 6 network tests exercising every proxy code path through a real hyper forward proxy (TestProxy) and a mockito origin, plus 3 CLI tests verifying flag parsing and error handling. TestProxy binds to 127.0.0.1:0, forwards in absolute-form, counts requests via an atomic so we can assert traffic actually traversed the proxy. Key issues resolved during implementation: - ENV_MUTEX serializes all tests that mutate HTTPS_PROXY/HTTP_PROXY in both the unit test module and the integration suite. Without it, parallel test execution within a single binary produces nondeterministic failures. - reqwest's blocking::Client owns an internal tokio Runtime. Dropping it inside a #[tokio::test] async fn panics on tokio >= 1.49. All reqwest work runs inside spawn_blocking so the Client drops on a thread-pool thread where that's permitted. - service_fn's closure can't carry a return-type annotation, and async blocks don't support one either. The handler is extracted to a named async fn (proxy_handler) so the compiler can see the concrete Result<Response, Infallible> and satisfy serve_connection's Error bound.
This commit is contained in:
11
Cargo.toml
11
Cargo.toml
@@ -63,6 +63,17 @@ assert_cmd = "2.0"
|
||||
predicates = "3.1"
|
||||
insta = "1.41"
|
||||
|
||||
# Proxy integration tests: mockito is the mock origin server; hyper + friends
|
||||
# are the forward proxy. All three are already in Cargo.lock as transitive
|
||||
# deps of reqwest — we're just promoting them to explicit dev-deps with the
|
||||
# features we actually need.
|
||||
mockito = "1.7"
|
||||
hyper = { version = "1", features = ["server", "http1", "client"] }
|
||||
hyper-util = { version = "0.1", features = ["tokio", "client-legacy", "http1"] }
|
||||
http-body-util = "0.1"
|
||||
bytes = "1"
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
|
||||
[build-dependencies]
|
||||
ureq = { version = "2.10", features = ["json"] }
|
||||
zip = "2.2"
|
||||
|
||||
Reference in New Issue
Block a user