mssql_testing/lib.rs
1//! # mssql-testing
2//!
3//! Test infrastructure for SQL Server driver development.
4//!
5//! This crate provides utilities for integration testing against
6//! SQL Server instances, including testcontainers support and a mock TDS server.
7//!
8//! ## Features
9//!
10//! - SQL Server container management via testcontainers
11//! - Mock TDS server for unit tests (no Docker required)
12//! - Packet recording and replay for regression tests
13//! - Test fixture utilities
14//! - Connection helpers for tests
15//!
16//! ## Mock Server Example
17//!
18//! ```rust,ignore
19//! use mssql_testing::mock_server::{MockTdsServer, MockResponse, MockColumn, ScalarValue};
20//!
21//! #[tokio::test]
22//! async fn test_with_mock_server() {
23//! // Create a mock server with pre-configured responses
24//! let server = MockTdsServer::builder()
25//! .with_response(
26//! "SELECT * FROM users WHERE id = 1",
27//! MockResponse::rows(
28//! vec![MockColumn::int("id"), MockColumn::nvarchar("name", 50)],
29//! vec![vec![ScalarValue::Int(1), ScalarValue::String("Alice".into())]],
30//! ),
31//! )
32//! .build()
33//! .await
34//! .unwrap();
35//!
36//! // Connect your client to server.addr()
37//! let addr = server.addr();
38//! // ...
39//! }
40//! ```
41//!
42//! ## Container Example
43//!
44//! ```rust,ignore
45//! use mssql_testing::SqlServerContainer;
46//! use testcontainers::clients::Cli;
47//!
48//! #[tokio::test]
49//! async fn test_with_real_server() {
50//! let docker = Cli::default();
51//! let container = docker.run(SqlServerContainer::default());
52//! let port = container.get_host_port_ipv4(1433);
53//! // Connect to localhost:port...
54//! }
55//! ```
56
57#![warn(missing_docs)]
58#![deny(unsafe_code)]
59
60pub mod container;
61pub mod fixtures;
62pub mod mock_server;
63
64pub use container::SqlServerContainer;
65pub use mock_server::{
66 MockColumn, MockResponse, MockServerBuilder, MockServerConfig, MockServerError, MockTdsServer,
67 PacketRecorder, RecordedPacket, ScalarValue,
68};