diff --git a/Cargo.lock b/Cargo.lock index 95301be92..c7b441ee9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -936,7 +936,7 @@ dependencies = [ [[package]] name = "ramshared-agent" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "ramshared-broker", "serde", @@ -945,14 +945,14 @@ dependencies = [ [[package]] name = "ramshared-block" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "ramshared-vram", ] [[package]] name = "ramshared-broker" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "serde", "serde_json", @@ -960,7 +960,7 @@ dependencies = [ [[package]] name = "ramshared-cli" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "libc", "ramshared-cuda", @@ -974,7 +974,7 @@ dependencies = [ [[package]] name = "ramshared-config" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "serde", "serde_path_to_error", @@ -983,7 +983,7 @@ dependencies = [ [[package]] name = "ramshared-cuda" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "cuda-async", "cuda-core", @@ -993,22 +993,22 @@ dependencies = [ [[package]] name = "ramshared-dxg" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "libc", ] [[package]] name = "ramshared-integrity" -version = "0.14.1" # x-release-please-version +version = "0.14.1" [[package]] name = "ramshared-tier" -version = "0.14.1" # x-release-please-version +version = "0.14.1" [[package]] name = "ramshared-uring" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "io-uring", "libc", @@ -1016,11 +1016,11 @@ dependencies = [ [[package]] name = "ramshared-vram" -version = "0.14.1" # x-release-please-version +version = "0.14.1" [[package]] name = "ramshared-vulkan" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "ash", "ramshared-vram", @@ -1028,7 +1028,7 @@ dependencies = [ [[package]] name = "ramshared-winbroker" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "ramshared-broker", "serde", @@ -1041,7 +1041,7 @@ dependencies = [ [[package]] name = "ramshared-winsvc" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "base64", "ramshared-block", @@ -1059,7 +1059,7 @@ dependencies = [ [[package]] name = "ramshared-wsl2d" -version = "0.14.1" # x-release-please-version +version = "0.14.1" dependencies = [ "ramshared-block", "ramshared-broker", diff --git a/crates/ramshared-winsvc/src/config.rs b/crates/ramshared-winsvc/src/config.rs index 884d79470..a118b0215 100644 --- a/crates/ramshared-winsvc/src/config.rs +++ b/crates/ramshared-winsvc/src/config.rs @@ -1082,4 +1082,83 @@ volume_mount_path = "C:\\ProgramData\\RamShared\\mounts\\..\\secret""#, }) )); } + #[test] + fn validate_boundary_zero_capacity_fails() { + let mut c = valid_config(); + c.size_bytes = 0; + let e = c.validate().unwrap_err(); + assert!(matches!( + e, + ConfigError::Invalid { + field: "size_bytes", + .. + } + )); + } + + #[test] + fn test_from_toml_boundary_zero_capacity_fails() { + let bad = GOOD.replace("size_bytes = 536870912", "size_bytes = 0"); + assert!(matches!( + WinDriveConfig::from_toml(&bad), + Err(ConfigError::Invalid { + field: "size_bytes", + .. + }) + )); + } + + #[test] + fn validate_boundary_u64_max_capacity_fails() { + let mut c = valid_config(); + c.size_bytes = u64::MAX; + let e = c.validate().unwrap_err(); + assert!(matches!( + e, + ConfigError::Invalid { + field: "size_bytes", + .. + } + )); + } + + #[test] + fn test_from_toml_boundary_u64_max_capacity_fails() { + let bad = GOOD.replace( + "size_bytes = 536870912", + &format!("size_bytes = {}", u64::MAX), + ); + let err = WinDriveConfig::from_toml(&bad).unwrap_err(); + assert!(matches!( + err, + ConfigError::Invalid { + field: "size_bytes", + .. + } + )); + } + + #[test] + fn test_from_toml_boundary_negative_capacity_fails() { + let bad = GOOD.replace("size_bytes = 536870912", "size_bytes = -536870912"); + assert!(matches!( + WinDriveConfig::from_toml(&bad), + Err(ConfigError::Parse(_)) + )); + } + + #[test] + fn test_from_toml_boundary_negative_queue_depth_fails() { + let bad = GOOD.replace("queue_depth = 4", "queue_depth = -4"); + assert!(matches!( + WinDriveConfig::from_toml(&bad), + Err(ConfigError::Parse(_)) + )); + } + + #[test] + fn test_from_reader_boundary_non_utf8_fails() { + let e = WinDriveConfig::from_reader(&[0xff, 0xfe, 0xfd]).unwrap_err(); + assert!(matches!(e, ConfigError::Parse(_))); + } }