Skip to main content

uptrakit_openapi_client/
settings_nats.rs

1use crate::Result;
2use crate::UptrakitClient;
3use crate::types_impl::settings_nats::{NatsSettingsResponse, UpdateNatsSettingsRequest};
4
5impl UptrakitClient {
6    /// Get the global NATS server URL settings.
7    pub async fn get_nats_settings(&self) -> Result<NatsSettingsResponse> {
8        self.get(crate::paths::settings_nats::BASE).await
9    }
10
11    /// Update the global NATS server URL settings.
12    ///
13    /// Changes take effect after the controller is restarted.
14    pub async fn update_nats_settings(
15        &self,
16        req: &UpdateNatsSettingsRequest,
17    ) -> Result<NatsSettingsResponse> {
18        self.put_json(crate::paths::settings_nats::BASE, req).await
19    }
20}
21
22#[cfg(test)]
23mod tests {
24    use crate::types_impl::settings_nats::UpdateNatsSettingsRequest;
25
26    #[test]
27    fn update_nats_request_with_url_serializes() {
28        let req = UpdateNatsSettingsRequest {
29            url: Some(serde_json::json!("nats://host:4222")),
30        };
31        let json = serde_json::to_value(&req).expect("serialize");
32        assert_eq!(json["url"], "nats://host:4222");
33    }
34
35    #[test]
36    fn update_nats_request_clear_url_serializes_null() {
37        let req = UpdateNatsSettingsRequest {
38            url: Some(serde_json::Value::Null),
39        };
40        let json = serde_json::to_value(&req).expect("serialize");
41        assert!(json["url"].is_null());
42    }
43
44    #[test]
45    fn update_nats_request_no_url_omits_field() {
46        let req = UpdateNatsSettingsRequest { url: None };
47        let json = serde_json::to_value(&req).expect("serialize");
48        assert!(json.get("url").is_none() || json["url"].is_null());
49    }
50}