pub fn ensure_crypto_provider() {
static INSTALL: std::sync::Once = std::sync::Once::new();
INSTALL.call_once(|| {
let _ = rustls::crypto::ring::default_provider().install_default();
});
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn a_crypto_provider_is_installed_before_any_connection_is_opened() {
ensure_crypto_provider();
assert!(
rustls::crypto::CryptoProvider::get_default().is_some(),
"no default CryptoProvider; connect_async would panic"
);
}
#[test]
fn a_default_crypto_provider_is_available_to_connect() {
ensure_crypto_provider();
assert!(
rustls::crypto::CryptoProvider::get_default().is_some(),
"no process-default CryptoProvider: every WebSocket connect will panic"
);
}
}