apisix_admin_client/models/
consumer_group_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 ApisixConsumerGroup {
7 pub plugins: Option<Plugins>,
8 pub id: Option<String>,
9 pub desc: Option<String>,
10 pub update_time: Option<i64>,
11 pub create_time: Option<i64>,
12}
13
14
15#[cfg(test)]
17mod tests {
18 use serde_json::{to_string, to_string_pretty};
19 use super::*;
20 use tracing::{error, info};
21 use tracing_test::traced_test;
22 use crate::models::common::TypedItem;
23
24 #[traced_test]
25 #[tokio::test]
26 async fn test_parse_consumer_group_response() {
27 let nodes = r#"
28 {
29 "createdIndex": 173,
30 "key": "/apisix/consumer_groups/trust1team",
31 "value": {
32 "update_time": 1727786609,
33 "plugins": {
34 "limit-count": {
35 "time_window": 1,
36 "policy": "local",
37 "show_limit_quota_header": true,
38 "allow_degradation": false,
39 "rejected_code": 429,
40 "rejected_msg": "Request count limit reached, try again later",
41 "count": 10,
42 "key": "remote_addr",
43 "key_type": "var"
44 }
45 },
46 "id": "trust1team",
47 "desc": "Trust1Team",
48 "create_time": 1727786609
49 },
50 "modifiedIndex": 173
51 }"#;
52 let nodes: TypedItem<ApisixConsumerGroup> = serde_json::from_str(nodes).unwrap();
53 assert_eq!(nodes.key.unwrap(), "/apisix/consumer_groups/trust1team");
54 assert_eq!(nodes.value.clone().unwrap().id.unwrap(), "trust1team");
55 assert_eq!(nodes.value.clone().unwrap().desc.unwrap(), "Trust1Team");
56 assert_eq!(nodes.value.clone().unwrap().create_time.unwrap(), 1727786609);
57 assert_eq!(nodes.value.clone().unwrap().update_time.unwrap(), 1727786609);
58 }
59}
60