use crank_observability::RequestId; use uuid::Version; #[test] fn preserves_valid_opaque_request_id() { let request_id = RequestId::resolve(Some("req_test-123/abc")); assert_eq!(request_id.as_str(), "req_test-123/abc"); } #[test] fn replaces_missing_and_invalid_values_with_uuid_v7() { for candidate in [ None, Some(""), Some("bad value"), Some(" leading"), Some("trailing "), Some("bad,value"), Some("bad;value"), Some("я"), ] { let request_id = RequestId::resolve(candidate); let parsed = uuid::Uuid::parse_str(request_id.as_str()).expect("generated UUID"); assert_eq!(parsed.get_version(), Some(Version::SortRand)); } } #[test] fn rejects_values_over_the_shared_limit() { let oversized = "x".repeat(RequestId::MAX_LEN + 1); let request_id = RequestId::resolve(Some(&oversized)); assert_ne!(request_id.as_str(), oversized); assert_eq!( uuid::Uuid::parse_str(request_id.as_str()) .expect("generated UUID") .get_version(), Some(Version::SortRand) ); }