mockforge_sdk/
lib.rs

1//! # MockForge SDK
2//!
3//! Developer SDK for embedding MockForge mock servers directly in unit and integration tests.
4//!
5//! ## Features
6//!
7//! - **Start/Stop Mock Servers**: Programmatically control mock server lifecycle
8//! - **Stub Responses**: Define mock responses with a fluent API
9//! - **Offline Mode**: Works without network dependencies
10//! - **Multi-Protocol**: HTTP, WebSocket, gRPC, GraphQL support
11//! - **Ergonomic API**: Builder pattern for easy configuration
12//!
13//! ## Quick Start
14//!
15//! ```rust,no_run
16//! use mockforge_sdk::MockServer;
17//! use serde_json::json;
18//!
19//! #[tokio::test]
20//! async fn test_user_api() {
21//!     // Start a mock server
22//!     let mut server = MockServer::new()
23//!         .port(3000)
24//!         .start()
25//!         .await
26//!         .expect("Failed to start server");
27//!
28//!     // Stub a response
29//!     server
30//!         .stub_response("GET", "/api/users/{id}", json!({
31//!             "id": "{{uuid}}",
32//!             "name": "{{faker.name}}",
33//!             "email": "{{faker.email}}"
34//!         }))
35//!         .await
36//!         .expect("Failed to stub response");
37//!
38//!     // Make requests to the mock server
39//!     let client = reqwest::Client::new();
40//!     let response = client
41//!         .get("http://localhost:3000/api/users/123")
42//!         .send()
43//!         .await
44//!         .expect("Failed to make request");
45//!
46//!     assert_eq!(response.status(), 200);
47//!
48//!     // Stop the server
49//!     server.stop().await.expect("Failed to stop server");
50//! }
51//! ```
52
53pub mod admin;
54pub mod builder;
55pub mod error;
56pub mod ffi;
57pub mod server;
58pub mod stub;
59
60pub use admin::{
61    AdminClient, MockConfig as AdminMockConfig, MockConfigBuilder, MockList,
62    MockResponse as AdminMockResponse, ServerConfig as AdminServerConfig, ServerStats,
63};
64pub use builder::MockServerBuilder;
65pub use error::{Error, Result};
66pub use server::MockServer;
67pub use stub::{DynamicResponseFn, DynamicStub, RequestContext, ResponseStub, StubBuilder};
68
69// Re-export commonly used types from mockforge-core
70pub use mockforge_core::{
71    Config, FailureConfig, LatencyProfile, OpenApiSpec, ProxyConfig, ServerConfig,
72};