[package]
name = "mockforge-bench"
version.workspace = true
edition = "2021"
authors = ["SaaSy Solutions LLC <ray.clanan@saasysolutionsllc.com>"]
description = "Load and performance testing for MockForge"
license = "MIT OR Apache-2.0"
repository = "https://github.com/SaaSy-Solutions/mockforge"
homepage = "https://mockforge.dev"
documentation = "https://docs.rs/mockforge"
readme = "README.md"
keywords = ["mock", "api", "testing", "benchmark", "load"]
categories = ["development-tools", "api-bindings"]

[dependencies]
# Core dependencies
mockforge-core = { version = "0.3.103", path = "../mockforge-core" }
mockforge-openapi = { version = "0.3.127", path = "../mockforge-openapi" }
mockforge-data = { version = "0.3.103", path = "../mockforge-data" }
mockforge-recorder = { version = "0.3.103", path = "../mockforge-recorder", optional = true }

# OpenAPI and spec parsing
openapiv3 = "2.0"

# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
base64.workspace = true

# Async runtime
tokio = { version = "1.50", features = ["full"] }

# HTTP client (for target validation + native chunked traffic generator).
# `stream` enables `Body::wrap_stream`, which is how chunked encoding gets
# exercised on the wire from the native chunked-bench.
reqwest = { version = "0.12", features = ["json", "multipart", "stream"] }
futures = { workspace = true }
async-stream = "0.3"

# Error handling
anyhow = "1.0"
thiserror = "1.0"

# CLI utilities
colored = "2.1"
indicatif = "0.17"

# Logging
tracing = "0.1"

# Template rendering
handlebars = "6.2"

# Regex for dynamic parameter parsing
regex = "1.11"

# Process execution
which = "7.0"

# File globbing for WAFBench directory patterns
glob = "0.3"

# URL encoding/decoding for WAFBench payload extraction
urlencoding = "2.1"

# URL parsing for base path extraction from OpenAPI servers
url = "2.5"

# OWASP API testing dependencies
uuid = { version = "1.23", features = ["v4"] }
chrono = { version = "0.4", features = ["serde"] }
atty = "0.2"

# JSON Schema validation for native conformance executor
jsonschema = { workspace = true }

# Temp directories for cloud_api run isolation
tempfile = "3.27"

[dev-dependencies]
mockito = "1.5"
proptest = "1.11"

[features]
default = []
recorder-integration = ["mockforge-recorder"]
