Files
telecom-platform/apps/charging-engine/tests/validation_tests.rs
T
nutcas3 4e4b13f3e8 refactor: Simplify validation parsing using let-chains in sync.rs and wrap unsafe env::set_var in tests
- Replace nested if-let statements with let-chain pattern for VmRSS memory parsing in /proc/self/status
- Replace nested if-let statements with let-chain pattern for Redis used_memory parsing
- Wrap std::env::set_var calls in unsafe blocks in validation_tests.rs for MAX_BYTES_LIMIT and MAX_AMOUNT_LIMIT
2026-05-01 00:43:54 +03:00

128 lines
3.5 KiB
Rust

use charging_engine::errors::{validate_bytes, validate_session_id, validate_amount, validate_ip, ChargingError};
#[test]
fn test_validate_bytes_zero() {
let result = validate_bytes(0);
assert!(result.is_err());
match result.unwrap_err() {
ChargingError::InvalidInput(msg) => assert!(msg.contains("cannot be zero")),
_ => panic!("Expected InvalidInput error"),
}
}
#[test]
fn test_validate_bytes_exceeds_limit() {
unsafe { std::env::set_var("MAX_BYTES_LIMIT", "1000000000000"); }
let result = validate_bytes(2_000_000_000_000); // 2TB
assert!(result.is_err());
match result.unwrap_err() {
ChargingError::InvalidInput(_) => (),
_ => panic!("Expected InvalidInput error"),
}
}
#[test]
fn test_validate_bytes_valid() {
let result = validate_bytes(1_000_000_000); // 1GB
assert!(result.is_ok());
}
#[test]
fn test_validate_session_id_empty() {
let result = validate_session_id("");
assert!(result.is_err());
match result.unwrap_err() {
ChargingError::InvalidInput(msg) => assert!(msg.contains("cannot be empty")),
_ => panic!("Expected InvalidInput error"),
}
}
#[test]
fn test_validate_session_id_too_long() {
let result = validate_session_id(&"a".repeat(65));
assert!(result.is_err());
match result.unwrap_err() {
ChargingError::InvalidInput(msg) => assert!(msg.contains("too long")),
_ => panic!("Expected InvalidInput error"),
}
}
#[test]
fn test_validate_session_id_valid() {
let result = validate_session_id("session-123");
assert!(result.is_ok());
}
#[test]
fn test_validate_amount_zero() {
let result = validate_amount(0.0);
assert!(result.is_err());
match result.unwrap_err() {
ChargingError::InvalidInput(msg) => assert!(msg.contains("must be positive")),
_ => panic!("Expected InvalidInput error"),
}
}
#[test]
fn test_validate_amount_negative() {
let result = validate_amount(-1.0);
assert!(result.is_err());
match result.unwrap_err() {
ChargingError::InvalidInput(msg) => assert!(msg.contains("must be positive")),
_ => panic!("Expected InvalidInput error"),
}
}
#[test]
fn test_validate_amount_exceeds_limit() {
unsafe { std::env::set_var("MAX_AMOUNT_LIMIT", "10000"); }
let result = validate_amount(20_000.0);
assert!(result.is_err());
match result.unwrap_err() {
ChargingError::InvalidInput(_) => (),
_ => panic!("Expected InvalidInput error"),
}
}
#[test]
fn test_validate_amount_valid() {
let result = validate_amount(100.0);
assert!(result.is_ok());
}
#[test]
fn test_validate_ip_empty() {
let result = validate_ip("");
assert!(result.is_err());
match result.unwrap_err() {
ChargingError::InvalidInput(msg) => assert!(msg.contains("cannot be empty")),
_ => panic!("Expected InvalidInput error"),
}
}
#[test]
fn test_validate_ip_invalid_format() {
let result = validate_ip("invalid");
assert!(result.is_err());
match result.unwrap_err() {
ChargingError::InvalidInput(msg) => assert!(msg.contains("Invalid IP address format")),
_ => panic!("Expected InvalidInput error"),
}
}
#[test]
fn test_validate_ip_zero_octet() {
let result = validate_ip("0.0.0.0");
assert!(result.is_err());
match result.unwrap_err() {
ChargingError::InvalidInput(msg) => assert!(msg.contains("cannot be 0.0.0.0")),
_ => panic!("Expected InvalidInput error"),
}
}
#[test]
fn test_validate_ip_valid() {
let result = validate_ip("192.168.1.1");
assert!(result.is_ok());
}