Mountain/Binary/Build/
DnsCommands.rs1
2pub mod DnsHealthStatus;
12
13pub mod DnsResolutionResult;
14
15pub mod DnsServerInfo;
16
17pub mod ForwardAllowList;
18
19pub mod StartupTime;
20
21pub mod ZoneInfo;
22
23pub mod ZoneRecord;
24
25pub mod dns_get_forward_allowlist;
26
27pub mod dns_get_health_status;
28
29pub mod dns_get_server_info;
30
31pub mod dns_get_zone_info;
32
33pub mod dns_health_check;
34
35pub mod dns_resolve;
36
37pub mod dns_test_resolution;
38
39#[cfg(test)]
40mod tests {
41
42 use super::{
43 DnsHealthStatus::DnsHealthStatus,
44 DnsResolutionResult::DnsResolutionResult,
45 DnsServerInfo::DnsServerInfo,
46 ForwardAllowList::ForwardAllowList,
47 ZoneRecord::ZoneRecord,
48 };
49
50 #[test]
51 fn DnsServerInfoSerialization() {
52 let info = DnsServerInfo { port:5380, is_running:true, startup_time:"2024-01-01T00:00:00Z".to_string() };
53
54 let json = serde_json::to_string(&info).unwrap();
55
56 let deserialized:DnsServerInfo = serde_json::from_str(&json).unwrap();
57
58 assert_eq!(deserialized.port, 5380);
59
60 assert_eq!(deserialized.is_running, true);
61
62 assert_eq!(deserialized.startup_time, "2024-01-01T00:00:00Z");
63 }
64
65 #[test]
66 fn ZoneRecordSerialization() {
67 let record = ZoneRecord {
68 name:"code.land.playform.cloud.".to_string(),
69
70 record_type:"A".to_string(),
71
72 ttl:3600,
73
74 data:"127.0.0.1".to_string(),
75 };
76
77 let json = serde_json::to_string(&record).unwrap();
78
79 let deserialized:ZoneRecord = serde_json::from_str(&json).unwrap();
80
81 assert_eq!(deserialized.name, "code.land.playform.cloud.");
82
83 assert_eq!(deserialized.record_type, "A");
84
85 assert_eq!(deserialized.ttl, 3600);
86
87 assert_eq!(deserialized.data, "127.0.0.1");
88 }
89
90 #[test]
91 fn ForwardAllowListSerialization() {
92 let allowlist = ForwardAllowList { domains:vec!["update.land.playform.cloud.".to_string()] };
93
94 let json = serde_json::to_string(&allowlist).unwrap();
95
96 let deserialized:ForwardAllowList = serde_json::from_str(&json).unwrap();
97
98 assert_eq!(deserialized.domains.len(), 1);
99
100 assert_eq!(deserialized.domains[0], "update.land.playform.cloud.");
101 }
102
103 #[test]
104 fn DnsHealthStatusSerialization() {
105 let health = DnsHealthStatus {
106 server_status:"running".to_string(),
107
108 zone_status:"active".to_string(),
109
110 forward_status:"active".to_string(),
111
112 last_error:None,
113 };
114
115 let json = serde_json::to_string(&health).unwrap();
116
117 let deserialized:DnsHealthStatus = serde_json::from_str(&json).unwrap();
118
119 assert_eq!(deserialized.server_status, "running");
120
121 assert_eq!(deserialized.zone_status, "active");
122
123 assert_eq!(deserialized.forward_status, "active");
124
125 assert!(deserialized.last_error.is_none());
126 }
127
128 #[test]
129 fn DnsResolutionResultSerialization() {
130 let result = DnsResolutionResult {
131 domain:"code.land.playform.cloud.".to_string(),
132
133 record_type:"A".to_string(),
134
135 addresses:vec!["127.0.0.1".to_string()],
136
137 ttl:3600,
138
139 succeeded:true,
140
141 error:None,
142 };
143
144 let json = serde_json::to_string(&result).unwrap();
145
146 let deserialized:DnsResolutionResult = serde_json::from_str(&json).unwrap();
147
148 assert_eq!(deserialized.domain, "code.land.playform.cloud.");
149
150 assert_eq!(deserialized.record_type, "A");
151
152 assert_eq!(deserialized.addresses.len(), 1);
153
154 assert_eq!(deserialized.addresses[0], "127.0.0.1");
155
156 assert_eq!(deserialized.ttl, 3600);
157
158 assert!(deserialized.succeeded);
159
160 assert!(deserialized.error.is_none());
161 }
162}