uptrakit_openapi_client/
system_enrollment_tokens.rs1use crate::Result;
2use crate::UptrakitClient;
3use crate::types_impl::pagination::PaginatedResponse;
4use crate::types_impl::system_enrollment_tokens::{
5 CreateSystemEnrollmentTokenRequest, ListSystemEnrollmentTokensQuery,
6 SystemEnrollmentTokenCreatedResponse, SystemEnrollmentTokenResponse,
7};
8use uuid::Uuid;
9
10impl UptrakitClient {
11 pub async fn create_system_enrollment_token(
16 &self,
17 req: &CreateSystemEnrollmentTokenRequest,
18 ) -> Result<SystemEnrollmentTokenCreatedResponse> {
19 self.post_json(crate::paths::system_enrollment_tokens::BASE, req)
20 .await
21 }
22
23 pub async fn list_system_enrollment_tokens(
25 &self,
26 query: &ListSystemEnrollmentTokensQuery,
27 ) -> Result<PaginatedResponse<SystemEnrollmentTokenResponse>> {
28 self.get_with_query(crate::paths::system_enrollment_tokens::BASE, query)
29 .await
30 }
31
32 pub async fn list_all_system_enrollment_tokens(
34 &self,
35 query: &ListSystemEnrollmentTokensQuery,
36 ) -> Result<Vec<SystemEnrollmentTokenResponse>> {
37 self.fetch_all_pages(crate::paths::system_enrollment_tokens::BASE, query)
38 .await
39 }
40
41 pub async fn get_system_enrollment_token(
43 &self,
44 id: &Uuid,
45 ) -> Result<SystemEnrollmentTokenResponse> {
46 self.get(&crate::paths::system_enrollment_tokens::by_id(id))
47 .await
48 }
49
50 pub async fn revoke_system_enrollment_token(&self, id: &Uuid) -> Result<()> {
52 self.delete(&crate::paths::system_enrollment_tokens::by_id(id))
53 .await
54 }
55}
56
57#[cfg(test)]
58mod tests {
59 use crate::types_impl::system_enrollment_tokens::{
60 CreateSystemEnrollmentTokenRequest, ListSystemEnrollmentTokensQuery,
61 };
62
63 #[test]
64 fn create_request_serialization() {
65 let req = CreateSystemEnrollmentTokenRequest {
66 name: "MQTT Bridge Token".to_string(),
67 max_uses: Some(5),
68 expires_in_seconds: Some(86400),
69 };
70 let json = serde_json::to_string(&req).expect("serialize");
71 assert!(json.contains("MQTT Bridge Token"));
72 let parsed: CreateSystemEnrollmentTokenRequest =
73 serde_json::from_str(&json).expect("deserialize");
74 assert_eq!(parsed.name, "MQTT Bridge Token");
75 assert_eq!(parsed.max_uses, Some(5));
76 assert_eq!(parsed.expires_in_seconds, Some(86400));
77 }
78
79 #[test]
80 fn list_query_serialization_with_params() {
81 let query = ListSystemEnrollmentTokensQuery {
82 page: Some(2),
83 per_page: Some(25),
84 };
85 let qs = serde_urlencoded::to_string(&query).expect("serialize");
86 assert!(qs.contains("page=2"));
87 assert!(qs.contains("per_page=25"));
88 }
89
90 #[test]
91 fn list_query_serialization_empty() {
92 let query = ListSystemEnrollmentTokensQuery {
93 page: None,
94 per_page: None,
95 };
96 let qs = serde_urlencoded::to_string(&query).expect("serialize");
97 assert!(qs.is_empty());
98 }
99}