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};