uptrakit_web_api_types/
settings.rs1use crate::registration::RegistrationMode;
2use serde::{Deserialize, Serialize};
3use uptrakit_shared_types::SecretString;
4
5#[derive(Serialize, Deserialize)]
6#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
7pub struct RegistrationSettingsResponse {
8 pub mode: RegistrationMode,
9 pub require_token_for_oidc: bool,
11}
12
13#[derive(Serialize, Deserialize)]
14#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
15pub struct UpdateRegistrationSettingsRequest {
16 pub mode: RegistrationMode,
17 pub token: Option<SecretString>,
19 pub require_token_for_oidc: Option<bool>,
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26
27 #[test]
28 fn registration_settings_response_round_trip() {
29 let resp = RegistrationSettingsResponse {
30 mode: RegistrationMode::Invite,
31 require_token_for_oidc: true,
32 };
33 let json = serde_json::to_string(&resp).expect("serialization should succeed");
34 let de: RegistrationSettingsResponse =
35 serde_json::from_str(&json).expect("deserialization should succeed");
36 assert_eq!(de.mode, RegistrationMode::Invite);
37 assert!(de.require_token_for_oidc);
38 }
39
40 #[test]
41 fn update_registration_settings_request_round_trip() {
42 let req = UpdateRegistrationSettingsRequest {
43 mode: RegistrationMode::Open,
44 token: Some(SecretString::new("invite-token")),
45 require_token_for_oidc: Some(false),
46 };
47 let json = serde_json::to_string(&req).expect("serialization should succeed");
48 let de: UpdateRegistrationSettingsRequest =
49 serde_json::from_str(&json).expect("deserialization should succeed");
50 assert_eq!(de.mode, RegistrationMode::Open);
51 assert_eq!(
52 de.token.as_ref().map(|s| s.expose_secret()),
53 Some("invite-token")
54 );
55 assert_eq!(de.require_token_for_oidc, Some(false));
56 }
57}