didcomm 0.4.1

DIDComm for Rust
Documentation
use async_trait::async_trait;
use std::cell::RefCell;
use std::sync::Mutex;

use crate::did::{DIDDoc, DIDResolver};

pub struct MockDidResolver {
    results: Mutex<RefCell<Vec<crate::error::Result<Option<DIDDoc>>>>>,
}

impl MockDidResolver {
    pub fn new(res: Vec<crate::error::Result<Option<DIDDoc>>>) -> Self {
        Self {
            results: Mutex::new(RefCell::new(res)),
        }
    }
}

#[cfg_attr(feature = "uniffi", async_trait)]
#[cfg_attr(not(feature = "uniffi"), async_trait(?Send))]
impl DIDResolver for MockDidResolver {
    async fn resolve(&self, _did: &str) -> crate::error::Result<Option<DIDDoc>> {
        self.results.lock().unwrap().borrow_mut().pop().unwrap()
    }
}