use crate::Result;
use crate::UptrakitClient;
use crate::types_impl::pagination::PaginatedResponse;
use crate::types_impl::system_enrollment_tokens::{
CreateSystemEnrollmentTokenRequest, ListSystemEnrollmentTokensQuery,
SystemEnrollmentTokenCreatedResponse, SystemEnrollmentTokenResponse,
};
use uuid::Uuid;
impl UptrakitClient {
pub async fn create_system_enrollment_token(
&self,
req: &CreateSystemEnrollmentTokenRequest,
) -> Result<SystemEnrollmentTokenCreatedResponse> {
self.post_json(crate::paths::system_enrollment_tokens::BASE, req)
.await
}
pub async fn list_system_enrollment_tokens(
&self,
query: &ListSystemEnrollmentTokensQuery,
) -> Result<PaginatedResponse<SystemEnrollmentTokenResponse>> {
self.get_with_query(crate::paths::system_enrollment_tokens::BASE, query)
.await
}
pub async fn list_all_system_enrollment_tokens(
&self,
query: &ListSystemEnrollmentTokensQuery,
) -> Result<Vec<SystemEnrollmentTokenResponse>> {
self.fetch_all_pages(crate::paths::system_enrollment_tokens::BASE, query)
.await
}
pub async fn get_system_enrollment_token(
&self,
id: &Uuid,
) -> Result<SystemEnrollmentTokenResponse> {
self.get(&crate::paths::system_enrollment_tokens::by_id(id))
.await
}
pub async fn revoke_system_enrollment_token(&self, id: &Uuid) -> Result<()> {
self.delete(&crate::paths::system_enrollment_tokens::by_id(id))
.await
}
}
#[cfg(test)]
mod tests {
use crate::types_impl::system_enrollment_tokens::{
CreateSystemEnrollmentTokenRequest, ListSystemEnrollmentTokensQuery,
};
#[test]
fn create_request_serialization() {
let req = CreateSystemEnrollmentTokenRequest {
name: "MQTT Bridge Token".to_string(),
max_uses: Some(5),
expires_in_seconds: Some(86400),
};
let json = serde_json::to_string(&req).expect("serialize");
assert!(json.contains("MQTT Bridge Token"));
let parsed: CreateSystemEnrollmentTokenRequest =
serde_json::from_str(&json).expect("deserialize");
assert_eq!(parsed.name, "MQTT Bridge Token");
assert_eq!(parsed.max_uses, Some(5));
assert_eq!(parsed.expires_in_seconds, Some(86400));
}
#[test]
fn list_query_serialization_with_params() {
let query = ListSystemEnrollmentTokensQuery {
page: Some(2),
per_page: Some(25),
};
let qs = serde_urlencoded::to_string(&query).expect("serialize");
assert!(qs.contains("page=2"));
assert!(qs.contains("per_page=25"));
}
#[test]
fn list_query_serialization_empty() {
let query = ListSystemEnrollmentTokensQuery {
page: None,
per_page: None,
};
let qs = serde_urlencoded::to_string(&query).expect("serialize");
assert!(qs.is_empty());
}
}