apisix_admin_client/models/
consumer_responses.rs1use serde::{Deserialize, Serialize};
2use crate::models::Plugins;
3
4#[serde_with::skip_serializing_none]
5#[derive(Default, Debug, Clone, Serialize, Deserialize)]
6pub struct ApisixConsumer {
7 pub update_time: Option<i64>,
8 pub plugins: Option<Plugins>,
9 pub username: Option<String>,
10 pub desc: Option<String>,
11 pub create_time: Option<i64>,
12 pub group_id: Option<String>,
13}
14
15
16#[cfg(test)]
18mod tests {
19 use serde_json::{to_string, to_string_pretty};
20 use super::*;
21 use tracing::{error, info};
22 use tracing_test::traced_test;
23 use crate::models::common::TypedItem;
24
25 #[traced_test]
26 #[tokio::test]
27 async fn test_parse_consumer_response() {
28 let nodes = r#"
29 {
30 "createdIndex": 223,
31 "key": "/apisix/consumers/readmycards",
32 "value": {
33 "update_time": 1727847549,
34 "plugins": {
35 "key-auth": {
36 "key": "7b034e79-2cb9-4e17-af10-ff1aad082307"
37 }
38 },
39 "username": "readmycards",
40 "create_time": 1727847549,
41 "group_id": "trust1team"
42 },
43 "modifiedIndex": 223
44 }"#;
45 let nodes: TypedItem<ApisixConsumer> = serde_json::from_str(nodes).unwrap();
46 assert_eq!(nodes.key.unwrap(), "/apisix/consumers/readmycards");
47 assert_eq!(nodes.value.clone().unwrap().username.unwrap(), "readmycards");
48 assert_eq!(nodes.value.clone().unwrap().group_id.unwrap(), "trust1team");
49 assert_eq!(nodes.value.clone().unwrap().create_time.unwrap(), 1727847549);
50 assert_eq!(nodes.value.clone().unwrap().update_time.unwrap(), 1727847549);
51 }
52}
53