use camel_api::CamelError;
pub fn build_tls_config(
ca_cert_path: Option<&str>,
) -> Result<rumqttc::TlsConfiguration, CamelError> {
use rumqttc::TlsConfiguration;
if let Some(path) = ca_cert_path {
let ca = std::fs::read(path).map_err(|e| {
CamelError::Config(format!("mqtt tls: cannot read ca_cert {path}: {e}"))
})?;
Ok(TlsConfiguration::Simple {
ca,
alpn: None,
client_auth: None,
})
} else {
Ok(TlsConfiguration::default())
}
}
#[cfg(test)]
mod tests {
#[test]
#[cfg(feature = "tls")]
fn build_tls_config_with_no_ca_cert() {
let _ = rustls::crypto::ring::default_provider().install_default();
let result = super::build_tls_config(None);
assert!(result.is_ok());
}
#[test]
#[cfg(feature = "tls")]
fn build_tls_config_rejects_missing_ca_file() {
let result = super::build_tls_config(Some("/nonexistent/ca.pem"));
assert!(result.is_err());
}
}