mod common;
use common::TlsMockServer;
use http_quik::{Client, Platform};
#[tokio::test]
async fn test_navigate_context_headers_over_tls_mock() -> Result<(), Box<dyn std::error::Error>> {
let server = TlsMockServer::start().await;
let port = server.addr.port();
let server_handle = tokio::spawn(async move {
server
.handle_next_h2(|req, mut respond| async move {
assert_eq!(
req.headers()
.get("sec-fetch-dest")
.unwrap()
.to_str()
.unwrap(),
"document"
);
assert_eq!(
req.headers()
.get("sec-fetch-mode")
.unwrap()
.to_str()
.unwrap(),
"navigate"
);
assert_eq!(
req.headers()
.get("sec-fetch-user")
.unwrap()
.to_str()
.unwrap(),
"?1"
);
assert_eq!(
req.headers()
.get("upgrade-insecure-requests")
.unwrap()
.to_str()
.unwrap(),
"1"
);
assert!(req
.headers()
.get("user-agent")
.unwrap()
.to_str()
.unwrap()
.contains("Chrome"));
let response = http::Response::builder().status(200).body(()).unwrap();
let _ = respond.send_response(response, true).unwrap();
})
.await;
});
let client = Client::builder()
.profile(http_quik::profile::chrome_134::profile(Platform::LinuxX64))
.danger_accept_invalid_certs(true)
.build()?;
let target_url = format!("https://127.0.0.1:{}/test", port);
let response = client.get(&target_url).await?;
assert_eq!(response.status().as_u16(), 200);
server_handle.await?;
Ok(())
}