#![allow(clippy::field_reassign_with_default, dead_code)]
use wx_rust_open::bean::*;
#[test]
fn test_authorizer_access_token_from_json() {
let json_str = r#"{
"authorizer_access_token": "ACCESS_TOKEN_12345",
"authorizer_refresh_token": "REFRESH_TOKEN_12345",
"expires_in": 7200
}"#;
let token = WxOpenAuthorizerAccessToken::from_json(json_str).expect("解析授权方 token");
assert_eq!(token.authorizer_access_token, "ACCESS_TOKEN_12345");
assert_eq!(token.authorizer_refresh_token, "REFRESH_TOKEN_12345");
assert_eq!(token.expires_in, 7200);
}
#[test]
fn test_authorizer_access_token_methods() {
let json_str = r#"{
"authorizer_access_token": "TOKEN_ABC",
"authorizer_refresh_token": "REFRESH_ABC",
"expires_in": 3600
}"#;
let token = WxOpenAuthorizerAccessToken::from_json(json_str).expect("解析");
assert_eq!(token.authorizer_access_token(), "TOKEN_ABC");
assert_eq!(token.authorizer_refresh_token(), "REFRESH_ABC");
assert_eq!(token.expires_in(), 3600);
}
#[test]
fn test_authorizer_access_token_roundtrip() {
let json_str = r#"{
"authorizer_access_token": "TOKEN_XYZ",
"authorizer_refresh_token": "REFRESH_XYZ",
"expires_in": 7200
}"#;
let token = WxOpenAuthorizerAccessToken::from_json(json_str).expect("解析");
let serialized = serde_json::to_string(&token).expect("序列化");
let token2: WxOpenAuthorizerAccessToken = serde_json::from_str(&serialized).expect("反序列化");
assert_eq!(
token.authorizer_access_token,
token2.authorizer_access_token
);
assert_eq!(
token.authorizer_refresh_token,
token2.authorizer_refresh_token
);
assert_eq!(token.expires_in, token2.expires_in);
}
#[test]
fn test_component_access_token_from_json() {
let json_str = r#"{
"component_access_token": "COMPONENT_TOKEN_12345",
"expires_in": 7200
}"#;
let token = WxOpenComponentAccessToken::from_json(json_str).expect("解析 component token");
assert_eq!(token.component_access_token, "COMPONENT_TOKEN_12345");
assert_eq!(token.expires_in, 7200);
}
#[test]
fn test_component_access_token_methods() {
let json_str = r#"{
"component_access_token": "COMP_TOKEN_ABC",
"expires_in": 3600
}"#;
let token = WxOpenComponentAccessToken::from_json(json_str).expect("解析");
assert_eq!(token.component_access_token(), "COMP_TOKEN_ABC");
assert_eq!(token.expires_in(), 3600);
}
#[test]
fn test_component_access_token_roundtrip() {
let json_str = r#"{
"component_access_token": "COMP_TOKEN_XYZ",
"expires_in": 7200
}"#;
let token = WxOpenComponentAccessToken::from_json(json_str).expect("解析");
let serialized = serde_json::to_string(&token).expect("序列化");
let token2: WxOpenComponentAccessToken = serde_json::from_str(&serialized).expect("反序列化");
assert_eq!(token.component_access_token, token2.component_access_token);
assert_eq!(token.expires_in, token2.expires_in);
}
#[test]
fn test_open_create_result_from_json() {
let json_str = r#"{
"open_appid": "wx_open_001",
"errcode": "0",
"errmsg": "ok"
}"#;
let result = WxOpenCreateResult::from_json(json_str).expect("解析创建结果");
assert_eq!(result.open_appid, "wx_open_001");
assert_eq!(result.errcode, "0");
assert_eq!(result.errmsg, "ok");
}
#[test]
fn test_open_create_result_error() {
let json_str = r#"{
"open_appid": "",
"errcode": "40001",
"errmsg": "invalid credential"
}"#;
let result = WxOpenCreateResult::from_json(json_str).expect("解析错误结果");
assert_eq!(result.open_appid, "");
assert_eq!(result.errcode, "40001");
assert_eq!(result.errmsg, "invalid credential");
}
#[test]
fn test_open_create_result_roundtrip() {
let json_str = r#"{
"open_appid": "wx_open_002",
"errcode": "0",
"errmsg": "ok"
}"#;
let result = WxOpenCreateResult::from_json(json_str).expect("解析");
let serialized = serde_json::to_string(&result).expect("序列化");
let result2: WxOpenCreateResult = serde_json::from_str(&serialized).expect("反序列化");
assert_eq!(result, result2);
}
#[test]
fn test_open_get_result_from_json() {
let json_str = r#"{
"errcode": "0",
"errmsg": "ok",
"open_appid": "wx_open_001"
}"#;
let result = WxOpenGetResult::from_json(json_str).expect("解析获取结果");
assert_eq!(result.errcode, "0");
assert_eq!(result.errmsg, "ok");
assert_eq!(result.open_appid, "wx_open_001");
}
#[test]
fn test_open_get_result_roundtrip() {
let json_str = r#"{
"errcode": "0",
"errmsg": "ok",
"open_appid": "wx_open_002"
}"#;
let result = WxOpenGetResult::from_json(json_str).expect("解析");
let serialized = serde_json::to_string(&result).expect("序列化");
let result2: WxOpenGetResult = serde_json::from_str(&serialized).expect("反序列化");
assert_eq!(result, result2);
}
#[test]
fn test_open_get_result_default() {
let json_str = r#"{}"#;
let result = WxOpenGetResult::from_json(json_str).expect("解析空 JSON");
assert_eq!(result.errcode, "");
assert_eq!(result.errmsg, "");
assert_eq!(result.open_appid, "");
}
#[test]
fn test_open_ma_code_template_from_json() {
let json_str = r#"{
"draftId": 123456,
"templateId": 789012,
"userVersion": "1.0.0",
"userDesc": "初始版本",
"templateType": 0,
"createTime": 1627800000,
"sourceMiniProgramAppid": "wx_source_001",
"sourceMiniProgram": "源小程序",
"auditScene": 0,
"auditStatus": 0,
"reason": "",
"developer": "开发者"
}"#;
let template: WxOpenMaCodeTemplate = serde_json::from_str(json_str).expect("解析代码模板");
assert_eq!(template.draft_id, 123456);
assert_eq!(template.template_id, 789012);
assert_eq!(template.user_version, "1.0.0");
assert_eq!(template.user_desc, "初始版本");
assert_eq!(template.template_type, 0);
assert_eq!(template.create_time, 1627800000);
assert_eq!(template.source_mini_program_appid, "wx_source_001");
assert_eq!(template.source_mini_program, "源小程序");
assert_eq!(template.audit_scene, 0);
assert_eq!(template.audit_status, 0);
assert_eq!(template.reason, "");
assert_eq!(template.developer, "开发者");
}
#[test]
fn test_open_ma_code_template_roundtrip() {
let json_str = r#"{
"draftId": 111111,
"templateId": 222222,
"userVersion": "2.0.0",
"userDesc": "测试版本",
"templateType": 1,
"createTime": 1627886400,
"sourceMiniProgramAppid": "wx_source_002",
"sourceMiniProgram": "测试小程序",
"auditScene": 1,
"auditStatus": 1,
"reason": "审核中",
"developer": "测试开发者"
}"#;
let template: WxOpenMaCodeTemplate = serde_json::from_str(json_str).expect("解析");
let serialized = serde_json::to_string(&template).expect("序列化");
let template2: WxOpenMaCodeTemplate = serde_json::from_str(&serialized).expect("反序列化");
assert_eq!(template, template2);
}
#[test]
fn test_open_ma_code_template_alias() {
let json_camel = r#"{
"draftId": 100,
"templateId": 200,
"userVersion": "1.0",
"userDesc": "desc",
"templateType": 0,
"createTime": 1000,
"sourceMiniProgramAppid": "wx1",
"sourceMiniProgram": "mp1",
"auditScene": 0,
"auditStatus": 0,
"reason": "",
"developer": "dev"
}"#;
let template: WxOpenMaCodeTemplate = serde_json::from_str(json_camel).expect("解析 camelCase");
assert_eq!(template.draft_id, 100);
assert_eq!(template.template_id, 200);
}
#[test]
fn test_open_ma_code_template_default() {
let json_str = r#"{}"#;
let template: WxOpenMaCodeTemplate = serde_json::from_str(json_str).expect("解析空 JSON");
assert_eq!(template.draft_id, 0);
assert_eq!(template.template_id, 0);
assert_eq!(template.user_version, "");
assert_eq!(template.user_desc, "");
assert_eq!(template.template_type, 0);
}