pub struct MockHttpExecutor { /* private fields */ }Expand description
Mock HTTP executor for dry-run validation and testing.
This executor doesn’t make real HTTP calls. Instead, it:
- Records all API calls that would be made
- Returns configurable mock responses
- Enables dry-run validation showing what a script would do
§Example
ⓘ
use mcp_server_common::code_mode::executor::{MockHttpExecutor, PlanExecutor};
// Create a mock executor for dry-run
let mock = MockHttpExecutor::new_dry_run();
// Or with custom responses for testing
let mock = MockHttpExecutor::new_testing()
.with_response("/users", json!({"users": [{"id": 1, "name": "Test"}]}))
.with_response("/orders/*", json!({"orders": []}));
// Execute the plan
let executor = PlanExecutor::new(mock, config);
let result = executor.execute(plan).await?;
// Check what calls would be made
for call in mock.recorded_calls() {
println!("Would call: {} {}", call.method, call.path);
}Implementations§
Source§impl MockHttpExecutor
impl MockHttpExecutor
Sourcepub fn new_dry_run() -> Self
pub fn new_dry_run() -> Self
Create a new mock executor for dry-run mode.
Returns empty objects {} for all calls.
Sourcepub fn new_testing() -> Self
pub fn new_testing() -> Self
Create a new mock executor for testing mode.
Configure responses with with_response().
Sourcepub fn with_default_response(self, response: JsonValue) -> Self
pub fn with_default_response(self, response: JsonValue) -> Self
Set the default response for unmatched paths.
Sourcepub fn with_response(self, path_pattern: &str, response: JsonValue) -> Self
pub fn with_response(self, path_pattern: &str, response: JsonValue) -> Self
Sourcepub fn add_response(&self, path_pattern: &str, response: JsonValue)
pub fn add_response(&self, path_pattern: &str, response: JsonValue)
Add a mock response (non-builder version).
Sourcepub fn recorded_calls(&self) -> Vec<MockedCall>
pub fn recorded_calls(&self) -> Vec<MockedCall>
Get all recorded calls.
Sourcepub fn clear_calls(&self)
pub fn clear_calls(&self)
Clear all recorded calls.
Sourcepub fn call_count(&self) -> usize
pub fn call_count(&self) -> usize
Get the number of calls made.
Sourcepub fn was_called(&self, path: &str) -> bool
pub fn was_called(&self, path: &str) -> bool
Check if a specific path was called.
Sourcepub fn was_called_with_method(&self, method: &str, path: &str) -> bool
pub fn was_called_with_method(&self, method: &str, path: &str) -> bool
Check if a path was called with a specific method.
Trait Implementations§
Source§impl HttpExecutor for MockHttpExecutor
impl HttpExecutor for MockHttpExecutor
Source§fn execute_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
method: &'life1 str,
path: &'life2 str,
body: Option<JsonValue>,
) -> Pin<Box<dyn Future<Output = Result<JsonValue, ExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute_request<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
method: &'life1 str,
path: &'life2 str,
body: Option<JsonValue>,
) -> Pin<Box<dyn Future<Output = Result<JsonValue, ExecutionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute an HTTP request.
impl Send for MockHttpExecutor
impl Sync for MockHttpExecutor
Auto Trait Implementations§
impl !Freeze for MockHttpExecutor
impl RefUnwindSafe for MockHttpExecutor
impl Unpin for MockHttpExecutor
impl UnsafeUnpin for MockHttpExecutor
impl UnwindSafe for MockHttpExecutor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreCreates a shared type from an unshared type.