rustls-cert-reloadable-resolver 0.7.1

A reloadable certificate resolver for rustls.
Documentation
use super::*;

struct DummyKeyReader;

impl rustls_cert_read::ReadKey for DummyKeyReader {
    type Error = std::convert::Infallible;

    async fn read_key(&self) -> Result<rustls::pki_types::PrivateKeyDer<'static>, Self::Error> {
        todo!()
    }
}

struct DummyCertsReader;

impl rustls_cert_read::ReadCerts for DummyCertsReader {
    type Error = std::convert::Infallible;

    async fn read_certs(
        &self,
    ) -> Result<Vec<rustls::pki_types::CertificateDer<'static>>, Self::Error> {
        todo!()
    }
}

fn fake_spawn(_f: impl core::future::Future<Output = ()> + 'static + Send) {}

#[test]
fn traits_satisfied() {
    let crypto_provider = rustls::crypto::aws_lc_rs::default_provider();

    let loader = CertifiedKeyLoader {
        key_provider: key_provider::Dyn(crypto_provider.key_provider),
        key_reader: DummyKeyReader,
        certs_reader: DummyCertsReader,
    };

    fake_spawn(async move {
        let resolver = ReloadableResolver::init(loader).await.unwrap();
        resolver.reload().await.unwrap()
    });
}

#[test]
fn with_file_reader() {
    let crypto_provider = rustls::crypto::aws_lc_rs::default_provider();

    let key_reader =
        rustls_cert_file_reader::FileReader::new("key", rustls_cert_file_reader::Format::DER);
    let certs_reader =
        rustls_cert_file_reader::FileReader::new("certs", rustls_cert_file_reader::Format::DER);

    let loader = CertifiedKeyLoader {
        key_provider: key_provider::Dyn(crypto_provider.key_provider),
        key_reader,
        certs_reader,
    };

    fake_spawn(async move {
        let resolver = ReloadableResolver::init(loader).await.unwrap();
        resolver.reload().await.unwrap()
    });
}