macro_rules! plugin_test {
(
test_name: $name:ident,
plugin: $plugin:ty,
context: $context:expr,
request: $request:expr,
config: $config:expr,
assert: $assert:expr
) => { ... };
}
Expand description
Quick test macro for plugin functions
ยงExample
use axum::http::{HeaderMap, Method, Uri};
use mockforge_plugin_sdk::{
mock_context, plugin_test, prelude::*, Result as PluginCoreResult,
};
use std::collections::HashMap;
#[derive(Default)]
struct TestPlugin;
#[async_trait]
impl AuthPlugin for TestPlugin {
fn capabilities(&self) -> PluginCapabilities {
PluginCapabilities::default()
}
async fn initialize(&self, _config: &AuthPluginConfig) -> PluginCoreResult<()> {
Ok(())
}
async fn authenticate(
&self,
_context: &PluginContext,
_request: &AuthRequest,
_config: &AuthPluginConfig,
) -> PluginCoreResult<PluginResult<AuthResponse>> {
let identity = UserIdentity::new("user");
let response = AuthResponse::success(identity, HashMap::new());
Ok(PluginResult::success(response, 0))
}
fn validate_config(&self, _config: &AuthPluginConfig) -> PluginCoreResult<()> {
Ok(())
}
fn supported_schemes(&self) -> Vec<String> {
vec!["basic".to_string()]
}
async fn cleanup(&self) -> PluginCoreResult<()> {
Ok(())
}
}
plugin_test! {
test_name: authenticate_valid_user,
plugin: TestPlugin,
context: mock_context! {
plugin_id: "test-plugin",
request_id: "req-123",
},
request: AuthRequest::from_axum(
Method::GET,
Uri::from_static("/login"),
HeaderMap::new(),
None
),
config: AuthPluginConfig::default(),
assert: |result| {
assert!(result.unwrap().is_success());
}
}