#![allow(clippy::field_reassign_with_default, dead_code)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, PartialEq)]
struct TestUser {
name: String,
age: u32,
email: Option<String>,
}
#[test]
fn test_json_helper_basic_serialize() {
let user = TestUser {
name: "张三".to_string(),
age: 30,
email: Some("zhangsan@example.com".to_string()),
};
let json = serde_json::to_string(&user).expect("序列化成功");
assert!(json.contains("张三"));
assert!(json.contains("30"));
assert!(json.contains("zhangsan@example.com"));
}
#[test]
fn test_json_helper_basic_deserialize() {
let json_str = r#"{"name":"李四","age":25,"email":"lisi@example.com"}"#;
let user: TestUser = serde_json::from_str(json_str).expect("反序列化成功");
assert_eq!(user.name, "李四");
assert_eq!(user.age, 25);
assert_eq!(user.email.as_deref(), Some("lisi@example.com"));
}
#[test]
fn test_json_helper_optional_field() {
let json_str = r#"{"name":"王五","age":35}"#;
let user: TestUser = serde_json::from_str(json_str).expect("反序列化成功");
assert_eq!(user.name, "王五");
assert!(user.email.is_none());
}
#[test]
fn test_json_helper_nested_object() {
let json_str = r#"{
"user": {"name": "赵六", "age": 40},
"token": "abc123"
}"#;
let value: serde_json::Value = serde_json::from_str(json_str).expect("解析 JSON");
assert_eq!(value["user"]["name"], "赵六");
assert_eq!(value["token"], "abc123");
}
#[test]
fn test_json_helper_array_serialize() {
let users = vec![
TestUser {
name: "用户1".to_string(),
age: 20,
email: None,
},
TestUser {
name: "用户2".to_string(),
age: 25,
email: Some("user2@example.com".to_string()),
},
];
let json = serde_json::to_string(&users).expect("序列化成功");
assert!(json.contains("用户1"));
assert!(json.contains("用户2"));
}
#[test]
fn test_ssl_config_basic() {
let body = serde_json::json!({
"ssl_enabled": true,
"key_store_path": "/path/to/keystore.jks",
"key_store_password": "changeit",
"trust_store_path": "/path/to/truststore.jks"
});
assert!(body["ssl_enabled"].as_bool().unwrap());
assert_eq!(body["key_store_password"], "changeit");
}
#[test]
fn test_http_client_builder_config() {
let body = serde_json::json!({
"connection_timeout": 5000,
"read_timeout": 10000,
"max_total": 200,
"max_per_route": 20
});
assert_eq!(body["connection_timeout"], 5000);
assert_eq!(body["read_timeout"], 10000);
assert_eq!(body["max_total"], 200);
}
#[test]
fn test_http_client_builder_proxy_config() {
let body = serde_json::json!({
"proxy_host": "proxy.example.com",
"proxy_port": 8080,
"proxy_username": "proxy_user",
"proxy_password": "proxy_pass"
});
assert_eq!(body["proxy_host"], "proxy.example.com");
assert_eq!(body["proxy_port"], 8080);
}