From e83c342a96aff1b1e8796d8a30a99ed4ec60f00f Mon Sep 17 00:00:00 2001 From: Cylae <13425054+Cylae@users.noreply.github.com> Date: Wed, 9 Sep 2026 23:46:46 +0000 Subject: [PATCH] test: expand boundary edge-case tests for input validation Add explicit edge-case and boundary contract unit tests in contract_input_validation.rs for service names (64 char boundary), usernames (32 char boundary), domain labels (63 char boundary), total domain length (253 char boundary), and whitespace trimming on port strings. --- .../tests/contract_input_validation.rs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/server_manager/tests/contract_input_validation.rs b/server_manager/tests/contract_input_validation.rs index 7b9da2d..facbbdb 100644 --- a/server_manager/tests/contract_input_validation.rs +++ b/server_manager/tests/contract_input_validation.rs @@ -121,3 +121,37 @@ fn test_validate_safe_path_extended_traversal() { assert!(validate_safe_path(Path::new("..")).is_err()); assert!(validate_safe_path(Path::new(".")).is_ok()); } + +#[test] +fn test_validate_input_edge_case_boundaries() { + // Service name exact 64 character boundary + let max_service = "a".repeat(64); + assert_eq!(validate_service_name(&max_service).unwrap(), max_service); + + // Username exact 32 character boundary + let max_user = format!("u{}", "a".repeat(31)); + assert_eq!(validate_username(&max_user).unwrap(), max_user); + + // Domain label exact 63 character boundary + let label63 = "a".repeat(63); + let domain63 = format!("{}.com", label63); + assert!(validate_domain(&domain63).is_ok()); + + // Domain label exceeding 63 characters (64 chars) + let label64 = "a".repeat(64); + let domain64 = format!("{}.com", label64); + assert!(validate_domain(&domain64).is_err()); + + // Domain exactly 253 characters + let label63 = "a".repeat(63); + let domain253 = format!("{}.{}.{}.{}", label63, label63, label63, "a".repeat(61)); + assert_eq!(domain253.len(), 253); + assert!(validate_domain(&domain253).is_ok()); + + // Domain exceeding 253 characters + let domain254 = format!("a.{}", domain253); + assert!(validate_domain(&domain254).is_err()); + + // Port string whitespace trimming + assert_eq!(validate_port_str(" 8080\t\n").unwrap_or_default(), 8080); +}