apisix_admin_client/models/
admin_service_responses.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use crate::models::Plugins;
4
5#[serde_with::skip_serializing_none]
6#[derive(Default, Debug, Clone, Serialize, Deserialize)]
7pub struct ApisixService {
8 pub update_time: Option<i64>,
9 pub create_time: Option<i64>,
10 pub plugins: Plugins,
11 pub id: Option<Value>,
12 pub upstream_id: Option<Value>,
13 pub name: Option<String>,
14 pub desc: Option<String>,
15 pub enable_websocket: Option<bool>,
16}
17
18#[cfg(test)]
20mod tests {
21 use serde_json::{to_string, to_string_pretty};
22 use super::*;
23 use tracing::{error, info};
24 use tracing_test::traced_test;
25 use crate::models::common::TypedItem;
26
27 #[traced_test]
28 #[tokio::test]
29 async fn test_parse_service_response() {
30 let nodes = r#"
31 {
32 "createdIndex": 17,
33 "key": "/apisix/services/100",
34 "value": {
35 "update_time": 1727660558,
36 "create_time": 1727660558,
37 "plugins": {
38 "key-auth": {
39 "hide_credentials": false,
40 "query": "apikey",
41 "header": "apikey"
42 }
43 },
44 "id": "100",
45 "upstream_id": "1",
46 "name": "t1c-auth-api-service",
47 "desc": "Authentication API Service",
48 "enable_websocket": false
49 },
50 "modifiedIndex": 17
51 }"#;
52 let nodes: TypedItem<ApisixService> = serde_json::from_str(nodes).unwrap();
53 assert_eq!(nodes.key.unwrap(), "/apisix/services/100");
54 assert_eq!(nodes.value.clone().unwrap().id.unwrap(), "100");
55 assert_eq!(nodes.value.clone().unwrap().upstream_id.unwrap(), "1");
56 assert_eq!(nodes.value.clone().unwrap().name.unwrap(), "t1c-auth-api-service");
57 assert_eq!(nodes.value.clone().unwrap().desc.unwrap(), "Authentication API Service");
58 assert_eq!(nodes.value.clone().unwrap().enable_websocket.unwrap(), false);
59 assert_eq!(nodes.value.clone().unwrap().plugins.key_auth.clone().unwrap().hide_credentials.unwrap(), false);
60 assert_eq!(nodes.value.clone().unwrap().plugins.key_auth.clone().unwrap().query.unwrap(), "apikey");
61 assert_eq!(nodes.value.clone().unwrap().plugins.key_auth.clone().unwrap().header.unwrap(), "apikey");
62 }
63}
64