uptrakit_openapi_client/
oidc_providers.rs1use crate::Result;
2use crate::UptrakitClient;
3use crate::types_impl::oidc_providers::{
4 CreateOidcProviderRequest, OidcProviderResponse, UpdateOidcProviderRequest,
5};
6use uuid::Uuid;
7
8impl UptrakitClient {
9 pub async fn create_oidc_provider(
11 &self,
12 req: &CreateOidcProviderRequest,
13 ) -> Result<OidcProviderResponse> {
14 self.post_json(crate::paths::oidc_providers::BASE, req)
15 .await
16 }
17
18 pub async fn list_oidc_providers(&self) -> Result<Vec<OidcProviderResponse>> {
20 self.get(crate::paths::oidc_providers::BASE).await
21 }
22
23 pub async fn get_oidc_provider(&self, id: &Uuid) -> Result<OidcProviderResponse> {
25 self.get(&crate::paths::oidc_providers::by_id(id)).await
26 }
27
28 pub async fn update_oidc_provider(
30 &self,
31 id: &Uuid,
32 req: &UpdateOidcProviderRequest,
33 ) -> Result<OidcProviderResponse> {
34 self.put_json(&crate::paths::oidc_providers::by_id(id), req)
35 .await
36 }
37
38 pub async fn delete_oidc_provider(&self, id: &Uuid) -> Result<()> {
40 self.delete(&crate::paths::oidc_providers::by_id(id)).await
41 }
42
43 pub async fn activate_oidc_provider(&self, id: &Uuid) -> Result<OidcProviderResponse> {
45 self.post_empty(&crate::paths::oidc_providers::activate(id))
46 .await
47 }
48
49 pub async fn deactivate_oidc_provider(&self, id: &Uuid) -> Result<OidcProviderResponse> {
51 self.post_empty(&crate::paths::oidc_providers::deactivate(id))
52 .await
53 }
54}
55
56#[cfg(test)]
57mod tests {
58 use crate::types_impl::SecretString;
59 use crate::types_impl::oidc_providers::{CreateOidcProviderRequest, UpdateOidcProviderRequest};
60 use std::collections::HashMap;
61
62 #[test]
63 fn create_oidc_provider_request_serialization() {
64 let req = CreateOidcProviderRequest {
65 name: "Google".to_string(),
66 slug: "google".to_string(),
67 logo_url: None,
68 issuer_url: "https://accounts.google.com".to_string(),
69 client_id: "client-id-123".to_string(),
70 client_secret: SecretString::new("client-secret-456"),
71 scopes: "openid email profile groups".to_string(),
72 auto_create_users: true,
73 allow_private_network_issuers: Some(true),
74 role_claim_path: None,
75 role_mapping: HashMap::new(),
76 };
77 let json = serde_json::to_value(&req).expect("serialize");
78 assert_eq!(json["name"], "Google");
79 assert_eq!(json["slug"], "google");
80 assert_eq!(json["issuer_url"], "https://accounts.google.com");
81 assert_eq!(json["client_id"], "client-id-123");
82 assert_eq!(json["client_secret"], "client-secret-456");
83 assert_eq!(json["auto_create_users"], true);
84 }
85
86 #[test]
87 fn update_oidc_provider_request_serialization() {
88 let req = UpdateOidcProviderRequest {
89 name: Some("Google Workspace".to_string()),
90 slug: None,
91 logo_url: None,
92 issuer_url: None,
93 client_id: None,
94 client_secret: None,
95 scopes: None,
96 auto_create_users: Some(false),
97 allow_private_network_issuers: Some(false),
98 role_claim_path: None,
99 role_mapping: None,
100 };
101 let json = serde_json::to_value(&req).expect("serialize");
102 assert_eq!(json["name"], "Google Workspace");
103 assert_eq!(json["auto_create_users"], false);
104 }
105}