apisix_admin_client/models/
mod.rs

1pub mod common;
2pub mod ctrl_responses;
3pub mod plugins;
4mod admin_upstream_responses;
5mod admin_upstream_requests;
6mod admin_service_requests;
7mod admin_service_responses;
8mod admin_route_requests;
9mod admin_route_responses;
10mod consumer_group_requests;
11mod consumer_group_responses;
12mod consumer_requests;
13mod consumer_responses;
14
15pub use admin_upstream_requests::*;
16pub use admin_upstream_responses::*;
17pub use admin_service_requests::*;
18pub use admin_service_responses::*;
19pub use admin_route_requests::*;
20pub use admin_route_responses::*;
21pub use consumer_group_requests::*;
22pub use consumer_group_responses::*;
23pub use consumer_requests::*;
24pub use consumer_responses::*;
25pub use plugins::*;
26use rand::distr::Alphanumeric;
27
28/// ID's as a text string must be of a length between 1 and 64 characters
29/// and they should only contain uppercase, lowercase, numbers
30/// and no special characters apart from dashes ( - ), periods ( . ) and underscores ( _ ).
31/// For integer values they simply must have a minimum character count of 1.
32pub (super) fn generate_identifier() -> String {
33    use rand::Rng;
34    format!("gen-{}", rand::thread_rng()
35        .sample_iter(&Alphanumeric)
36        .take(12)
37        .map(char::from)
38        .collect::<String>())
39}
40
41#[cfg(test)]
42mod tests {
43    use super::*;
44    use tracing::{error, info};
45    use tracing_test::traced_test;
46    use crate::models::admin_upstream_requests::UpstreamType;
47
48    #[traced_test]
49    #[tokio::test]
50    async fn test_generate_id() {
51        let id = generate_identifier();
52        info!("Generated id: {}", id);
53        assert_eq!(id.len(), 16);
54    }
55
56    #[traced_test]
57    #[tokio::test]
58    async fn test_enum_case() {
59        let mut t = UpstreamType::roundrobin;
60        info!("Upstream type [roundrobin]: {}", t);
61        assert_eq!(t.to_string(), "roundrobin");
62        t = UpstreamType::least_conn;
63        info!("Upstream type [least_conn]: {}", t);
64        assert_eq!(t.to_string(), "least_conn");
65    }
66}