apisix_admin_client/models/
consumer_group_responses.rs

1use 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// region: tests
16#[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// endregion: tests