uptrakit_openapi_client/
enrollment_tokens.rs1use crate::Result;
2use crate::UptrakitClient;
3use crate::types_impl::enrollment_tokens::{
4 CreateEnrollmentTokenRequest, EnrollmentTokenCreatedResponse, EnrollmentTokenResponse,
5 ListEnrollmentTokensQuery,
6};
7use crate::types_impl::pagination::PaginatedResponse;
8use uuid::Uuid;
9
10impl UptrakitClient {
11 pub async fn create_enrollment_token(
13 &self,
14 req: &CreateEnrollmentTokenRequest,
15 ) -> Result<EnrollmentTokenCreatedResponse> {
16 self.post_json(crate::paths::enrollment_tokens::BASE, req)
17 .await
18 }
19
20 pub async fn list_enrollment_tokens(
22 &self,
23 query: &ListEnrollmentTokensQuery,
24 ) -> Result<PaginatedResponse<EnrollmentTokenResponse>> {
25 self.get_with_query(crate::paths::enrollment_tokens::BASE, query)
26 .await
27 }
28
29 pub async fn list_all_enrollment_tokens(
31 &self,
32 query: &ListEnrollmentTokensQuery,
33 ) -> Result<Vec<EnrollmentTokenResponse>> {
34 self.fetch_all_pages(crate::paths::enrollment_tokens::BASE, query)
35 .await
36 }
37
38 pub async fn get_enrollment_token(&self, id: &Uuid) -> Result<EnrollmentTokenResponse> {
40 self.get(&crate::paths::enrollment_tokens::by_id(id)).await
41 }
42
43 pub async fn revoke_enrollment_token(&self, id: &Uuid) -> Result<()> {
45 self.delete(&crate::paths::enrollment_tokens::by_id(id))
46 .await
47 }
48}
49
50#[cfg(test)]
51mod tests {
52 use crate::types_impl::enrollment_tokens::{
53 CreateEnrollmentTokenRequest, ListEnrollmentTokensQuery,
54 };
55
56 #[test]
57 fn create_request_serialization() {
58 let req = CreateEnrollmentTokenRequest {
59 name: "CI Token".to_string(),
60 allowed_capabilities: Some(vec!["software_discovery".to_string()]),
61 max_uses: Some(10),
62 expires_in_seconds: Some(3600),
63 };
64 let json = serde_json::to_string(&req).expect("serialize");
65 assert!(json.contains("CI Token"));
66 assert!(json.contains("software_discovery"));
67 let parsed: CreateEnrollmentTokenRequest =
68 serde_json::from_str(&json).expect("deserialize");
69 assert_eq!(parsed.name, "CI Token");
70 assert_eq!(parsed.max_uses, Some(10));
71 }
72
73 #[test]
74 fn list_query_serialization_with_params() {
75 let query = ListEnrollmentTokensQuery {
76 page: Some(2),
77 per_page: Some(25),
78 };
79 let qs = serde_urlencoded::to_string(&query).expect("serialize");
80 assert!(qs.contains("page=2"));
81 assert!(qs.contains("per_page=25"));
82 }
83
84 #[test]
85 fn list_query_serialization_empty() {
86 let query = ListEnrollmentTokensQuery {
87 page: None,
88 per_page: None,
89 };
90 let qs = serde_urlencoded::to_string(&query).expect("serialize");
91 assert!(qs.is_empty());
92 }
93}