#[tokio::test]
async fn test_serve_model_delegates_to_prepare_serve_state() {
let result = serve_model("127.0.0.1", 8080, "/nonexistent/model.xyz", false, false, true).await;
assert!(result.is_err());
let err = result.unwrap_err();
assert!(err.to_string().contains("Unsupported file extension"));
}
#[test]
fn test_serve_model_address_formats() {
let ipv4_cases = vec![("127.0.0.1", 8080), ("0.0.0.0", 3000), ("192.168.1.1", 80)];
for (host, port) in ipv4_cases {
let addr_str = format!("{}:{}", host, port);
let result: std::result::Result<std::net::SocketAddr, _> = addr_str.parse();
assert!(result.is_ok(), "IPv4 address parsing failed for {addr_str}");
}
let ipv6_addr: std::result::Result<std::net::SocketAddr, _> = "[::1]:8080".parse();
assert!(ipv6_addr.is_ok(), "IPv6 address parsing failed");
}
#[test]
fn test_prepared_server_with_demo_state() {
let state = crate::api::AppState::demo().expect("Failed to create demo state");
let prepared = PreparedServer {
state,
batch_mode_enabled: false,
model_type: ModelType::Gguf,
};
assert!(!prepared.batch_mode_enabled);
assert_eq!(prepared.model_type, ModelType::Gguf);
let debug = format!("{:?}", prepared);
assert!(debug.contains("batch_mode_enabled: false"));
}