use ccs_proxy::{ProviderKind, ServeConfig, serve};
use tempfile::tempdir;
use url::Url;
#[tokio::test]
async fn returns_502_when_upstream_unreachable() {
let dir = tempdir().unwrap();
let cfg = ServeConfig::new(
ProviderKind::Claude,
Url::parse("http://127.0.0.1:1").unwrap(),
dir.path().to_path_buf(),
);
let handle = serve(cfg).await.expect("serve");
let resp = reqwest::Client::new()
.post(format!(
"http://127.0.0.1:{}/v1/messages",
handle.proxy_port
))
.header("content-type", "application/json")
.body(r#"{"model":"claude-sonnet-4-6","messages":[]}"#)
.send()
.await
.unwrap();
assert_eq!(resp.status().as_u16(), 502);
let body: serde_json::Value = resp.json().await.unwrap();
assert_eq!(body["error"]["type"], "upstream_unreachable");
handle.shutdown().await;
}