polywrap_tests_utils 0.1.11

Utilities for testing Polywrap Client
Documentation
use std::sync::{Arc, Mutex};

use polywrap_core::{
    error::Error,
    invoker::Invoker,
    resolution::{
        uri_resolution_context::{UriPackageOrWrapper, UriResolutionContext},
        uri_resolver::UriResolver,
    },
    uri::Uri,
};

use super::{MockWrapper, DifferentMockWrapper};

pub fn get_mock_uri_package_or_wrapper() -> UriPackageOrWrapper {
    UriPackageOrWrapper::Wrapper("wrap/mock".try_into().unwrap(), Arc::new(MockWrapper {}))
}
#[derive(Debug)]
pub struct MockResolver;

impl UriResolver for MockResolver {
    fn try_resolve_uri(
        &self,
        uri: &Uri,
        _: Arc<dyn Invoker>,
        _: Arc<Mutex<UriResolutionContext>>,
    ) -> Result<UriPackageOrWrapper, Error> {
        if uri.to_string() == *"wrap://wrap/mock" {
            Ok(get_mock_uri_package_or_wrapper())
        } else {
            Err(Error::ResolutionError("Not Found".to_string()))
        }
    }
}

pub fn get_mock_resolver() -> Arc<MockResolver> {
    Arc::new(MockResolver {})
}

pub fn get_different_mock_uri_package_or_wrapper() -> UriPackageOrWrapper {
    UriPackageOrWrapper::Wrapper(
        "wrap/different-mock".try_into().unwrap(),
        Arc::new(DifferentMockWrapper {}),
    )
}

#[derive(Debug)]
pub struct DifferentMockResolver;

impl UriResolver for DifferentMockResolver {
    fn try_resolve_uri(
        &self,
        uri: &Uri,
        _: Arc<dyn Invoker>,
        _: Arc<Mutex<UriResolutionContext>>,
    ) -> Result<UriPackageOrWrapper, Error> {
        if uri.to_string() == *"wrap://wrap/mock" {
            Ok(get_mock_uri_package_or_wrapper())
        } else {
            Err(Error::ResolutionError("Not Found".to_string()))
        }
    }
}

pub fn get_different_mock_resolver() -> Arc<DifferentMockResolver> {
    Arc::new(DifferentMockResolver {})
}